Chamada de função no Azure Databricks
Importante
Este recurso está no do Public Preview e é suportado em:
- APIs de Modelos Fundamentais pagas por token
- Taxa de transferência provisionada de APIs do Modelo de Base
- Servindo endpoints que atendem modelos externos
Este artigo descreve a chamada de função e como usá-la como parte de seus fluxos de trabalho de aplicativos de IA generativos. O Databricks Function Calling é compatível com OpenAI e só está disponível durante a disponibilização do modelo como parte das APIs do Modelo de Fundação e dos endpoints de serviço que disponibilizam modelos externos .
O que é chamada de função?
O uso de chamadas de função permite que você controle a saída dos LLMs, garantindo que gerem respostas estruturadas de forma mais confiável. Ao usar uma chamada de função, você descreve funções na chamada de API descrevendo os argumentos de função usando um esquema JSON. O LLM em si não chama essas funções, mas cria um objeto JSON que os usuários podem usar para chamar as funções em seu código.
Para a chamada de função no Databricks, a sequência básica de etapas é a seguinte:
- Chame o modelo usando a consulta enviada e um conjunto de funções definidas no parâmetro
tools
. - O modelo decide se deve ou não chamar as funções definidas. Quando a função é chamada, o conteúdo é um objeto JSON de cadeias de caracteres que adere ao seu esquema personalizado.
- Analise as cadeias de caracteres em JSON em seu código e chame sua função com os argumentos fornecidos, se eles existirem.
- Chame o modelo novamente anexando a resposta estruturada como uma nova mensagem. A estrutura da resposta é definida pelas funções fornecidas anteriormente em
tools
. A partir daqui, o modelo resume os resultados e envia esse resumo para o usuário.
Quando usar a chamada de função
A seguir estão exemplos de casos de uso para chamada de função:
- Crie assistentes que possam responder a perguntas chamando outras APIs. Por exemplo, você pode definir funções como
send_email(to: string, body: string)
oucurrent_weather(location: string, unit: 'celsius' | 'fahrenheit')
. - Defina e use chamadas de API com base em linguagem natural. Como pegar a declaração: "Quem são meus principais clientes?" e transformar isso em uma chamada de API com o nome
get_customers(min_revenue: int, created_before: string, limit: int)
e chamar essa API.
Para inferência em lote ou tarefas de processamento de dados, como converter dados não estruturados em dados estruturados. O Databricks recomenda o uso de saídas estruturadas.
Modelos suportados
A tabela a seguir lista os modelos suportados e qual característica de serviço de modelo disponibiliza cada modelo.
- Para modelos disponibilizados por APIs de Modelo de Fundação, consulte Limites de APIs de Modelo de Base para disponibilidade de região.
- Para modelos disponibilizados por modelos externos, consulte Disponibilidade de região para disponibilidade de região.
Importante
A partir de 11 de dezembro de 2024, o Meta-Llama-3.3-70B-Instruct substitui o suporte para Meta-Llama-3.1-70B-Instruct nos endpoints de pagamento por token das APIs do Foundation Model.
Importante
Meta Llama 3.3 está licenciado sob a LLAMA 3.3 Community License, Copyright © Meta Platforms, Inc. Todos os direitos reservados. Os clientes são responsáveis por garantir a sua conformidade com os termos desta licença e com a Política de Utilização Aceitável Llama 3.3.
Meta Llama 3.1 é licenciado sob a LLAMA 3.1 Community License, Copyright © Meta Platforms, Inc. Todos os direitos reservados. Os clientes são responsáveis por garantir a conformidade com as licenças de modelo aplicáveis.
Modelo | Disponibilizado usando o recurso de serviço de modelo | Notas |
---|---|---|
Meta-Llama-3.3-70B-Instruct | APIs do modelo de base | Suportado em cargas de trabalho de pagamento por token e taxa de transferência provisionada. |
Meta-Llama-3.1-405B-Instruir | APIs do modelo de base | Suportado em cargas de trabalho de pagamento por token e taxa de transferência provisionada. |
Meta-Llama-3.1-8B-Instruir | APIs do modelo de base | Suportado apenas em cargas de trabalho de taxa de transferência provisionadas. |
GPT-4O | Modelos externos | |
GPT-4O-2024-08-06 | Modelos externos | |
GPT-4O-2024-05-13 | Modelos externos | |
GPT-4O-Mini | Modelos externos | |
claude-3-5-soneto-mais recente | Modelos externos | Provedor de modelo antrópico |
claude-3-5-haiku-mais-recentes | Modelos externos | Provedor de modelo antrópico |
claude 3.5 opus mais recente | Modelos externos | Provedor de modelo antrópico |
claude-3-5-soneto-20241022 | Modelos externos | Provedor de modelo antrópico. Este modelo suporta chamadas de ferramentas usando uso do computador (beta). |
claude-3-5-haiku-20241022 | Modelos externos | Provedor de modelo antrópico |
claude-3-5-soneto-20240620 | Modelos externos | Provedor de modelo antrópico |
claude-3-haiku-20240307 | Modelos externos | Provedor de modelo antrópico |
claude-3-opus-20240229 | Modelos externos | Provedor de modelo antrópico |
claude-3-soneto-20240229 | Modelos externos | Provedor de modelo antrópico |
claude-3-5-soneto-20241022-v2:0 | Modelos externos | Fornecedor de modelos antrópicos Bedrock. Este modelo suporta chamadas de ferramentas usando Uso do Computador (beta). |
claude-3-5-haiku-20241022-v1:0 | Modelos externos | Fornecedor de modelos antrópicos Bedrock |
claude-3-5-soneto-20240620-v1:0 | Modelos externos | Fornecedor de modelos antrópicos Bedrock |
claude-3-soneto-20240229-v1:0 | Modelos externos | Fornecedor de modelos antrópicos Bedrock |
claude-3-opus-20240229-v1:0 | Modelos externos | Fornecedor de modelos antrópicos Bedrock |
Usar chamada de função
Para usar a chamada de função com seu aplicativo de IA generativa, você deve fornecer função parameters
e um description
arquivo .
O comportamento padrão para tool_choice
é "auto"
. Isso permite que o modelo decida quais funções chamar e se deseja chamá-las.
Você pode personalizar o comportamento padrão dependendo do seu caso de uso. As suas opções são as seguintes:
- Defina
tool_choice: "required"
. Nesse cenário, o modelo sempre chama uma ou mais funções. O modelo seleciona qual função ou funções chamar. - Defina
tool_choice: {"type": "function", "function": {"name": "my_function"}}
. Nesse cenário, o modelo chama apenas uma função específica. - Defina
tool_choice: "none"
para desativar a chamada de função e fazer com que o modelo gere apenas uma mensagem voltada para o usuário.
A seguir está um exemplo de turno único usando o OpenAI SDK e seu tools
parâmetro. Consulte Tarefa de bate-papo para obter detalhes adicionais sobre a sintaxe.
Importante
Durante a Visualização Pública, a chamada de função no Databricks é otimizada para chamadas de função de turno único.
import os
import json
from openai import OpenAI
DATABRICKS_TOKEN = os.environ.get('YOUR_DATABRICKS_TOKEN')
DATABRICKS_BASE_URL = os.environ.get('YOUR_DATABRICKS_BASE_URL')
client = OpenAI(
api_key=DATABRICKS_TOKEN,
base_url=DATABRICKS_BASE_URL
)
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
]
}
}
}
}
}
]
messages = [{"role": "user", "content": "What is the current temperature of Chicago?"}]
response = client.chat.completions.create(
model="databricks-meta-llama-3-3-70b-instruct",
messages=messages,
tools=tools,
tool_choice="auto",
)
print(json.dumps(response.choices[0].message.model_dump()['tool_calls'], indent=2))
Este parâmetro também suporta de uso do computador (beta) para modelos fornecidos pela Anthropic e Amazon Bedrock for Anthropic. Para ferramentas específicas do Anthropic, incluindo Uso do Computador, use a seguinte sintaxe para chamar sua ferramenta:
"tools": [
{
"type": # Specify tool type here,
"function": {
# Required parameters for the tool type
}
}
]
Esquema JSON
As APIs do Modelo de Base suportam amplamente as definições de função aceitas pela OpenAI. No entanto, o uso de um esquema JSON mais simples para definições de chamada de função resulta na geração JSON de chamada de função de maior qualidade. Para promover a geração de maior qualidade, as APIs do Foundation Model suportam apenas um subconjunto de especificações de esquema JSON.
As seguintes teclas de definição de chamada de função não são suportadas:
- Expressões regulares usando
pattern
. - Composição e validação aninhadas complexas ou de esquema usando:
anyOf
,oneOf
,allOf
,prefixItems
ou$ref
. - Listas de tipos, exceto no caso especial de
[type, “null”]
em que um tipo na lista é um tipo JSON válido e o outro é"null"
Além disso, aplicam-se as seguintes limitações:
- O número máximo de chaves especificado no esquema JSON é
16
. - As APIs do Modelo de Base não impõem restrições de comprimento ou tamanho para objetos e matrizes.
- Isso inclui palavras-chave como
maxProperties
,minProperties
emaxLength
.
- Isso inclui palavras-chave como
- Esquemas JSON fortemente aninhados resultam em geração de qualidade inferior. Se possível, tente nivelar o esquema JSON para obter melhores resultados.
Uso de token
A injeção imediata e outras técnicas são usadas para melhorar a qualidade das chamadas de ferramentas. Isso afeta o número de tokens de entrada e saída consumidos pelo modelo, o que, por sua vez, resulta em implicações de faturamento. Quanto mais ferramentas você usar, mais seus tokens de entrada aumentarão.
Limitações
A seguir estão as limitações para chamadas de função durante a Visualização Pública:
- A solução atual de chamada de função é otimizada para chamadas de função de turno único. A chamada de função multiturno é suportada durante a visualização, mas está em desenvolvimento.
- Não há suporte para chamadas de função paralela.
- O número máximo de funções que podem ser definidas é
tools
de 32 funções. - Para suporte de taxa de transferência provisionada, a chamada de função só é suportada em novos pontos de extremidade. Não é possível adicionar chamada de função a pontos de extremidade criados anteriormente.
Exemplo de bloco de notas
Consulte o bloco de anotações a seguir para obter exemplos detalhados de chamada de função