Libro Blanco sobre los agentes de Google y las aplicaciones básicas (versión en chino)
Base de conocimientos de IAPublicado hace 7 meses Círculo de intercambio de inteligencia artificial 3.2K 00
Por Julia Wiesinger, Patrick Marlow y Vladimir Vuskovic
Original: https://www.kaggle.com/whitepaper-agents
directorio (en el disco duro del ordenador)
breve
¿Qué es un cuerpo inteligente?
modelización
artefacto
capa de orquestación
Inteligencia y modelización
Arquitectura cognitiva: cómo funciona la inteligencia
Herramientas: nuestras llaves al mundo exterior
extensiones
Extensiones de muestra
función (matem.)
caso práctico
Función Código de ejemplo
almacenamiento de datos
Realización y aplicación
Revisión de herramientas
Mejorar el rendimiento de los modelos mediante un aprendizaje específico
Inicio rápido de Intelligentsia con LangChain
Aplicaciones de producción que utilizan inteligencias Vertex AI
resúmenes
Esta combinación de razonamiento, lógica y acceso a información externa, unida a modelos generativos de IA, conduce al concepto de inteligencias.
breve
A los humanos se les dan muy bien las tareas complicadas de reconocimiento de patrones. Sin embargo, a menudo dependen de herramientas -como libros, búsquedas en Google o calculadoras- para complementar sus conocimientos previos antes de llegar a una conclusión.
Al igual que los humanos, los modelos generativos de IA pueden entrenarse para utilizar herramientas que les permitan acceder a información en tiempo real o sugerir acciones en el mundo real. Por ejemplo, los modelos pueden utilizar herramientas de búsqueda en bases de datos para acceder a información específica, como el historial de compras de un cliente, con el fin de generar recomendaciones de compra personalizadas.
Por otra parte, basándose en una consulta del usuario, el modelo puede realizar varias llamadas a la API, enviar una respuesta por correo electrónico a un colega o completar una transacción financiera en su nombre. Para ello, el modelo no solo debe acceder a un conjunto de herramientas externas, sino también tener la capacidad de planificar y ejecutar cualquier tarea de forma autodirigida.
Esta combinación de razonamiento, lógica y acceso a información externa conecta con el modelo de IA generativa, dando lugar a la noción de un organismo o programa inteligente que amplía las capacidades independientes del modelo de IA generativa. Este libro blanco explora con más detalle todos estos aspectos y otros relacionados.
¿Qué es un cuerpo inteligente?
En su forma más básica, una inteligencia artificial generativa puede definirse como una aplicación que intenta alcanzar un objetivo observando el mundo y actuando sobre él utilizando las herramientas de que dispone. Las inteligencias son autónomas y pueden actuar independientemente de la intervención humana, especialmente cuando se les proporcionan objetivos o intenciones adecuados que cumplir. Las inteligencias también pueden ser proactivas a la hora de alcanzar sus objetivos. Incluso en ausencia de un conjunto explícito de instrucciones de un ser humano, un organismo inteligente puede razonar sobre lo que debe hacer a continuación para alcanzar su objetivo final. Aunque el concepto de inteligencias en la IA es bastante general y poderoso, este libro blanco se centra en los tipos específicos de inteligencias que los modelos generativos de IA pueden construir en el momento de su publicación.
Para comprender el funcionamiento interno de las inteligencias, describamos primero los componentes subyacentes que impulsan su comportamiento, sus acciones y sus decisiones. La combinación de estos componentes puede describirse como una arquitectura cognitiva, y existen muchas arquitecturas de este tipo que pueden realizarse mezclando y combinando estos componentes. Centrándonos en las funciones básicas, hay tres componentes básicos en la arquitectura cognitiva de un organismo inteligente, como se muestra en la figura 1.

