O Amazon Bedrock é um serviço totalmente gerenciado que oferece uma variedade de modelos básicos de alto desempenho de empresas líderes de IA e um conjunto de recursos para criar aplicativos generativos de IA.
Este repositório de amostra fornece um exemplo de uso de chamada de função usando a API Converse com Anthropic Claude 3 Sonnet, usando várias ferramentas. Este repositório é um código apenas de amostra, que demonstra como usar chamadas de função como ferramentas para um modelo usar para buscar resultados usando código de função simples.
A API Converse
fornece uma interface consistente que funciona com todos os modelos que suportam mensagens. Isso permite que você escreva o código uma vez e use-o com modelos diferentes. Caso um modelo tenha parâmetros de inferência exclusivos, você também poderá passar esses parâmetros exclusivos para o modelo.
A chamada de função (também conhecida como ferramentas) é uma forma de fornecer ao modelo uma orientação descritiva para uma função que está disponível para o modelo usar para responder à entrada do usuário.
Neste exemplo, pediremos a Claude 3 que responda o que é o valor do ticker da bolsa e com a opção de converter a moeda padrão do ticker para qualquer moeda que foi fornecida na entrada do usuário.
Existem 2 ferramentas disponíveis para os modelos usarem:
O modelo a cada turno revisará o prompt fornecido e decidirá se pode responder corretamente à pergunta fornecida na entrada do usuário, a cada turno de acordo com a resposta de Bedrock end_turn
ou tool_use
. end_turn
significa que a resposta final foi fornecida e tool_use
analisará os dados apropriados de acordo com a descrição da ferramenta que será usada para executar a função da ferramenta e construirá um resultado adequado de volta ao modelo.
Este código de amostra foi testado usando pyenv com python 3.12 e definido em .python-version
Configuração AWS :
us-west-2
e é configurada em ask.pyAcesso ao leito rochoso :
anthropic.claude-3-sonnet-20240229-v1:0
Permissões do IAM :
Certifique-se de que o usuário IAM que executa este projeto tenha as permissões para invocar os modelos Claude 3. Para este exemplo, você pode usar:
{
"Version" : " 2012-10-17 " ,
"Statement" : [
{
"Sid" : " LeastPrivilege4BRClient " ,
"Effect" : " Allow " ,
"Action" : [
" bedrock:InvokeModel "
],
"Resource" : " arn:aws:bedrock:us-west-2::foundation-model/* "
}]
}
Isso pode ser mais restrito usando menos privilégios com o ID do modelo específico.
Para executar este código de exemplo, siga estas etapas:
pip install -r requirements.txt
python main.py
--input "new input here"
para substituir o texto de entrada padrão do usuário.Prompt padrão : "Qual é o preço atual das ações da Amazon em libras?
Por exemplo, o Anthropic Claude 3 Sonnet saberá que o Amazon Ticker é AMZN, usará a ferramenta para obter o valor do ticker e, em seguida, converterá a moeda de origem do preço das ações para a moeda de destino.
Cada iteração de inferência, quando um tool_use
é retornado, as mensagens retornadas serão anexadas para construir uma conversa como para o modelo, devido à natureza do LLM ser sem estado.
O prompt final, antes da resposta final do Claude 3, será semelhante 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
}
}
]
}
}
]
}
]
E a resposta final deve ser semelhante a esta: So the current Amazon (AMZN) stock price of $200.00 USD converts to £158.02 GBP.
Nota: Os preços das ações e as taxas de câmbio são altamente voláteis e podem mudar rapidamente. O exemplo de resultado mostrado neste README pode não refletir os valores atuais de mercado. Ao executar o código, você obterá dados em tempo real que podem diferir dos exemplos fornecidos.
Consulte CONTRIBUINDO para obter mais informações.
Consulte CONTRIBUINDO para obter mais informações.
Este projeto está licenciado sob a licença Apache-2.0.