Pular para o conteúdo principal

Chamada de função em Databricks

info

Visualização

Esse recurso está em Public Preview e é suportado em us-east1 e us-central1 para ambos os modelos Foundation APIs pay-per-tokens e provisionamento Taxa de transferência endpoint.

Este artigo descreve a chamada de função e como usá-la como parte de seu aplicativo generativo AI fluxo de trabalho. Databricks A Chamada de Função é compatível com OpenAI e só está disponível durante o atendimento ao modelo como parte do Foundation Model APIs e atendendo ao endpoint que atende a modelos externos.

O que é chamada de função?

A chamada de função fornece uma maneira de controlar a saída dos LLMs, para que eles gerem respostas estruturadas de forma mais confiável. Ao usar uma chamada de função, o senhor descreve as funções na chamada de API descrevendo os argumentos da 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:

  1. Chame o modelo usando a consulta enviada e um conjunto de funções definidas no parâmetro tools.
  2. 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 strings que adere ao seu esquema personalizado.
  3. Analise o strings em JSON em seu código e chame sua função com os argumentos fornecidos, se existirem.
  4. Chame o modelo novamente anexando a resposta estruturada como uma nova mensagem. A estrutura da resposta é definida pelas funções que você forneceu anteriormente em tools. A partir daqui, o modelo resume os resultados e envia esse resumo ao usuário.

Quando usar a chamada de função

Veja a seguir 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) ou current_weather(location: string, unit: 'celsius' | 'fahrenheit').
  • Definir e usar chamadas de API com base em linguagem natural. Como ouvir a declaração: “Quem são meus principais clientes?” e transformá-lo em uma chamada de API denominada get_customers(min_revenue: int, created_before: string, limit: int) e chamar essa API.

Para tarefas de inferência de lotes ou processamento de dados, como a conversão de dados não estruturados em dados estruturados. A Databricks recomenda o uso de saídas estruturadas.

Modelos compatíveis

A tabela a seguir lista os modelos suportados e qual modelo de recurso de atendimento torna cada modelo disponível.

important

O Meta Llama 3.3 está licenciado sob a Licença da comunidade LLAMA 3.3, Copyright © Meta Platforms, Inc. Todos os direitos reservados. compliance Os clientes são responsáveis por garantir o cumprimento dos termos desta licença e da Política de Uso Aceitável doLlama 3.3.

O Meta Llama 3.1 está licenciado sob a Licença da comunidade LLAMA 3.1, Copyright © Meta Platforms, Inc. Todos os direitos reservados. Os clientes são responsáveis por garantir o compliance com as licenças de modelo aplicáveis.

Modelo

Disponibilizado usando o modelo de recurso servindo

Notas

Meta-Llama-3.3-70B-Instruct

APIs do modelo de fundação

Com suporte para cargas de trabalho de pagamento por tokens e provisionamento.

Meta-Llama-3.1-8B-Instruct

APIs do modelo de fundação

Suportado apenas em cargas de trabalho de Taxa de transferência de provisionamento.

gpt-4o

Modelos externos

gpt-4o-2024-08-06

Modelos externos

gpt-4o-2024-05-13

Modelos externos

gpt-4o-mini

Modelos externos

Use a chamada de função

Para usar a chamada de função com seu aplicativo generativo AI, o senhor deve fornecer a função parameters e uma description.

O comportamento default para tool_choice é "auto". Isso permite que o modelo decida quais funções chamar e se deve chamá-las.

O senhor pode personalizar o comportamento do default dependendo do seu caso de uso. A seguir estão suas opções:

  • Conjunto 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.
  • Conjunto tool_choice: {"type": "function", "function": {"name": "my_function"}}. Nesse cenário, o modelo chama somente 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, um exemplo de turno único usando o SDK da OpenAI e seu parâmetro tools. Consulte a tarefa Chat para obter mais detalhes sobre a sintaxe.

important

Durante o Public Preview, a chamada de função no Databricks é otimizada para chamadas de função de turno único.

Python
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))

Esse parâmetro também suporta o Uso do computador (beta) para modelos fornecidos por Anthropic e Amazon Bedrock para Anthropic. Para ferramentas específicas do Anthropic, incluindo o computador Use, use a seguinte sintaxe para chamar a ferramenta:

Python

"tools": [
{
"type": # Specify tool type here,
"function": {
# Required parameters for the tool type
}
}
]

Esquema JSON

As APIs do Foundation Model 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 chamadas de função resulta em uma geração de JSON de chamada de função de maior qualidade. Para promover uma geração de maior qualidade, as APIs do Foundation Model suportam apenas um subconjunto de especificações de esquema JSON.

A seguinte chave de definição de chamada de função não é suportada:

  • Expressões regulares usando pattern.
  • Composição e validação complexas aninhadas ou de esquemas 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, as seguintes limitações se aplicam:

  • O número máximo de chaves especificado no esquema JSON é 16.

  • As APIs do Foundation Model não impõem restrições de comprimento ou tamanho para objetos e matrizes.

    • Isso inclui palavras-chave como maxProperties, minProperties e maxLength.
  • Os esquemas JSON muito aninhados resultam em uma geração de qualidade inferior. Se possível, tente achatar o esquema JSON para obter melhores resultados.

uso de tokens

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 o senhor usar, maior será o número de tokens de entrada.

Limitações

A seguir estão as limitações para a chamada de funções durante a Pré-visualização Pública:

  • As soluções atuais de chamada de função são otimizadas para chamadas de função de turno único. A chamada de função de várias voltas é suportada durante a versão prévia, mas está em desenvolvimento.
  • A chamada de função paralela não é suportada.
  • O número máximo de funções que podem ser definidas em tools é 32 funções.
  • Para o suporte ao provisionamento da Taxa de transferência, a chamada de função só é suportada no novo endpoint. O senhor não pode adicionar chamadas de função a um endpoint criado anteriormente.

Notebook exemplo

Consulte o Notebook a seguir para obter exemplos detalhados de chamadas de funções

Exemplo de chamada de função Notebook

Open notebook in new tab