Figura 1. Arquitectura y componentes genéricos de inteligencia
modelización
En el contexto de la intelligentsia, un modelo es un Modelo de Lenguaje (LM) que se utilizará como tomador de decisiones centralizado para los procesos de la intelligentsia. Los modelos utilizados por Intelligentsia pueden ser uno o más LM de cualquier tamaño (pequeño/grande) capaces de seguir razonamientos basados en instrucciones y marcos lógicos como ReAct, Chain of Thought o Thinking Tree. Los modelos pueden ser genéricos, multimodales o ajustados a las necesidades de su arquitectura smartbody particular. Para obtener los mejores resultados de producción, debe utilizar un modelo que se adapte mejor a la aplicación final prevista y que, en el mejor de los casos, se haya entrenado con la firma de datos asociada a las herramientas que tiene previsto utilizar en su arquitectura cognitiva. Es importante tener en cuenta que el modelo no suele entrenarse utilizando los ajustes de configuración específicos (es decir, selección de herramientas, ajustes de orquestación/razonamiento) de las inteligencias. Sin embargo, el modelo puede optimizarse aún más para realizar las tareas del organismo inteligente proporcionándole ejemplos que demuestren la funcionalidad del organismo inteligente, incluidos casos en los que el organismo inteligente utilice herramientas o pasos de razonamiento concretos en diversos contextos.
artefacto
El modelo subyacente, a pesar de sus impresionantes capacidades de generación de texto e imágenes, sigue estando limitado por su incapacidad para interactuar con el mundo externo. Las herramientas cubren este vacío y permiten a las inteligencias interactuar con datos y servicios externos, al tiempo que desbloquean un ámbito más amplio de operaciones que van más allá del propio modelo subyacente. Las herramientas pueden adoptar muchas formas y tener distintos grados de complejidad, pero normalmente se ajustan a los métodos habituales de las API web, como GET, POST, PATCH y DELETE. Por ejemplo, las herramientas pueden actualizar la información de un cliente en una base de datos o recuperar datos meteorológicos para influir en las recomendaciones de viaje que una inteligencia proporciona a un usuario. Gracias a las herramientas, las inteligencias pueden acceder a la información del mundo real y procesarla. Esto les permite dar soporte a sistemas más especializados, como la generación mejorada por recuperación (RAG), que amplía considerablemente las capacidades de las inteligencias más allá de lo que el modelo subyacente puede lograr por sí solo. Más adelante hablaremos con más detalle de las herramientas, pero lo más importante es comprender que éstas tienden un puente entre las funciones internas de las inteligencias y el mundo exterior, abriendo así un abanico más amplio de posibilidades.
capa de orquestación
La capa de orquestación describe un proceso cíclico que controla cómo un organismo inteligente adquiere información, realiza algún razonamiento interno y utiliza ese razonamiento para informar su siguiente acción o decisión. Normalmente, este bucle continúa hasta que el organismo inteligente alcanza su objetivo o se detiene. La complejidad de la capa de orquestación puede variar mucho en función de las inteligencias y las tareas que realicen. Algunos bucles pueden ser simples cálculos con reglas de decisión, mientras que otros pueden contener lógica encadenada, implicar algoritmos adicionales de aprendizaje automático o aplicar otras técnicas de razonamiento probabilístico. Trataremos la implementación de la capa de orquestación de inteligencias con más detalle en la sección Arquitectura cognitiva.
Inteligencia y modelización
Para hacerse una idea más clara de la diferencia entre inteligencias y modelos, considere el siguiente diagrama:
modelización | cuerpo inteligente |
---|---|
El conocimiento se limita a lo que está disponible en sus datos de entrenamiento. | Los conocimientos se amplían conectándose a sistemas externos mediante herramientas. |
Razonamiento/predicción en una sola sesión basada en las consultas del usuario. No se gestiona el historial de sesiones ni el contexto continuo a menos que se implemente explícitamente para el modelo. (por ejemplo, historial de chat) | Gestionar el historial de sesiones (es decir, los registros de chat) para permitir múltiples rondas de razonamiento/predicción basadas en las consultas de los usuarios y las decisiones tomadas en la capa de orquestación. En este caso, una "ronda" se define como una interacción entre un sistema interactivo y un organismo inteligente. (es decir, 1 evento/consulta entrante y 1 respuesta del organismo inteligente). |
No existe una implementación nativa de la herramienta. | Las herramientas se implementan en la arquitectura nativa del cuerpo inteligente. |
No se implementa ninguna capa lógica nativa. Los usuarios pueden formular preguntas sencillas o utilizar marcos de inferencia (CoT, ReAct, etc.) para formular preguntas complejas que guíen al modelo en sus predicciones. | Las arquitecturas cognitivas nativas utilizan marcos de razonamiento como CoT, ReAct u otros marcos de inteligencias preconstruidos como LangChain. |
Arquitectura cognitiva: cómo funciona la inteligencia
Imagine a un chef en una cocina ajetreada. Su objetivo es crear platos deliciosos para los clientes del restaurante, lo que implica un ciclo de planificación, ejecución y ajuste.
- Recogen información como los pedidos de los clientes y los ingredientes que hay en la despensa y el frigorífico.
- Realizan un razonamiento interno sobre los platos y sabores que se pueden elaborar a partir de la información que acaban de recopilar.
- Toman medidas para preparar platos: picar verduras, mezclar especias, freír carne.
En cada fase del proceso, los chefs hacen los ajustes necesarios, perfeccionando sus planes cuando se acaban los ingredientes o cuando reciben comentarios de los clientes, y utilizando los resultados anteriores para determinar su siguiente plan de acción. Este ciclo de ingesta de información, planificación, ejecución y ajuste describe la singular arquitectura cognitiva que emplean los chefs para alcanzar sus objetivos.
Al igual que un chef, un cuerpo inteligente puede utilizar una arquitectura cognitiva para alcanzar su objetivo final mediante el procesamiento iterativo de la información, la toma de decisiones fundamentadas y el perfeccionamiento de las acciones posteriores en función de los resultados anteriores. En el corazón de la arquitectura cognitiva de un cuerpo inteligente se encuentra la capa de orquestación, responsable del mantenimiento de la memoria, el estado, el razonamiento y la planificación. Utiliza el campo en rápida evolución de la ingeniería de pistas y los marcos relacionados para guiar el razonamiento y la planificación, lo que permite a las inteligencias interactuar con sus entornos y completar tareas con mayor eficacia. La investigación en los ámbitos de la ingeniería de indicios y la planificación de tareas para modelos lingüísticos está evolucionando rápidamente y ha dado lugar a una serie de enfoques prometedores. Aunque no se trata de una lista exhaustiva, a continuación se enumeran algunos de los marcos y técnicas de razonamiento más populares en el momento de la publicación de este libro blanco:
- ReAct, un marco de ingeniería de pistas, proporciona una estrategia de proceso de pensamiento para que los modelos lingüísticos razonen y actúen sobre las consultas de los usuarios, con o sin ejemplos contextuales. Se ha demostrado que las pistas ReAct superan múltiples líneas de base SOTA y mejoran la capacidad de actuación humana y la credibilidad de grandes modelos lingüísticos.
- La Cadena de Pensamiento (CoT) es un marco de ingeniería de pistas que permite razonar a través de pasos intermedios. Existen varias subtécnicas de CoT, como la autorreferencial, la de pistas activas y la CoT multimodal, cada una de las cuales presenta ventajas e inconvenientes en función de la aplicación específica.
- El Árbol del Pensamiento (TdP), un marco de ingeniería de pistas, es idóneo para tareas de prospectiva exploratoria o estratégica. Generaliza las indicaciones de las cadenas de pensamiento y permite a los modelos explorar varias cadenas de pensamiento que actúan como pasos intermedios para la resolución general de problemas mediante modelos lingüísticos.
Un organismo inteligente puede utilizar una de las técnicas de razonamiento anteriores o muchas otras para seleccionar la mejor acción siguiente para una solicitud de usuario determinada. Por ejemplo, consideremos una programada para utilizar el ReAct El marco selecciona las acciones y herramientas adecuadas para la inteligencia de la consulta del usuario. La secuencia de acontecimientos podría ser la siguiente:
- El usuario envía una consulta al organismo inteligente
- La inteligencia inicia la secuencia ReAct
- El organismo inteligente da indicaciones al modelo para que genere el siguiente ReAct
Uno de los pasos y su correspondiente salida:
a. Preguntas: preguntas de entrada a partir de consultas de usuarios, provistas de avisos
b. Reflexiones: modelar las reflexiones sobre lo que debe hacerse a continuación
c. Operación: la decisión del modelo sobre qué acción tomar a continuación
i. Aquí es donde se pueden seleccionar las herramientas
ii. Por ejemplo, una acción podría ser [Vuelo, Búsqueda, Código, Ninguna], donde las tres primeras representan herramientas conocidas entre las que el modelo puede elegir, y la última representa "ninguna elección de herramienta".
d. Entradas operativas: las decisiones del modelo sobre qué entradas proporcionar a la herramienta, en su caso.
e. Observaciones: resultados de las operaciones/manipulación de las secuencias de entrada
i. Este pensamiento/operación/entrada/observación puede repetirse tantas veces como sea necesario. ii.
f. Respuesta final: la respuesta final a la consulta original del usuario proporcionada por el modelo.
4. El bucle ReAct finaliza y se proporciona al usuario la respuesta final PS:Aplicación práctica de la lógica ReAct

