Amazon Bedrock es un servicio totalmente administrado que ofrece una selección de modelos básicos de alto rendimiento de empresas líderes en IA y un conjunto de capacidades para crear aplicaciones de IA generativa.
Este repositorio de muestra proporciona un ejemplo del uso de llamadas a funciones utilizando la API de Converse con Anthropic Claude 3 Sonnet, utilizando múltiples herramientas. Este repositorio es solo un código de muestra, que demuestra cómo usar las llamadas a funciones como herramientas para que un modelo las use para obtener resultados usando código de función simple.
La API Converse
proporciona una interfaz coherente que funciona con todos los modelos que admiten mensajes. Esto le permite escribir código una vez y usarlo con diferentes modelos. Si un modelo tiene parámetros de inferencia únicos, también puede pasar esos parámetros únicos al modelo.
La llamada a funciones (también conocida como herramientas) es una forma de proporcionar al modelo una guía descriptiva de una función que está disponible para que el modelo la utilice para responder a la entrada del usuario.
En este ejemplo, le pediremos a Claude 3 que responda qué es el valor de cotización de una acción y con la opción de convertir la moneda de cotización predeterminada a cualquier moneda proporcionada en la entrada del usuario.
Hay 2 herramientas disponibles para que los modelos las utilicen:
En cada turno, el modelo revisará el mensaje dado y decidirá si puede responder correctamente a la pregunta proporcionada en la entrada del usuario, cada turno de acuerdo con la respuesta de Bedrock end_turn
o tool_use
. end_turn
significa que se proporcionó la respuesta final y tool_use
analizará los datos apropiados según la descripción de la herramienta que se utilizará para ejecutar la función de la herramienta y generará un resultado adecuado para el modelo.
Este código de muestra se probó usando pyenv con python 3.12 y se configuró en la versión .python.
Configuración de AWS :
us-west-2
y se configura en Ask.pyAcceso al lecho rocoso :
anthropic.claude-3-sonnet-20240229-v1:0
Permisos de IAM :
Asegúrese de que el usuario de IAM que ejecuta este proyecto tenga permisos para invocar los modelos de Claude 3. Para este ejemplo, puede utilizar:
{
"Version" : " 2012-10-17 " ,
"Statement" : [
{
"Sid" : " LeastPrivilege4BRClient " ,
"Effect" : " Allow " ,
"Action" : [
" bedrock:InvokeModel "
],
"Resource" : " arn:aws:bedrock:us-west-2::foundation-model/* "
}]
}
Esto puede ser más restringido usando privilegios mínimos con la identificación del modelo específico.
Para ejecutar este código de muestra, siga estos pasos:
pip install -r requirements.txt
python main.py
--input "new input here"
para anular el texto de entrada predeterminado del usuario.Mensaje predeterminado : "¿Cuál es el precio actual de las acciones de Amazon en libras?
Por ejemplo, Anthropic Claude 3 Sonnet sabrá que el ticker de Amazon es AMZN, utilizará la herramienta para obtener el valor del ticker y luego convertirá la moneda de origen del precio de las acciones a la moneda de destino.
En cada iteración de inferencia, cuando se devuelve un tool_use
, los mensajes devueltos se agregarán para generar una conversación como para el modelo, debido a la naturaleza de los LLM sin estado.
El mensaje final, antes de la respuesta final de Claude 3, será similar a este:
[
{
"role" : " user " ,
"content" : [
{
"text" : " What is the current stock price of amazon stock in pounds? "
}
]
},
{
"role" : " assistant " ,
"content" : [
{
"text" : " Okay, let me get the current Amazon (AMZN) stock price and convert it to British pounds for you: "
},
{
"toolUse" : {
"toolUseId" : " tooluse_7ofuIPr8T3uBsK2xy1GZBw " ,
"name" : " get_stock_price " ,
"input" : {
"ticker" : " AMZN "
}
}
}
]
},
{
"role" : " user " ,
"content" : [
{
"toolResult" : {
"toolUseId" : " tooluse_7ofuIPr8T3uBsK2xy1GZBw " ,
"content" : [
{
"json" : {
"ticker" : " AMZN " ,
"price" : 200 ,
"currency" : " USD "
}
}
]
}
}
]
},
{
"role" : " assistant " ,
"content" : [
{
"text" : " The current Amazon stock price is $200.00 USD. To convert that to British pounds: "
},
{
"toolUse" : {
"toolUseId" : " tooluse_lyTta3oMSfik5EhsCnnkGg " ,
"name" : " convert_currency " ,
"input" : {
"amount" : 200 ,
"source_currency" : " USD " ,
"target_currency" : " GBP "
}
}
}
]
},
{
"role" : " user " ,
"content" : [
{
"toolResult" : {
"toolUseId" : " tooluse_lyTta3oMSfik5EhsCnnkGg " ,
"content" : [
{
"json" : {
"converted_currency" : 158.0185237159697
}
}
]
}
}
]
}
]
Y la respuesta final debería ser similar a esta: So the current Amazon (AMZN) stock price of $200.00 USD converts to £158.02 GBP.
Nota: Los precios de las acciones y los tipos de cambio de divisas son muy volátiles y pueden cambiar rápidamente. Es posible que el resultado de ejemplo que se muestra en este archivo README no refleje los valores actuales del mercado. Al ejecutar el código, obtendrá datos en tiempo real que pueden diferir de los ejemplos proporcionados.
Consulte CONTRIBUCIÓN para obtener más información.
Consulte CONTRIBUCIÓN para obtener más información.
Este proyecto está bajo la licencia Apache-2.0.