Amazon Bedrock

A Amazon Bedrock fornece inferência gerenciada para modelos de fundação por meio da AWS. O Agent Framework pode encapsular um Bedrock IChatClient ou usar o Python BedrockChatClient mantendo as APIs padrão de agente, sessão, middleware e ferramenta.

Important

Amazon Bedrock é um sistema de terceiros. Examine os termos de serviço, o tratamento de dados, a disponibilidade regional, o acesso ao modelo e os custos de uso antes de enviar dados do aplicativo.

Instalar os pacotes

dotnet add package AWSSDK.Extensions.Bedrock.MEAI
dotnet add package Microsoft.Agents.AI --prerelease

Configuration

AWS_REGION="us-east-1"
BEDROCK_MODEL_ID="anthropic.claude-3-5-sonnet-20241022-v2:0"

A autenticação usa a cadeia de credenciais padrão do AWS, incluindo variáveis de ambiente, perfis compartilhados, identidade de carga de trabalho e funções IAM.

Crie o cliente de tempo de execução do AWS Bedrock, converta-o em IChatClient e, em seguida, crie um agente do Agent Framework.

var awsRegion = Environment.GetEnvironmentVariable("AWS_REGION") ?? "us-east-1";
var modelId = Environment.GetEnvironmentVariable("BEDROCK_MODEL_ID") ?? "anthropic.claude-3-5-sonnet-20241022-v2:0";
// Create the Bedrock runtime client.
var bedrockRuntime = new AmazonBedrockRuntimeClient(RegionEndpoint.GetBySystemName(awsRegion));
IChatClient chatClient = bedrockRuntime.AsIChatClient(modelId);
AIAgent agent = chatClient.AsAIAgent(
    instructions: "You are a helpful assistant.",
    name: "BedrockAgent");

As credenciais da AWS seguem a cadeia de credenciais padrão da AWS. Conceda apenas as ações do modelo Bedrock de que o aplicativo precisa.

Instalar o pacote

pip install agent-framework-bedrock --pre

Configuration

BEDROCK_REGION="us-east-1"
BEDROCK_CHAT_MODEL="anthropic.claude-3-5-sonnet-20241022-v2:0"
AWS_ACCESS_KEY_ID="<access-key>"
AWS_SECRET_ACCESS_KEY="<secret-key>"
# Optional temporary credentials:
AWS_SESSION_TOKEN="<session-token>"
# Optional shared profile:
AWS_PROFILE="<profile>"

BedrockChatClient lê o modelo, a região e as credenciais da AWS a partir de suas configurações ou de valores explícitos passados ​​ao construtor.

async def main() -> None:
    """Run a Bedrock-backed agent with one tool call."""
    # 1. Create an agent with Bedrock chat client and one tool.
    agent = Agent(
        client=BedrockChatClient(),
        instructions="You are a concise travel assistant.",
        name="BedrockWeatherAgent",
        tools=[get_weather],
        default_options=BedrockChatOptions(tool_choice="auto"),
    )

    # 2. Run a query that uses the weather tool.
    query = "Use the weather tool to check the forecast for New York."
    print(f"User: {query}")
    response = await agent.run(query)
    print(f"Assistant: {response.text}")

Use BedrockChatOptions para opções de solicitação específicas do Bedrock e BedrockGuardrailConfig quando sua implantação utilizar guardrails do Bedrock. O cliente Python encaminhaadditionalModelRequestFields, guardrailConfige performanceConfigrequestMetadatapromptVariables para a API do Bedrock Converse quando você os define.

Para solicitações que não são de streaming, o cliente omite guardrailConfig.streamProcessingMode porque esse campo é válido apenas para ConverseStream. Quando a ID do modelo for um ARN de Gerenciamento de Prompts, defina campos de inferência, sistema, ferramenta e solicitação de modelo adicional no prompt gerenciado. O Bedrock rejeita esses campos na solicitação de runtime, de modo que o cliente os omite; promptVariables permanece disponível.

Enviar entrada de imagem

BedrockChatClient envia imagens baseadas em dados de mensagens do usuário por meio da API Converse do Bedrock quando o modelo selecionado oferece suporte à entrada de imagens. Crie o conteúdo da imagem com Content.from_data() ou um URI de dados Base64.

O Bedrock aceita imagens GIF, JPEG, PNG e WebP. O cliente não envia URLs de imagem externa, imagens do histórico de mensagens do assistente ou conteúdo de imagem avançada nos resultados da ferramenta. Baixe uma imagem externa e passe seus bytes quando precisar enviá-la para o modelo.

Gerar inserções

BedrockEmbeddingClient gera embeddings com modelos de embedding do Amazon Titan. Configure BEDROCK_EMBEDDING_MODEL e BEDROCK_REGION, em seguida, use a mesma cadeia de credenciais do AWS que BedrockChatClient.

Nenhum exemplo de inserção do Agent Framework executável está publicado no momento para este cliente.

Note

Atualmente, a integração do Amazon Bedrock não está disponível para o Agent Framework Go. Consulte o repositório Agent Framework Go para obter o status mais recente.

Tools

O Bedrock dá suporte a ferramentas do Agent Framework invocadas localmente, mas não expõe fábricas de ferramentas hospedadas pelo provedor.

Tool C# Python Notes
Ferramentas de Funções ✅ ✅ O suporte a modelos varia de acordo com o modelo do Bedrock selecionado.
Aprovação da ferramenta ✅ ✅ Aplicado pelo loop de invocação de função do Agent Framework.
Interpretador de Código ❌ ❌ Não há integração com interpretador de código hospedado no Bedrock.
Pesquisa de Arquivo ❌ ❌ Nenhuma integração de pesquisa de arquivos hospedada no Bedrock.
Pesquisa na Web ❌ ❌ Nenhuma integração de pesquisa na Web hospedada no Bedrock.
Ferramentas MCP hospedadas ❌ ❌ Nenhuma integração MCP hospedada no Bedrock.
Ferramentas MCP locais ✅ ✅ É executado no processo do aplicativo.

Próximas Etapas