Figura 2. Ejemplo de Intelligentsia que utiliza el razonamiento ReAct en la capa de orquestación
Como se muestra en la Figura 2, el modelo, la herramienta y las inteligencias están configurados para trabajar de forma concertada y proporcionar al usuario una respuesta informada y concisa basada en la consulta original del usuario. Aunque el modelo puede adivinar la respuesta basándose en sus conocimientos a priori (creando una ilusión), utiliza la herramienta (vuelos) para buscar información externa en tiempo real. Esta información adicional se proporciona al modelo para que pueda tomar decisiones más informadas basadas en datos reales, que se agregan y se devuelven al usuario.
En resumen, la calidad de la respuesta de un organismo inteligente puede estar directamente relacionada con la capacidad del modelo para razonar y operar en estas diversas tareas, incluida la capacidad para seleccionar las herramientas adecuadas y lo bien definidas que estén dichas herramientas. Al igual que un chef elabora un plato con ingredientes frescos y presta atención a los comentarios de los clientes, un organismo inteligente se basa en un razonamiento sólido y en información fiable para ofrecer resultados óptimos. En la próxima sección, profundizaremos en las diversas formas en que los inteligentes se conectan a los datos frescos.
Herramientas: nuestras llaves al mundo exterior
Aunque los modelos lingüísticos son buenos procesando información, carecen de la capacidad de percibir directamente el mundo real e influir en él. Esto limita su utilidad en situaciones en las que necesitan interactuar con sistemas o datos externos. Esto significa que, en cierto sentido, un modelo lingüístico es tan bueno como lo que aprende de sus datos de entrenamiento. Sin embargo, por muchos datos que introduzcamos en nuestros modelos, siguen careciendo de la capacidad básica de interactuar con el mundo exterior. Entonces, ¿cómo podemos dotar a nuestros modelos de la capacidad de interactuar con sistemas externos en tiempo real y con conocimiento del contexto? Funciones, extensiones, almacenes de datos y complementos son formas de dotar a los modelos de esta capacidad crítica.
Aunque reciben muchos nombres, las herramientas son el vínculo que crea una conexión entre nuestros modelos subyacentes y el mundo exterior. Esta conexión con sistemas y datos externos permite a nuestras inteligencias realizar una amplia variedad de tareas con mayor precisión y fiabilidad. Por ejemplo, las herramientas pueden permitir a un organismo inteligente ajustar la configuración de una casa inteligente, actualizar un calendario, recuperar información del usuario de una base de datos o enviar un correo electrónico siguiendo un conjunto específico de instrucciones.
A fecha de publicación de este informe, existen tres tipos principales de herramientas con las que pueden interactuar los modelos de Google: extensiones, funciones y almacenes de datos. Al dotar a las inteligencias de herramientas, desbloqueamos su enorme potencial no solo para comprender el mundo, sino también para actuar sobre él, lo que abre la puerta a innumerables aplicaciones y posibilidades nuevas.
extensiones
La forma más sencilla de entender las extensiones es pensar en ellas como un puente entre las API y las inteligencias de forma estandarizada, permitiendo a las inteligencias ejecutar API sin problemas independientemente de su implementación subyacente. Supongamos que has creado una inteligencia cuyo objetivo es ayudar a los usuarios a reservar vuelos. Sabes que quieres utilizar la API de Google Flights para recuperar información sobre vuelos, pero no estás seguro de cómo hacer que tu inteligente llame a este punto final de la API.

Figura 3. ¿Cómo interactúan las inteligencias con las API externas?
Un enfoque podría ser implementar código personalizado que tome una consulta entrante del usuario, la analice en busca de información relevante y, a continuación, realice una llamada a la API. Por ejemplo, en el caso de reserva de vuelos, un usuario podría decir "Quiero reservar un vuelo de Austin a Zúrich". En este caso, nuestra solución de código personalizado tendría que extraer "Austin" y "Zúrich" como entidades relevantes de la consulta del usuario antes de intentar realizar una llamada a la API. Pero, ¿qué ocurre si el usuario dice "Quiero reservar un vuelo a Zúrich" sin indicar la ciudad de salida? Sin los datos necesarios, la llamada a la API fallará y será necesario implementar más código para capturar estos casos extremos. Este enfoque no es escalable y puede fallar fácilmente en cualquier situación que esté fuera del alcance del código personalizado implementado.
Un enfoque más fiable es utilizar extensiones. Las extensiones salvan la distancia entre las inteligencias y las API de las siguientes maneras:
- Utilice los ejemplos para enseñar a las inteligencias a utilizar los puntos finales de la API.
- Enseña a la inteligencia qué parámetros son necesarios para llamar correctamente al punto final de la API.

Figura 4. Extensión para conectar inteligencias a API externas
Las extensiones pueden construirse independientemente de la Inteligencia, pero deben proporcionarse como parte de la configuración de la Inteligencia. Los Organismos Inteligentes utilizan modelos y ejemplos en tiempo de ejecución para determinar qué extensiones, si las hay, son apropiadas para resolver la consulta del usuario. Esto pone de relieve una ventaja clave de las extensiones, sus tipos de ejemplos incorporados, que permiten al Organismo Inteligente seleccionar dinámicamente la extensión más adecuada para la tarea.

