OpenAI Llamada a funciones
Base de conocimientos de IAActualizado hace 6 meses Círculo de intercambio de inteligencia artificial 1.8K 00
OpenAI Función de llamada V2 Características
El objetivo principal de la llamada a funciones V2 es dotar a los modelos de OpenAI de la capacidad de interactuar con el mundo exterior, lo que se refleja en las dos funciones principales siguientes:
- Obtención de datos: implementación de llamadas a funciones de RAG.
- Esencialmente RAG (Retrieval Augmented Generation). La llamada a funciones proporciona un potente mecanismo para aplicar la generación de mejoras de recuperación (RAG). El modelo puede recuperar información actualizada y pertinente de fuentes de datos externas (por ejemplo, bases de conocimientos, API, etc.) llamando a funciones predefinidas e incorporándola a sus propias respuestas generadas.
- Abordar el desfase informativo y las limitaciones de conocimientos. El conocimiento tradicional de los grandes modelos lingüísticos es estático; la llamada a funciones salva esta distancia al permitir que los modelos accedan a información en tiempo real o a conocimientos específicos del dominio para generar respuestas más precisas y completas.
- Ejemplo de caso práctico.
- Consulta de información en tiempo real. Por ejemplo, obtener datos meteorológicos actuales, información de última hora, cotizaciones bursátiles, etc.
- Búsqueda en la base de conocimientos. Por ejemplo, consultar la base de conocimientos interna de la empresa, la documentación de los productos, las preguntas más frecuentes, etc., para ofrecer a los usuarios respuestas más profesionales.
- Integración de datos API. Por ejemplo, obtener información sobre productos, dinámica de vuelos, información sobre ubicación geográfica, etc. de API externas para enriquecer el contenido del diálogo.
- Implantación. Funciones definidas por el desarrollador para la recuperación de datos (p. ej.
get_weather
,search_knowledge_base
), y entools
proporcionada al modelo en los parámetros. Cuando el modelo determina que se necesita información externa, llama a estas funciones y obtiene los resultados, que se integran en la respuesta final.
- Pasar a la acción: automatización basada en modelos.
- Más allá del suministro de información, impulsar prácticas prácticas. La llamada a funciones no se limita a la recuperación de información, sino que va más allá al permitir que el modelo dirija sistemas externos para realizar operaciones reales, lo que posibilita escenarios de automatización y aplicación más profundos.
- Mejorar la utilidad y aplicación de los modelos. Esto permite a los modelos ser algo más que meros interlocutores: pueden ser asistentes inteligentes que ayuden a los usuarios en diversas tareas.
- Ejemplo de caso práctico.
- Flujos de trabajo automatizados. Por ejemplo, enviar formularios, crear eventos en el calendario, enviar correos electrónicos, reservar vuelos y hoteles, etc.
- Control de aplicaciones. Algunos ejemplos son la modificación del estado de una aplicación (UI/front-end o back-end), el control de dispositivos domésticos inteligentes, etc.
- Flujo de trabajo agentico. Por ejemplo, en función del contenido de la conversación, puede transmitirse a un sistema de atención al cliente más especializado o desencadenar procesos automatizados más complejos.
- Implantación. Funciones definidas por el desarrollador para realizar operaciones específicas (p. ej.
send_email
,create_calendar_event
), y entools
proporcionadas al modelo en los parámetros. El modelo puede llamar a estas funciones basándose en la intención del usuario y pasar los parámetros adecuados para desencadenar una acción.
Otras características clave de Function calling V2 (soporte para adquisición de datos y acciones de ejecución).
tools
Parámetros y esquema de funciones. Proporciona una forma estructurada de definir y gestionar las funciones a las que puede llamar un modelo, incluidos los nombres de las funciones, las descripciones y las definiciones de los parámetros, lo que garantiza que el modelo comprenda y llame a las funciones con precisión.- Modo estricto. Mejorar la fiabilidad y precisión de las llamadas a funciones para garantizar que el modelo produce llamadas a funciones que se ajustan estrictamente a patrones predefinidos.
- Elección de herramientas y control de llamadas a funciones paralelas. Proporciona un control más preciso, lo que permite a los desarrolladores adaptar el comportamiento de las funciones llamadas modelo a los escenarios de aplicación, como forzar las llamadas a funciones específicas o limitar el número de llamadas paralelas.
- Streaming. Mejorar la experiencia del usuario, puede mostrar el proceso de llenado de los parámetros de la función en tiempo real, para que los usuarios puedan entender el proceso de pensamiento del modelo de manera más intuitiva.
Resumen.
El valor fundamental de la función de llamada V2 es que al Adquisición de datos (aplicación del GAR) responder cantando ejecutar una acción Estas dos características amplían enormemente los límites de aplicación de los grandes modelos lingüísticos. No sólo permiten al modelo acceder a información externa y utilizarla para generar respuestas más inteligentes y prácticas, sino que también impulsan a los sistemas externos a realizar operaciones y alcanzar un mayor nivel de automatización, sentando las bases para construir aplicaciones de IA más potentes. La adquisición de datos como implementación de la GAR es una capacidad clave de la función de llamada V2 en aplicaciones intensivas en conocimiento.
Aquí está la OpenAI oficial llamada de función(Llamada a función) Nueva versión de la descripción que permite al modelo obtener datos y realizar operaciones.
llamada de función proporciona una forma potente y flexible para que los modelos de OpenAI interactúen con tu código o servicios externos, y tiene dos casos de uso principales:
Obtención de datos | Recuperar la información más reciente e integrarla en las respuestas del modelo (GAR). Esto es útil para buscar en la base de conocimientos y obtener datos específicos (por ejemplo, datos meteorológicos actuales) de la API. |
operación ejecutable | Realizar acciones como enviar formularios, llamar a APIs, modificar el estado de la aplicación (UI/front-end o back-end), o tomar acciones de flujo de trabajo proxy como entregar diálogos. |
Si sólo quiere hacerGeneración de modelos JSONConsulte la documentación de OpenAI sobre salidas estructuradas para asegurarse de que el modelo siempre genera salidas que coinciden con las salidas que usted proporciona. Esquema JSON La respuesta.
Obtener el tiempo
Ejemplo de llamada a una función utilizando la función get_weather
from openai import OpenAI
client = OpenAI()
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取给定位置的当前温度。",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市和国家,例如 Bogotá, Colombia"
}
},
"required": [
"location"
],
"additionalProperties": False
},
"strict": True
}
}]
completion = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "今天巴黎的天气怎么样?"}],
tools=tools
)
print(completion.choices[0].message.tool_calls)
exportaciones
[{
"id": "call_12345xyz",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"location\":\"Paris, France\"}"
}
}]
correo
Ejemplo de llamada a una función utilizando la función send_email
from openai import OpenAI
client = OpenAI()
tools = [{
"type": "function",
"function": {
"name": "send_email",
"description": "向给定的收件人发送包含主题和消息的电子邮件。",
"parameters": {
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "收件人的电子邮件地址。"
},
"subject": {
"type": "string",
"description": "电子邮件主题行。"
},
"body": {
"type": "string",
"description": "电子邮件消息正文。"
}
},
"required": [
"to",
"subject",
"body"
],
"additionalProperties": False
},
"strict": True
}
}]
completion = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "你能给 ilan@example.com 和 katia@example.com 发送邮件说“hi”吗?"}],
tools=tools
)
print(completion.choices[0].message.tool_calls)
exportaciones
[
{
"id": "call_9876abc",
"type": "function",
"function": {
"name": "send_email",
"arguments": "{\"to\":\"ilan@example.com\",\"subject\":\"Hello!\",\"body\":\"Just wanted to say hi\"}"
}
},
{
"id": "call_9876abc",
"type": "function",
"function": {
"name": "send_email",
"arguments": "{\"to\":\"katia@example.com\",\"subject\":\"Hello!\",\"body\":\"Just wanted to say hi\"}"
}
}
]
Buscar en la base de conocimientos
Ejemplo de llamada a una función utilizando la función search_knowledge_base
from openai import OpenAI
client = OpenAI()
tools = [{
"type": "function",
"function": {
"name": "search_knowledge_base",
"description": "查询知识库以检索关于某个主题的相关信息。",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "用户问题或搜索查询。"
},
"options": {
"type": "object",
"properties": {
"num_results": {
"type": "number",
"description": "要返回的排名靠前的结果数量。"
},
"domain_filter": {
"type": [
"string",
"null"
],
"description": "可选的域,用于缩小搜索范围(例如,“finance”,“medical”)。 如果不需要,则传递 null。"
},
"sort_by": {
"type": [
"string",
"null"
],
"enum": [
"relevance",
"date",
"popularity",
"alphabetical"
],
"description": "如何对结果进行排序。 如果不需要,则传递 null。"
}
},
"required": [
"num_results",
"domain_filter",
"sort_by"
],
"additionalProperties": False
}
},
"required": [
"query",
"options"
],
"additionalProperties": False
},
"strict": True
}
}]
completion = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "你能在 AI 知识库中找到关于 ChatGPT 的信息吗?"}],
tools=tools
)
print(completion.choices[0].message.tool_calls)
exportaciones
[{
"id": "call_4567xyz",
"type": "function",
"function": {
"name": "search_knowledge_base",
"arguments": "{\"query\":\"What is ChatGPT?\",\"options\":{\"num_results\":3,\"domain_filter\":null,\"sort_by\":\"relevance\"}}"
}
}]
esbozado
Puede hacer que el modelo OpenAI sea accesible dándole acceso a la carpeta herramientas para ampliar su funcionalidad.herramientas Puede adoptar dos formas:
llamada de función | Código definido por el desarrollador. |
Herramientas de alojamiento | Las herramientas creadas por OpenAI. (por ejemplo, búsqueda de archivos, intérprete de código) sólo están disponibles en la API de asistentes. |
Esta guía le explicará cómo sacar el máximo partido del llamada de función Dé al modelo acceso a sus propias funciones. Basándose en las indicaciones y mensajes del sistema, el modelo puede decidir llamar a estas funciones - elEn lugar de (o además de) generar texto o audio.
Después, hay que ejecutar el código de la función, devolver los resultados y el modelo los integrará en su respuesta final.

