Custom Tool
Last updated
Last updated
Mira cómo usar custom tools
Las funciones generalmente toman datos de entrada estructurados. Digamos que quieres que el LLM pueda llamar a la API de Airtable Create Record API, los parámetros del body tienen que estar estructurados de una manera específica. Por ejemplo:
Idealmente, queremos que el LLM devuelva datos estructurados adecuadamente como esto:
Así podemos extraer el valor y analizarlo en el body necesario para la API. Sin embargo, instruir al LLM para que genere el patrón exacto es difícil.
Con los nuevos modelos de OpenAI Function Calling, ahora es posible. gpt-4-0613
y gpt-3.5-turbo-0613
están específicamente entrenados para devolver datos estructurados. El modelo elegirá de manera inteligente generar un objeto JSON que contenga los argumentos para llamar a esas funciones.
Objetivo: Hacer que el agent obtenga automáticamente el movimiento del precio de las acciones, recupere noticias relacionadas con las acciones y agregue un nuevo registro a Airtable.
Empecemos🚀
Necesitamos 3 tools para lograr el objetivo:
Get Stock Price Movement
Get Stock News
Add Airtable Record
Crea una nueva Tool con los siguientes detalles (puedes cambiarlos como desees):
Name: get_stock_movers
Description: Get the stocks that has biggest price/volume moves, e.g. actives, gainers, losers, etc.
La descripción es una parte importante ya que ChatGPT se basa en esto para decidir cuándo usar esta tool.
JavaScript Function: Vamos a usar la API Morning Star /market/v2/get-movers
para obtener datos. Primero debes hacer clic en Subscribe to Test si aún no lo has hecho, luego copia el código y pégalo en JavaScript Function.
Agrega const fetch = require('node-fetch');
al principio para importar la librería. Puedes importar cualquier módulo integrado de NodeJS y librerías externas.
Retorna el result
al final.
El código final debería ser:
Ahora puedes guardarlo.
Crea una nueva Tool con los siguientes detalles (puedes cambiarlos como desees):
Name: get_stock_news
Description: Get latest news for a stock
Input Schema:
Property: performanceId
Type: string
Description: id of the stock, which is referred as performanceID in the API
Required: true
Input Schema le indica al LLM qué debe devolver como objeto JSON. En este caso, esperamos un objeto JSON como el siguiente:
JavaScript Function: Vamos a usar la API Morning Star /news/list
para obtener los datos. Primero debes hacer clic en Subscribe to Test si aún no lo has hecho, luego copia el código y pégalo en JavaScript Function.
Agrega const fetch = require('node-fetch');
al principio para importar la librería. Puedes importar cualquier módulo integrado de NodeJS y librerías externas.
Retorna el result
al final.
Luego, reemplaza el parámetro performanceId codificado en la URL: 0P0000OQN8
por la variable de propiedad especificada en Input Schema: $performanceId
Puedes usar cualquier propiedad especificada en Input Schema como variables en la JavaScript Function agregando el prefijo $
al principio del nombre de la variable.
Código final:
Ahora puedes guardarlo.
Crea una nueva Tool con los siguientes detalles (puedes cambiarlos como desees):
Name: add_airtable
Description: Add the stock, news summary & price move to Airtable
Input Schema:
Property: stock
Type: string
Description: stock ticker
Required: true
Property: move
Type: string
Description: price move in %
Required: true
Property: news_summary
Type: string
Description: news summary of the stock
Required: true
ChatGPT devolverá un objeto JSON como este:
JavaScript Function: Vamos a usar Airtable Create Record API para crear un nuevo registro en una tabla existente. Puedes encontrar el tableId y baseId aquí. También necesitarás crear un token de acceso personal, encuentra cómo hacerlo aquí.
El código final debería verse como se muestra a continuación. Observa cómo pasamos $stock
, $move
y $news_summary
como variables:
Ahora puedes guardarlo.
Deberías ver 3 tools creadas:
Puedes usar la plantilla OpenAI Function Agent del marketplace, y reemplazar las tools con Custom Tool. Selecciona la tool que has creado.
Nota: OpenAI Function Agent solo soporta modelos 0613 actualmente.
Guarda el chatflow y comienza a probarlo. Para empezar, puedes intentar preguntar:
¿Qué acción tiene el mayor movimiento de precio hoy?
La acción que tiene el mayor movimiento de precio hoy es Overstock.com (OSTK) con un movimiento de precio del 17.47%.
Luego puedes hacer una pregunta de seguimiento para obtener las noticias de esa acción en particular:
¿Cuáles son las últimas noticias sobre esta acción que podrían haber causado el movimiento del precio?
Aquí están las últimas noticias sobre Overstock.com (OSTK) que podrían haber causado el movimiento del precio:
Título: "Las acciones de Overstock se disparan tras la exitosa oferta de 21.5 millones por los activos de Bed Bath & Beyond" Fuente: MarketWatch Fecha de publicación: 22 de junio de 2023 Resumen: Las acciones de Overstock.com experimentaron un aumento significativo después de ganar exitosamente una oferta por los activos de Bed Bath & Beyond valorados en 21.5 millones.
Título: "¿Pensando en operar opciones o acciones de Meta Platforms, Overstock.com, Walmart, Home Depot o United Parcel Service?" Fuente: PR Newswire Fecha de publicación: 22 de junio de 2023 Resumen: Este artículo de noticias discute las potenciales opciones de trading y acciones, incluyendo Overstock.com, que los inversores podrían considerar.
Ten en cuenta que estos artículos de noticias son solo para fines informativos y pueden no ser la única razón del movimiento del precio. Siempre se recomienda realizar una investigación y análisis exhaustivos antes de tomar cualquier decisión de inversión.
Por último, puedes pedirle a ChatGPT que agregue un nuevo registro a Airtable:
¿Puedes agregar un registro a Airtable con el ticker de la acción, el movimiento del precio y el resumen de noticias?
He agregado un registro a Airtable con los siguientes detalles:
Ticker de la acción: OSTK Movimiento del precio: 17.47% Resumen de noticias: Las acciones de Overstock.com experimentaron un aumento significativo después de ganar exitosamente una oferta por los activos de Bed Bath & Beyond valorados en $21.5 millones.
🎉🎉¡Voilà! ¡Así es como puedes crear tu propia custom tool y usarla con el OpenAI Function Agent!
Por defecto, la Function en custom tool tiene acceso a las siguientes configuraciones de flow:
A continuación se muestra un ejemplo de envío del sessionId a un webhook de Discord:
En algunos casos, te gustaría pasar variables a la función de custom tool.
Por ejemplo, estás creando un chatbot que usa una custom tool. La custom tool está ejecutando una llamada HTTP POST y se necesita una API key para una solicitud autenticada exitosa. Puedes pasarla como una variable.
Por defecto, la Function en custom tool tiene acceso a las variables:
Ejemplo de cómo pasar variables en Flowise usando API y Embedded:
Ejemplo de cómo recibir las variables en custom tool:
Los siguientes parámetros pueden ser sobrescritos
customToolName
nombre de la tool
customToolDesc
descripción de la tool
customToolSchema
schema de la tool
customToolFunc
función de la tool
Ejemplo de una llamada API para sobrescribir parámetros de custom tool:
Puedes importar cualquier módulo integrado de NodeJS y librerías externas soportadas en la Function.
Para importar cualquier librería no soportada, puedes agregar fácilmente el nuevo paquete npm al package.json
en la carpeta packages/components
.
Luego, agrega las librerías importadas a la variable de entorno TOOL_FUNCTION_EXTERNAL_DEP
. Consulta https://github.com/FlowiseAI/FlowiseDocs/blob/main/esp/configuration/environment-variables.md#builtin-and-external-dependencies para más detalles.
Inicia la aplicación
Entonces podrás usar la librería recién agregada en la JavaScript Function así:
Mira cómo agregar dependencias adicionales e importar librerías