Figura 5. Relación 1-to-Many entre Intelligentsia, Extensiones y APIs
Puede entenderse de la siguiente manera: un desarrollador de software decide qué punto final de API utilizar para resolver el problema de un usuario. Si un usuario quiere reservar un vuelo, un desarrollador podría utilizar la API de Google Flights, y si un usuario quiere saber dónde está la cafetería más cercana en relación con su ubicación, un desarrollador podría utilizar la API de Google Maps. del mismo modo, Intelligentsia/Model Stack utiliza un conjunto de extensiones conocidas para decidir cuál es la que mejor se adapta a la consulta del usuario. Si quieres ver las extensiones en acción, puedes encontrarlas en la sección Géminis Pruébalas en la aplicación yendo a Ajustes > Extensiones y activando cualquier extensión que quieras probar. Por ejemplo, puedes activar la extensión Google Flights y pedir a Gemini que "muestre vuelos de Austin a Zúrich el próximo viernes".
Extensiones de muestra
Para simplificar el uso de las extensiones, Google proporciona una serie de extensiones listas para usar que pueden importarse rápidamente a tu proyecto y utilizarse con una configuración mínima. Por ejemplo, la extensión de intérprete de código de Code Snippet 1 permite generar y ejecutar código Python a partir de descripciones en lenguaje natural.
Python
import vertexai
import pprint
PROJECT_ID = "YOUR_PROJECT_ID"
REGION = "us-central1"
vertexai.init(project=PROJECT_ID, location=REGION)
from vertexai.preview.extensions import Extension
extension_code_interpreter = Extension.from_hub("code_interpreter")
CODE_QUERY = """Write a python method to invert a binary tree in O(n) time."""
response = extension_code_interpreter.execute(
operation_id = "generate_and_execute",
operation_params = {"query": CODE_QUERY}
)
print("Generated Code:")
pprint.pprint({response['generated_code']})
# The above snippet will generate the following code.
# Generated Code:
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
Python
def invert_binary_tree(root):
"""
Inverts a binary tree.
Args:
root: The root of the binary tree.
Returns:
The root of the inverted binary tree.
"""
if not root:
return None
# Swap the left and right children recursively
root.left, root.right = \
invert_binary_tree(root.right), invert_binary_tree(root.left)
return root
# Example usage:
# Construct a sample binary tree
# 4
# / \
# 2 7
# / \ / \
# 1 3 6 9
root = TreeNode(4)
root.left = TreeNode(2)
root.right = TreeNode(7)
root.left.left = TreeNode(1)
root.left.right = TreeNode(3)
root.right.left = TreeNode(6)
root.right.right = TreeNode(9)
# Invert the binary tree
inverted_root = invert_binary_tree(root)
Fragmento de código 1. La extensión del intérprete de código genera y ejecuta código Python.
En resumen, las extensiones proporcionan a las inteligencias diversas formas de percibir el mundo exterior, interactuar con él e influir en él. La selección e invocación de estas extensiones se guía por el uso de ejemplos, todos ellos definidos como parte de la configuración de la extensión.
función (matem.)
En el campo de la ingeniería de software, las funciones se definen como módulos de código autónomos que se utilizan para realizar tareas específicas y pueden reutilizarse cuando sea necesario. Cuando los desarrolladores de software escriben programas, suelen crear muchas funciones para realizar diversas tareas. También definirán la lógica para llamar a la función_a y a la función_b, así como las entradas y salidas esperadas.
Las funciones funcionan de forma muy similar en el ámbito de las inteligencias, pero podemos utilizar modelos en lugar de desarrolladores de software. Los modelos pueden tomar un conjunto de funciones conocidas y, basándose en su especificación, decidir cuándo utilizar cada función y qué argumentos toma la función. Las funciones difieren de las extensiones en varios aspectos, entre los que destacan:
- Funciones de salida del modelo y sus parámetros, pero sin llamadas a la API en tiempo real.
- Las funciones se ejecutan en el lado del cliente, mientras que las extensiones se ejecutan en el lado del smartbody.
Utilizando de nuevo nuestro ejemplo de Google Flights, una configuración sencilla de la función podría parecerse a la de la Figura 7.

Figura 7. ¿Cómo interactúan las funciones con las API externas?
Ten en cuenta que la principal diferencia aquí es que ni las funciones ni las inteligencias interactúan directamente con la API de Google Flights. Entonces, ¿cómo se producen realmente las llamadas a la API?
Cuando se utilizan funciones, la lógica y la ejecución de la llamada al punto final real de la API se transfieren de la inteligencia a la aplicación cliente, como se muestra en las figuras 8 y 9 siguientes. Esto proporciona al desarrollador un control más granular sobre el flujo de datos en la aplicación. Hay muchas razones por las que un desarrollador puede optar por utilizar funciones en lugar de extensiones, pero algunos casos de uso comunes son:
- Es necesario llamar a las API en otro nivel de la pila de aplicaciones, en lugar de hacerlo directamente en el proceso de arquitectura del agente (por ejemplo, utilizando un sistema middleware, un marco front-end, etc.).
- Limitaciones de seguridad o autenticación que impiden al agente llamar directamente a la API (por ejemplo, la API no está expuesta a Internet o la infraestructura del agente no tiene acceso a la API).
- Limitaciones de tiempo o secuencia de operaciones que impiden a los agentes llamar a la API en tiempo real (por ejemplo, operaciones por lotes, procesos de revisión manual, etc.).
- Se requiere una lógica de transformación de datos adicional para las respuestas de la API que el agente no puede realizar. Por ejemplo, algunos puntos finales de API no proporcionan mecanismos de filtrado para limitar el número de resultados devueltos. El uso de funciones en el lado del cliente ofrece a los desarrolladores oportunidades adicionales para realizar estas transformaciones.
- Los desarrolladores quieren iterar en el desarrollo de proxies sin desplegar infraestructura adicional para los puntos finales de las API (por ejemplo, las llamadas a funciones pueden actuar como "simulaciones de replanteo" para las API).
Aunque las diferencias entre ambos enfoques son más sutiles desde el punto de vista de la arquitectura interna, como se muestra en la Figura 8, las llamadas a funciones proporcionan un control adicional y reducen la dependencia de infraestructuras externas, lo que las convierte en una opción atractiva para los desarrolladores.