función de muestreo (cálculo)
Veamos cómo permitir que el modelo utilice el siguiente real definido obtener_tiempo Pasos de la función:
Ejemplo de función get_weather implementada en su código base
import requests
def get_weather(latitude, longitude):
response = requests.get(f"https://api.open-meteo.com/v1/forecast?latitude={latitude}&longitude={longitude}¤t=temperature_2m,wind_speed_10m&hourly=temperature_2m,relative_humidity_2m,wind_speed_10m")
data = response.json()
return data['current']['temperature_2m']
A diferencia del diagrama de flujo anterior, esta función requiere un latitud responder cantando longitudy no genérico ubicación Parámetros. (Sin embargo, nuestro modelo puede determinar automáticamente las coordenadas de muchos lugares).
paso de llamada de función
Utilice el modelo de llamada a función definido, junto con sus mensajes de sistema y de usuario.
Paso 1: Llamar al modelo con la herramienta get_weather definida
from openai import OpenAI
import json
client = OpenAI()
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取给定坐标的当前温度,单位为摄氏度。",
"parameters": {
"type": "object",
"properties": {
"latitude": {"type": "number"},
"longitude": {"type": "number"}
},
"required": ["latitude", "longitude"],
"additionalProperties": False
},
"strict": True
}
}]
messages = [{"role": "user", "content": "今天巴黎的天气怎么样?"}]
completion = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools,
)
Paso 2: El modelo decide a qué función llamar - el modelo devuelve el nombre y los parámetros de entrada.
completion.choices[0].message.tool_calls
[{
"id": "call_12345xyz",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"latitude\":48.8566,\"longitude\":2.3522}"
}
}]
Paso 3: Ejecutar el código de la función - analizar la respuesta del modelo y procesar la llamada a la función
Ejecutar la función get_weather
tool_call = completion.choices[0].message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
result = get_weather(args["latitude"], args["longitude"])
Paso 4: Proporcionar los resultados al modelo, para que éste pueda integrarlos en su respuesta final.
Proporcionar resultados y volver a llamar al modelo
messages.append(completion.choices[0].message) # append model's function call message
messages.append({ # append result message
"role": "tool",
"tool_call_id": tool_call.id,
"content": str(result)
})
completion_2 = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools,
)
Paso 4: Respuesta del modelo - Integrar los resultados en su salida.
completion_2.choices[0].message.content
"巴黎当前温度为 14°C (57.2°F)。"
Definición de funciones
puede añadirse a cada solicitud de API herramientas en el parámetro función El objeto se fija en forma de objeto.
Una función se define por su esquema, que informa al modelo de lo que hace la función y qué parámetros de entrada se esperan. Contiene los siguientes campos:
campo | descripciones |
---|---|
nombre | Nombre de la función (por ejemplo, get_weather) |
descripción | Información detallada sobre cuándo y cómo utilizar las funciones |
parámetros | Definir el esquema JSON de los parámetros de entrada de la función |
Modelos de funciones
{
"type": "function",
"function": {
"name": "get_weather",
"description": "检索给定位置的当前天气。",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市和国家,例如 Bogotá, Colombia"
},
"units": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
],
"description": "温度将以什么单位返回。"
}
},
"required": [
"location",
"units"
],
"additionalProperties": False
},
"strict": True
}
}
debido a parámetros definido por el esquema JSON, para que puedas aprovechar sus numerosas y ricas características, como tipos de propiedades, enumeraciones, descripciones, objetos anidados y objetos recursivos.
(Opcional) Llamadas a funciones con pydantic y zod
Aunque le animamos a que defina los modos de función directamente, nuestro SDK proporciona ayudantes que se pueden utilizar para convertir la función pydantic responder cantando zod Los objetos se convierten en patrones. No todos los pydantic responder cantando zod Se admiten funciones.
Definición de objetos para representar patrones de funciones
from openai import OpenAI, pydantic_function_tool
from pydantic import BaseModel, Field
client = OpenAI()
class GetWeather(BaseModel):
location: str = Field(
...,
description="城市和国家,例如 Bogotá, Colombia"
)
tools = [pydantic_function_tool(GetWeather)]
completion = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "今天巴黎的天气怎么样?"}],
tools=tools
)
print(completion.choices[0].message.tool_calls)
Buenas prácticas para definir funciones
Escriba nombres de funciones, descripciones de parámetros e instrucciones claras y detalladas.
- Describa claramente para qué se utiliza la función y cada parámetro (y su formato), y qué representa la salida.
- Utilice las sugerencias del sistema para describir cuándo (y cuándo no) utilizar cada función. Por lo general, dile al modelo exactamente qué hacer.
- Contiene ejemplos y casos extremos, especialmente a la hora de corregir fallos recurrentes. (Atención: Añadir ejemplos puede degradar el rendimiento del modelo de inferencia).
Aplicar las mejores prácticas de ingeniería de software.- Haga que las funciones sean fáciles de entender e intuitivas. (Principio de la menor sorpresa)
- Utilice enumeraciones y estructuras de objetos para que los estados no válidos no puedan representarse. (Por ejemplo.toggle_light(on: bool, off: bool) (Se admiten llamadas no válidas)
- Pasa la prueba del interno. ¿Puede el interno/humano utilizar la función correctamente sólo con lo que le has dado al modelo? (Si no, ¿qué preguntas te harían? Añade la respuesta a la pregunta).
Minimizar la carga del modelo y utilizar código siempre que sea posible.
- No deje que el modelo rellene parámetros que ya conoce. Por ejemplo, si ya ha obtenido el menú basado en el anterior orden_idSi no desea establecer el orden_id Parámetros - en lugar de establecer parámetros submit_refund()y pasar el código orden_id.
- Fusionar funciones que siempre se llaman secuencialmente. Por ejemplo, si siempre llama a las funciones en query_location() seguido de una llamada a marcar_localización()simplemente traslada la lógica de etiquetado a la llamada a la función de consulta.Para una mayor precisión, reduzca el número de funciones.
- Evalúe su rendimiento utilizando un número diferente de funciones.
- El objetivo es tener menos de 20 funciones al mismo tiempo, pero esto es sólo una recomendación suave.
Aprovechamiento de los recursos de OpenAI.
- existe Parque infantil Generación e iteración de patrones de funciones en
- Considere la posibilidad de realizar ajustes para mejorar la precisión de las llamadas a funciones para un gran número de funciones o tareas difíciles.
Uso de fichas
En el nivel inferior, las funciones se inyectan en los mensajes del sistema en la sintaxis que el modelo ha sido entrenado para utilizar. Esto significa que las funciones cuentan para las restricciones contextuales del modelo y se utilizan como entradas Ficha Cargos. Si experimenta un límite de fichas, le recomendamos que limite el número de funciones o la longitud de la descripción que proporciona para los argumentos de la función.
Si tiene muchas funciones definidas en la especificación de su herramienta, también puede utilizar el ajuste fino para reducir el número de tokens utilizados.
Gestión de llamadas a funciones
Cuando un modelo llama a una función, debe ejecutarla y devolver el resultado. Dado que la respuesta del modelo puede contener cero, una o más llamadas, la mejor práctica es asumir que hay múltiples llamadas.
La respuesta contiene un llamadas_herramienta cada una de las cuales tiene un id(que se utilizará más adelante para enviar los resultados de la función) y otro que contiene el archivo nombre y codificado en JSON argumentos (utilizado como expresión nominal) función.
Ejemplo de respuesta con múltiples llamadas a funciones
[
{
"id": "call_12345xyz",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"location\":\"Paris, France\"}"
}
},
{
"id": "call_67890abc",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"location\":\"Bogotá, Colombia\"}"
}
},
{
"id": "call_99999def",
"type": "function",
"function": {
"name": "send_email",
"arguments": "{\"to\":\"bob@email.com\",\"body\":\"Hi bob\"}"
}
}
]
Ejecuta la llamada a la función y añade el resultado
for tool_call in completion.choices[0].message.tool_calls:
name = tool_call.function.name
args = json.loads(tool_call.function.arguments)
result = call_function(name, args)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": result
})
En el ejemplo anterior, tenemos una hipotética call_function para enrutar cada llamada. Esta es una posible implementación:
Ejecución de llamadas a funciones y adición de resultados
def call_function(name, args):
if name == "get_weather":
return get_weather(**args)
if name == "send_email":
return send_email(**args)
Formato de los resultados
El resultado debe ser una cadena, pero el formato depende de usted (JSON, código de error, texto sin formato, etc.). El modelo interpretará la cadena según sea necesario.
Si su función no tiene valor de retorno (por ejemplo enviar_email), simplemente devuelve una cadena para indicar el éxito o el fracaso. (Por ejemplo "éxito")
Integrar los resultados en las respuestas
Adjunte los resultados a su mensajes Después, puede enviarlos de nuevo al modelo para que dé una respuesta final.
Enviar los resultados al modelo
completion = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools,
)
respuesta final
"巴黎大约 15°C,Bogotá 大约 18°C,并且我已经向 Bob 发送了那封邮件。"
Configuraciones adicionales
Selección de herramientas
Por defecto, el modelo determinará cuándo y cuántas herramientas utilizar. Puede utilizar el elección_herramienta impone un comportamiento específico.
- Auto: (por defecto (ajuste)) llama a cero, una o más funciones. elección_herramienta: "auto"
- Requerido: Llamar a una o más funciones. tool_choice: "requerido"
- Función forzada: Llama exactamente a una función específica. tool_choice: {"type": "function", "function": {"name": "get_weather"}}