Figura 8. Controles del lado del cliente y del lado del Smartbody que describen extensiones y llamadas a funciones
caso práctico
Los modelos pueden utilizarse para llamar a funciones con el fin de gestionar procesos complejos de ejecución del lado del cliente para los usuarios finales, en los que el desarrollador de la inteligencia puede no querer que el modelo lingüístico gestione la ejecución de la API (como en el caso de las extensiones). Consideremos el siguiente ejemplo, en el que se entrena a un cuerpo inteligente como conserje de viajes para que interactúe con un usuario que quiere reservar un viaje de vacaciones. El objetivo es que el cuerpo inteligente genere una lista de ciudades que podamos utilizar en nuestra aplicación middleware para descargar imágenes, datos, etc. para que el usuario planifique su viaje. El usuario puede decir:
Me gustaría hacer un viaje de esquí con mi familia, pero no sé muy bien adónde ir.
En una consulta típica del modelo, la salida podría ser la siguiente:
Por supuesto, aquí tiene una lista de ciudades a tener en cuenta para un viaje de esquí en familia:
- Crested Butte, CO, Estados Unidos de América
- Whistler, Columbia Británica, Canadá
- Zermatt, Suiza
Aunque la salida anterior contiene los datos que necesitamos (nombres de ciudades), el formato no es adecuado para el análisis sintáctico. Con una llamada a la función, podemos enseñar al modelo a formatear esta salida en un estilo estructurado (por ejemplo, JSON), que es más fácil de analizar para otro sistema. Con la misma solicitud de entrada del usuario, el ejemplo de salida JSON de la función podría parecerse al fragmento de código 5.
sin fijar
function_call {
name: "display_cities"
args: {
"cities": ["Crested Butte", "Whistler", "Zermatt"],
"preferences": "skiing"
}
}
Fragmento de código 5. Ejemplo de carga de llamada a función para mostrar una lista de ciudades y preferencias de usuario Esta carga JSON es generada por el modelo y luego enviada a nuestro servidor cliente para realizar la acción que deseemos sobre ella. En este caso concreto, llamaremos a la API de Google Places para obtener las ciudades proporcionadas por el modelo y buscar las imágenes, y luego servirlas a nuestros usuarios como contenido enriquecido formateado. Consulte el diagrama de secuencia de la Figura 9, que muestra en detalle los pasos de la interacción anterior.

Figura 9. Diagrama de secuencia que muestra el ciclo de vida de una llamada a una función
El resultado del ejemplo de la figura 9 es que el modelo se utiliza para "rellenar los espacios en blanco" con los parámetros necesarios para que la interfaz de usuario cliente llame a la API de Google Places. La interfaz de usuario cliente utiliza los parámetros proporcionados por el modelo en la función devuelta para gestionar la llamada a la API. Este es sólo un caso de uso de las llamadas a funciones, pero hay muchos otros escenarios a tener en cuenta, como:
- Quieres que el modelo de lenguaje te sugiera una función que puedas utilizar en tu código, pero no quieres incluir credenciales en tu código. Dado que la llamada a la función no la ejecuta, no es necesario incluir credenciales con información sobre la función en el código.
- Está ejecutando una operación asíncrona que puede tardar más de unos segundos en completarse. Estos escenarios se aplican a las llamadas de función porque se trata de una operación asíncrona.
- Desea ejecutar la función en un dispositivo distinto del sistema que generó la llamada a la función y sus argumentos.
Una cosa clave que hay que recordar sobre las funciones es que están pensadas para proporcionar al desarrollador un mayor control sobre la ejecución de las llamadas a la API y el flujo general de datos en la aplicación. En el ejemplo de la figura 9, el desarrollador ha decidido no devolver la información de la API a la inteligencia porque no es relevante para las acciones que la inteligencia pueda realizar en el futuro. Sin embargo, dependiendo de la arquitectura de la aplicación, puede tener sentido devolver datos de llamadas a API externas al organismo inteligente para influir en el razonamiento, la lógica y la elección de acciones futuras. En última instancia, corresponde al desarrollador de la aplicación elegir lo que es apropiado para una aplicación concreta.
Función Código de ejemplo
Para obtener la salida anterior de nuestra escena de vacaciones de esquí, vamos a construir cada componente para que funcione con nuestro modelo gemini-1.5-flash-001. En primer lugar, definimos la función display_cities como un simple método Python.
Python
def display_cities(cities: list[str], preferences: Optional[str] = None):
"""根据用户的搜索查询和偏好提供城市列表。
Args:
preferences (str): 用户的搜索偏好, 例如滑雪、
海滩、餐馆、烧烤等。
cities (list[str]): 推荐给用户的城市列表。
Returns:
list[str]: 推荐给用户的城市列表。
"""
return cities
Fragmento de código 6. Ejemplo de método Python para una función que muestra una lista de ciudades.
A continuación, instanciaremos nuestro modelo, construiremos la herramienta, y luego pasaremos la consulta del usuario y la herramienta al modelo. Ejecutando el código que aparece a continuación obtendremos el resultado que se muestra en la parte inferior del fragmento de código.
Python
from vertexai.generative_models import GenerativeModel, Tool, FunctionDeclaration
model = GenerativeModel("gemini-1.5-flash-001")
display_cities_function = FunctionDeclaration.from_func(display_cities)
tool = Tool(function_declarations=[display_cities_function])
message = "I'd like to take a ski trip with my family but I'm not sure where to go."
res = model.generate_content(message, tools=[tool])
print(f"Function Name: {res.candidates[0].content.parts[0].function_call.name}")
print(f"Function Args: {res.candidates[0].content.parts[0].function_call.args}")
> Function Name: display_cities
> Function Args: {'preferences': 'skiing', 'cities': ['Aspen', 'Vail',
'Park City']}
Fragmento de código 7. construye la herramienta, la envía al modelo con la consulta del usuario y permite realizar llamadas a funciones
En resumen, las funciones proporcionan un marco sencillo que permite a los desarrolladores de aplicaciones controlar con precisión el flujo de datos y la ejecución del sistema, al tiempo que utilizan eficazmente las inteligencias/modelos para la generación de entradas clave. Los desarrolladores pueden optar por mantener las inteligencias "en el bucle" devolviendo datos externos, u omitirlas en función de los requisitos arquitectónicos específicos de la aplicación.
almacenamiento de datos
Imagine un modelo lingüístico como una inmensa biblioteca que contiene sus datos de entrenamiento. Sin embargo, a diferencia de una biblioteca que adquiere constantemente nuevos libros, esta biblioteca permanece estática y sólo contiene los conocimientos del entrenamiento inicial. Esto supone un reto, porque el conocimiento del mundo real está en constante evolución.
Desarrollo. El almacenamiento de datos resuelve esta limitación proporcionando acceso a una información más dinámica y actualizada y garantizando que las respuestas de los modelos se basen siempre en hechos y sean pertinentes.
Consideremos un escenario común en el que un desarrollador puede necesitar proporcionar una pequeña cantidad de datos adicionales a un modelo, quizás en forma de hoja de cálculo o PDF.

Figura 10. ¿Cómo interactúan las inteligencias con los datos estructurados y no estructurados?
Los almacenes de datos permiten a los desarrolladores proporcionar datos adicionales a las inteligencias en su formato original, lo que elimina la necesidad de realizar conversiones de datos, reentrenamientos de modelos o ajustes que requieren mucho tiempo. El almacén de datos convierte los documentos entrantes en un conjunto de incrustaciones de bases de datos vectoriales que las inteligencias pueden utilizar para extraer la información necesaria para complementar su próxima acción o respuesta al usuario.

Figura 11. los almacenes de datos conectan las inteligencias a varios tipos de nuevas fuentes de datos en tiempo real.
Realización y aplicación
En el contexto de las inteligencias generativas de IA, el almacenamiento de datos suele implementarse como bases de datos vectoriales, a las que los desarrolladores esperan que las inteligencias tengan acceso en tiempo de ejecución. Aunque no profundizaremos aquí en las bases de datos vectoriales, el punto clave que hay que entender es que almacenan datos en forma de incrustaciones vectoriales, que son vectores de alta dimensión o representaciones matemáticas de los datos proporcionados. En los últimos años, uno de los ejemplos más típicos del uso de almacenes de datos con modelos lingüísticos han sido las aplicaciones de Generación Aumentada de Recuperación (RAG). Estas aplicaciones intentan ampliar la amplitud y profundidad del conocimiento del modelo proporcionándole acceso a datos en diversos formatos, por ejemplo:
- Contenido del sitio web
- Datos estructurados en PDF, documentos Word, CSV, hojas de cálculo y otros formatos.
- Datos no estructurados en HTML, PDF, TXT y otros formatos.

Figura 12. Relación 1 a muchos entre inteligencias y almacenes de datos que pueden representar varios tipos de datos preindexados
El proceso básico de cada ciclo de solicitud del usuario y respuesta del organismo inteligente suele modelarse como se muestra en la Figura 13.
- La consulta del usuario se envía al modelo de incrustación para generar una incrustación de la consulta.
- A continuación, la incrustación de la consulta se coteja con el contenido de la base de datos vectorial mediante un algoritmo de cotejo (por ejemplo, ScaNN)
- Recuperar coincidencias de la base de datos de vectores en formato de texto y enviarlas de vuelta al cuerpo inteligente.
- Las inteligencias reciben las consultas de los usuarios y los contenidos recuperados y, a continuación, formulan respuestas o acciones
5. Enviar la respuesta final al usuario

Figura 13. Ciclo de vida de la solicitud del usuario y la respuesta del organismo inteligente en aplicaciones basadas en GAR
El resultado final es una aplicación que permite a las inteligencias cotejar la consulta del usuario con un almacén de datos conocido mediante una búsqueda vectorial, recuperar el contenido en bruto y proporcionarlo a la capa de orquestación y al modelo para su posterior procesamiento. El siguiente paso puede ser proporcionar la respuesta final al usuario o realizar búsquedas vectoriales adicionales para optimizar aún más los resultados. En la Figura 14 se muestra un ejemplo de interacción con un organismo inteligente que implementa un GAR con razonamiento/planificación ReAct.