También puede ajustar el elección_herramienta ajustado a "ninguno"para simular el comportamiento de la función no pasante.
llamada a función paralela
El modelo puede optar por llamar a varias funciones en una sola ronda. Puede hacerlo estableciendo el parámetro parallel_tool_calls ajustado a falso para evitarlo, lo que garantizará que se llame exactamente a cero o a una herramienta.
Atención: Actualmente, si un modelo llama a más de una función en una ronda, el modev estricto desactiva estas llamadas.
modelo estricto
comandante en jefe (militar) estricto ajustado a verdadero se asegurará de que las llamadas a funciones se adhieran de forma fiable al patrón de funciones, en lugar de hacerlo lo mejor posible. Recomendamos activar siempre el modo estricto.
En la parte inferior, el modo estricto se implementa utilizando nuestra función de salidas estructuradas, introduciendo así varios requisitos:
- con respecto a parámetros para cada objeto delpropiedadesadicionales debe ajustarse a falso.
- Todos los campos de las propiedades deben etiquetarse como obligatorio.
Para ello, añada la etiqueta null actuar como tipo para indicar campos opcionales (véase el ejemplo siguiente).
Activar modo estricto
{
"type": "function",
"function": {
"name": "get_weather",
"description": "检索给定位置的当前天气。",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市和国家,例如 Bogotá, Colombia"
},
"units": {
"type": ["string", "null"],
"enum": ["celsius", "fahrenheit"],
"description": "温度将以什么单位返回。"
}
},
"required": ["location", "units"],
"additionalProperties": False
}
}
}
Desactivar el modo estricto
{
"type": "function",
"function": {
"name": "get_weather",
"description": "检索给定位置的当前天气。",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市和国家,例如 Bogotá, Colombia"
},
"units": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "温度将以什么单位返回。"
}
},
"required": ["location"],
}
}
}
Todos los patrones generados en el patio de recreo tienen activado el modo estricto.
Aunque le recomendamos que active el modo estricto, tiene algunas limitaciones:
- Algunas características del esquema JSON no son compatibles. (Consulte los esquemas compatibles).
- Los patrones se someten a un procesamiento adicional en la primera solicitud (y luego se almacenan en caché). Si el patrón varía de una solicitud a otra, puede aumentar la latencia.
- Los patrones se almacenan en caché por motivos de rendimiento y no cumplen los requisitos para la retención de datos cero.
streaming
El streaming puede utilizarse para mostrar el progreso, mostrando las funciones que se llaman a medida que el modelo rellena sus parámetros, o incluso mostrando los parámetros en tiempo real.
La transmisión de una llamada a una función es muy similar a la transmisión de una respuesta normal: usted podría flujo ajustado a verdadero y obtener los datos con delta Bloque de objetos.
Llamadas a funciones de streaming
from openai import OpenAI
client = OpenAI()
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取给定位置的当前温度。",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市和国家,例如 Bogotá, Colombia"
}
},
"required": ["location"],
"additionalProperties": False
},
"strict": True
}
}]
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "今天巴黎的天气怎么样?"}],
tools=tools,
stream=True
)
for chunk in stream:
delta = chunk.choices[0].delta
print(delta.tool_calls)
Salida delta.tool_calls
[{"index": 0, "id": "call_DdmO9pD3xa9XTPNJ32zg2hcA", "function": {"arguments": "", "name": "get_weather"}, "type": "function"}]
[{"index": 0, "id": null, "function": {"arguments": "{\"", "name": null}, "type": null}]
[{"index": 0, "id": null, "function": {"arguments": "location", "name": null}, "type": null}]
[{"index": 0, "id": null, "function": {"arguments": "\":\"", "name": null}, "type": null}]
[{"index": 0, "id": null, "function": {"arguments": "Paris", "name": null}, "type": null}]
[{"index": 0, "id": null, "function": {"arguments": ",", "name": null}, "type": null}]
[{"index": 0, "id": null, "function": {"arguments": " France", "name": null}, "type": null}]
[{"index": 0, "id": null, "function": {"arguments": "\"}", "name": null}, "type": null}]
null
Sin embargo, en lugar de agregar bloques en un único contenido sino que agrega los bloques en la cadena codificada argumentos Objeto JSON.
Cuando el modelo llama a una o varias funciones, cada una de las delta (utilizado como expresión nominal) llamadas_herramienta se rellenarán los campos. Cada llamada_de_herramienta Contiene los siguientes campos:
campo | descripciones |
---|---|
índice | Identifica la llamada a la función correspondiente a delta |
id | ID de llamada de herramienta. |
función | Delta de llamada a función (nombre y argumentos) |
tipo | tipo de tool_call (siempre función para llamadas a funciones) |
Muchos de estos campos sólo están disponibles en la primera de cada llamada a la herramienta delta Establecer, por ejemplo idynombre.función responder cantando tipo.
A continuación se muestra un fragmento de código que demuestra cómo se utiliza la función delta Agregado al final llamadas_herramienta en el objeto.
Herramienta de acumulación_call delta
final_tool_calls = {}
for chunk in stream:
for tool_call in chunk.choices[0].delta.tool_calls or []:
index = tool_call.index
if index not in final_tool_calls:
final_tool_calls[index] = tool_call
final_tool_calls[index].function.arguments += tool_call.function.arguments
Acumulado final_tool_calls[0]
{
"index": 0,
"id": "call_RzfkBpJgzeR0S242qfvjadNe",
"function": {
"name": "get_weather",
"arguments": "{\"location\":\"Paris, France\"}"
}
}
© declaración de copyright
El artículo está protegido por derechos de autor y no debe reproducirse sin autorización.
Artículos relacionados
Sin comentarios...