Figura 14. Ejemplo de aplicación RAG con razonamiento/planificación ReAct
Revisión de herramientas
En resumen, las extensiones, las funciones y los almacenes de datos constituyen distintos tipos de herramientas que las inteligencias pueden utilizar en tiempo de ejecución. Cada herramienta tiene su propia finalidad y pueden utilizarse juntas o por separado a discreción del desarrollador de la inteligencia.
extensiones | llamada de función | almacenamiento de datos | |
---|---|---|---|
llevar a cabo | Implantación inteligente en el cuerpo | Ejecución en el lado del cliente | Implantación inteligente en el cuerpo |
caso práctico |
|
| Los desarrolladores desean implementar la Generación Aumentada de Recuperación (RAG) utilizando cualquiera de los siguientes tipos de datos:
|
Mayor rendimiento del modelo y aprendizaje específico
Un aspecto clave del uso eficaz de los modelos es su capacidad para seleccionar las herramientas adecuadas a la hora de generar resultados, especialmente cuando se utilizan herramientas a escala en la producción. Aunque la formación general puede ayudar a los modelos a desarrollar esta habilidad.Pero los escenarios del mundo real suelen requerir algo más queconocimiento de los datos de formación. Piénselo como la diferencia entre las habilidades culinarias básicas y el dominio de una cocina específica. Ambas requieren conocimientos culinarios básicos, pero la segunda requiere un aprendizaje específico para obtener resultados más matizados.
Existen varios enfoques para ayudar a los modelos a adquirir este tipo de conocimientos específicos:
- Aprendizaje contextual: este enfoque proporciona a los modelos genéricos pistas, herramientas y pequeñas muestras a la hora de razonar, lo que les permite aprender "sobre la marcha" cómo y cuándo utilizar estas herramientas para tareas específicas. el marco ReAct es un ejemplo de este enfoque en lenguaje natural.
- Aprendizaje contextual basado en la recuperación: esta técnica rellena dinámicamente las sugerencias del modelo recuperando la información, las herramientas y los ejemplos relacionados más relevantes de un almacenamiento externo. Un ejemplo de ello es el "almacén de ejemplos" de la extensión Vertex AI o la arquitectura RAG de almacén de datos mencionada anteriormente.
- Aprendizaje basado en el ajuste fino: este método consiste en entrenar el modelo con un conjunto de datos específico de ejemplos más amplio antes de razonar. Esto ayuda al modelo a entender cuándo y cómo aplicar determinadas herramientas antes de recibir cualquier consulta del usuario.
Para ilustrar mejor los objetivos de cada método de aprendizaje, podemos volver a la analogía de la cocina para explorarla.
- Imaginemos que un chef recibe una receta específica (pista), algunos ingredientes clave (herramientas relacionadas) y algunos platos de muestra de los clientes (muestra menos). A partir de esta información limitada y de los conocimientos culinarios generales del chef, éste tiene que averiguar cómo preparar "sobre la marcha" el plato que mejor se ajuste a la receta y a las preferencias del cliente. Esto es aprendizaje contextual.
- Imaginemos ahora a nuestro chef en una cocina bien surtida con una despensa (almacenamiento externo de datos) llena de ingredientes y recetas (ejemplos y herramientas). El chef es ahora capaz de seleccionar dinámicamente ingredientes y recetas de la despensa y alinearse mejor con las recetas y preferencias del cliente. Esto permite a los chefs aprovechar los conocimientos existentes y nuevos para crear platos más inteligentes y sofisticados. Se trata de un aprendizaje contextual basado en la recuperación.
- Por último, imaginemos que enviamos al chef de vuelta a la escuela para que aprenda una nueva cocina o unos nuevos platos (preentrenados en un conjunto de datos específico de ejemplos más amplio). De este modo, el chef podrá abordar las futuras recetas de clientes desconocidos con un conocimiento más profundo. Si queremos que el chef
Este enfoque es perfecto cuando destacas en una cocina específica (área de conocimiento). Se trata de un aprendizaje basado en el perfeccionamiento.
Cada enfoque presenta ventajas e inconvenientes únicos en términos de velocidad, coste y latencia. Sin embargo, si combinamos estas técnicas en un marco corporal inteligente, podemos aprovechar las ventajas y minimizar los inconvenientes, lo que da lugar a una solución más sólida y adaptable.
Inicio rápido de Intelligentsia con LangChain
Con el fin de proporcionar un ejemplo de un smartbody ejecutable que realmente se ejecuta, vamos a utilizar LangChain y el programa LangGraph Bibliotecas para construir un prototipo rápido. Estas populares bibliotecas de código abierto permiten a los usuarios construir inteligencias cliente "enlazando" secuencias de lógica y razonamiento, así como invocar herramientas para responder a las consultas de los usuarios. Utilizaremos nuestro modelo gemini-1.5-flash-001 y algunas herramientas sencillas para responder a una consulta en varias fases de un usuario, como se muestra en el fragmento de código 8.
Las herramientas que utilizamos son SerpAPI (para la búsqueda de Google) y Google Places API. puede ver la salida de muestra en el fragmento de código 9 después de ejecutar nuestro procedimiento en el fragmento de código 8.
Python
from langgraph.prebuilt import create_react_agent
from langchain_core.tools import tool
from langchain_community.utilities import SerpAPIWrapper
from langchain_community.tools import GooglePlacesTool
os.environ["SERPAPI_API_KEY"] = "XXXXX"
os.environ["GPLACES_API_KEY"] = "XXXXX"
@tool
def search(query: str):
"""Use the SerpAPI to run a Google Search."""
search = SerpAPIWrapper()
return search.run(query)
@tool
def places(query: str):
"""Use the Google Places API to run a Google Places Query."""
places = GooglePlacesTool()
return places.run(query)
model = ChatVertexAI(model="gemini-1.5-flash-001")
tools = [search, places]
query = "Who did the Texas Longhorns play in football last week? What is the address of the other team's stadium?"
agent = create_react_agent(model, tools)
input = {"messages": [("human", query)]}
for s in agent.stream(input, stream_mode="values"):
message = s["messages"][-1]
if isinstance(message, tuple):
print(message)
else:
message.pretty_print()
Fragmento de código 8. Ejemplos de uso de las herramientas LangChain y LangGraph Intelligentsia
sin fijar
=============================== 用户消息 ================================ 德克萨斯长角牛队上周的橄榄球赛对手是谁?对方球队体育场的地址是什么? ================================= AI 消息 ================================= 工具调用:搜索 参数: 查询:德克萨斯长角牛队橄榄球赛程 ================================ 工具消息 ================================ 名称:搜索 {...结果:“NCAA 一级橄榄球联赛,佐治亚州,日期...”} ================================= AI 消息 ================================= 德克萨斯长角牛队上周与佐治亚斗牛犬队进行了比赛。 工具调用:地点 参数: 查询:佐治亚斗牛犬队体育场 ================================ 工具消息 ================================ 名称:地点 {...桑福德体育场地址:桑福德路 100 号...} ================================= AI 消息 ================================= 佐治亚斗牛犬队体育场的地址是佐治亚州雅典市桑福德路 100 号,邮编 30602。
Fragmento de código 9. Salida del programa del fragmento de código 8.
Aunque se trata de un ejemplo bastante simple de un organismo inteligente, demuestra todos los componentes básicos del modelo, la orquestación y las herramientas trabajando juntos para lograr un objetivo específico. En la última sección, exploraremos cómo encajan estos componentes en productos alojados a escala de Google, como las inteligencias Vertex AI y Generative Playbooks.
Aplicaciones de producción que utilizan inteligencias Vertex AI
Aunque este informe explora los componentes básicos de las inteligencias, la creación de aplicaciones de producción requiere integrarlas con otras herramientas, como interfaces de usuario, marcos de evaluación y mecanismos de mejora continua. La plataforma Vertex AI de Google simplifica este proceso proporcionando un entorno totalmente alojado que incluye todos los elementos esenciales descritos anteriormente. Mediante una interfaz de lenguaje natural, los desarrolladores pueden definir rápidamente los elementos clave de sus inteligencias -objetivos, descripciones de tareas, herramientas, subinteligencias para la delegación de tareas y ejemplos- con el fin de construir fácilmente el comportamiento deseado del sistema. Además, la plataforma proporciona un conjunto de herramientas de desarrollo que pueden utilizarse para probar, evaluar, medir el rendimiento de las inteligencias, depurar y mejorar la calidad general de las inteligencias desarrolladas. Esto permite a los desarrolladores centrarse en construir y optimizar sus inteligencias, mientras que la complejidad de la infraestructura, el despliegue y el mantenimiento es gestionada por la propia plataforma.
En la Figura 15, se muestra un ejemplo de arquitectura de un cuerpo inteligente construido sobre la plataforma Vertex AI utilizando varias características como el Vertex Agent Builder, Vertex Extensions, Vertex Function Calls y Vertex Example Storage. La arquitectura incluye muchos de los diversos componentes necesarios para las aplicaciones listas para la producción.

Figura 15. Ejemplo de arquitectura de inteligencias de extremo a extremo construidas sobre la plataforma Vertex AI
Puedes probar este ejemplo de arquitectura smartbody preconstruida de nuestra documentación oficial.
resúmenes
En este libro blanco, analizamos los componentes básicos de las inteligencias generativas de IA, su composición y las formas efectivas de implementarlos en forma de arquitecturas cognitivas. Algunos de los puntos clave de este informe son:
- Los Intelligentsia amplían la funcionalidad de los modelos lingüísticos utilizando herramientas para acceder a información en tiempo real, sugerir acciones prácticas y planificar y realizar tareas complejas de forma autónoma. Los Intelligentsia pueden utilizar uno o varios modelos lingüísticos para determinar cuándo y cómo realizar transiciones de estado y utilizar herramientas externas para llevar a cabo cualquier número de tareas complejas que al modelo le resultarían difíciles o imposibles de realizar por sí solo.
- En el corazón del funcionamiento de las inteligencias se encuentra la capa de orquestación, una arquitectura cognitiva que construye el razonamiento, la planificación, la toma de decisiones y guía sus acciones. Diversas técnicas de razonamiento (por ejemplo, ReAct, cadenas de pensamiento y árboles de pensamiento) proporcionan un marco para que la capa de orquestación reciba información, realice razonamientos internos y genere decisiones o respuestas fundamentadas.
- Las herramientas (por ejemplo, extensiones, funciones y almacenes de datos) actúan como llaves hacia el mundo exterior para las inteligencias, permitiéndoles interactuar con sistemas externos y acceder a conocimientos más allá de sus datos de formación. Las extensiones sirven de puente entre las inteligencias y las API externas.Esto permite la ejecución de llamadas a la API y la recuperación de información en tiempo real. Las funciones proporcionan a los desarrolladores un control más granular mediante la división de responsabilidades, lo que permite a las inteligencias generar parámetros de función que pueden ejecutarse en el cliente. Los almacenes de datos proporcionan a las inteligencias acceso a datos estructurados o no estructurados para soportar aplicaciones basadas en datos.
El futuro de los cuerpos inteligentes depara avances apasionantes, y sólo hemos empezado a arañar la superficie de lo que es posible. A medida que las herramientas se vuelvan más sofisticadas y se mejore la capacidad de razonamiento, las inteligencias podrán resolver problemas cada vez más complejos. Además, el planteamiento estratégico de "encadenar inteligencias" seguirá ganando impulso. Combinando inteligencias especializadas, cada una de las cuales destaca en un ámbito o tarea concretos, podemos obtener resultados superiores en todos los sectores y áreas problemáticas.
Es importante recordar que la construcción de arquitecturas de inteligencias complejas requiere un enfoque iterativo. La experimentación y el perfeccionamiento son fundamentales para encontrar soluciones a casos empresariales y necesidades organizativas específicos. No hay dos inteligencias idénticas debido a la naturaleza generativa de los modelos subyacentes que sustentan su arquitectura. Sin embargo, al aprovechar los puntos fuertes de cada componente subyacente, podemos crear aplicaciones impactantes que amplíen las capacidades del modelo lingüístico e impulsen un valor real.
nota final
- Shafran, I., Cao, Y. y otros, 2022, 'ReAct: Synergising Reasoning and Acting in Language Models'. Disponible en.
https://arxiv.org/abs/2210.03629 - Wei, J., Wang, X. y otros, 2023, 'Chain-of-Thought Prompting Elicits Reasoning in Large Language Models'.
Disponible en: https://arxiv.org/pdf/2201.11903.pdf. - Wang, X. y otros, 2022, 'Self-Consistency Improves Chain of Thought Reasoning in Language Models'.
Disponible en: https://arxiv.org/abs/2203.11171. - Diao, S. y otros, 2023, "Active Prompting with Chain-of-Thought for Large Language Models". Disponible en.
https://arxiv.org/pdf/2302.12246.pdf. - Zhang, H. y otros, 2023, 'Multimodal Chain-of-Thought Reasoning in Language Models'. Disponible en.
https://arxiv.org/abs/2302.00923. - Yao, S. y otros, 2023, 'Tree of Thoughts: Deliberate Problem Solving with Large Language Models'. Disponible en.
https://arxiv.org/abs/2305.10601. - Long, X., 2023, 'Modelo de gran lenguaje guiado por el árbol del pensamiento'. Disponible en.
https://arxiv.org/abs/2305.08291. - **Google: "Aplicación Google Gemini". Disponible en: **http://gemini.google.com.
- **Especificación OpenAPI. Disponible en: **https://swagger.io/specification/.
- Xie, M., 2022, "¿Cómo funciona el aprendizaje en contexto? Un marco para comprender las diferencias de
Aprendizaje tradicional supervisado". Disponible en: https://ai.stanford.edu/blog/understanding-incontext/. - Google Research: "ScaNN (Scalable Nearest Neighbors)". Disponible en.
https://github.com/google-research/google-research/tree/master/scann. - **LangChain. 'LangChain'. Disponible en: **https://python.langchain.com/v0.2/docs/introduction/.
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...