中文
APIs RESTful compatíveis com o OpenAi para Amazon Bedrock
O código -fonte é refatorado com a nova API Converse pela Bedrock, que fornece suporte nativo com chamadas de ferramentas.
Se você estiver enfrentando algum problema, por favor levante um problema.
A Amazon Bedrock oferece uma ampla gama de modelos de fundação (como Claude 3 Opus/Sonnet/Haiku, Llama 2/3, Mistral/Mixtral, etc.) e um amplo conjunto de recursos para você criar aplicativos generativos de IA. Verifique a página de destino da Amazon Bedrock para obter informações adicionais.
Às vezes, você pode ter aplicativos desenvolvidos usando APIs ou SDKs OpenAI e deseja experimentar a Amazon Bedrock sem modificar sua base de código. Ou você pode simplesmente avaliar os recursos desses modelos de fundação em ferramentas como Autogen etc. Bem, este repositório permite acessar os modelos da Amazon Bedrock sem problemas por meio de APIs e SDKs do OpenAI, permitindo testar esses modelos sem alterações de código.
Se você achar útil este repositório do GitHub, considere dar a ele uma estrela gratuita para mostrar sua apreciação e apoio ao projeto.
Características:
Verifique o Guia de Uso para obter mais detalhes sobre como usar as novas APIs.
NOTA: A API de conclusão de texto herdado não é suportada, você deve alterar para usar a API de conclusão de bate -papo.
Família de modelos de rocha da Amazon suportada:
Você pode chamar a API models
para obter a lista completa de IDs de modelo suportados.
NOTA: O modelo padrão é definido como
anthropic.claude-3-sonnet-20240229-v1:0
que pode ser alterado por meio de variáveis de ambiente Lambda (DEFAULT_MODEL
).
Certifique -se de conhecer os pré -requisitos abaixo:
Para obter mais informações sobre como solicitar acesso ao modelo, consulte o Guia do usuário da Amazon Bedrock (Configurar> acesso ao modelo)
O diagrama a seguir ilustra a arquitetura de referência. Observe que ele também inclui um novo VPC com duas sub -redes públicas apenas para o Balancer de Carga de Aplicação (ALB).
Você também pode optar por usar a AWS Fargate atrás do ALB, em vez da AWS Lambda, a principal diferença é a latência do primeiro byte para a resposta de streaming (Fargate é menor).
Como alternativa, você pode usar o URL da função lambda para substituir o ALB, veja o exemplo
Siga as etapas abaixo para implantar as APIs de proxy do Bedrock na sua conta da AWS. Somente suporta regiões onde a Amazon Bedrock está disponível (como us-west-2
). A implantação levará aproximadamente 3-5 minutos .
Etapa 1: Crie sua própria chave de API personalizada (opcional)
Nota: Esta etapa é usar qualquer string (sem espaços) que você deseja criar uma chave de API personalizada (credencial) que será usada para acessar a API proxy posteriormente. Essa chave não precisa corresponder à sua chave de abertura real e você não precisa ter uma chave de API do OpenAI. É recomendável que você dê esse passo e garanta que você mantenha a chave segura e privada.
Etapa 2: Implante a pilha de formas de nuvem
Alb + lambda
Alb + fargate
BedrockProxyAPIKey
). Se você não configurou uma chave da API, deixe esse campo em branco. Clique em "Avançar". É isso! ? Depois de implantado, clique na pilha de formação de nuvem e vá para a guia Saídas , você pode encontrar o URL da base da API do APIBaseUrl
, o valor deve se parecer com http://xxxx.xxx.elb.amazonaws.com/api/v1
.
Tudo o que você precisa é da chave da API e do URL da base da API. Se você não configurou sua própria chave, a chave da API padrão ( bedrock
) será usada.
Agora, você pode experimentar as APIs proxy. Digamos que você queira testar o modelo Claude de 3 sonetos (ID do modelo: anthropic.claude-3-sonnet-20240229-v1:0
) ...
Exemplo de uso da API
export OPENAI_API_KEY= < API key >
export OPENAI_BASE_URL= < API base url >
# For older versions
# https://github.com/openai/openai-python/issues/624
export OPENAI_API_BASE= < API base url >
curl $OPENAI_BASE_URL /chat/completions
-H " Content-Type: application/json "
-H " Authorization: Bearer $OPENAI_API_KEY "
-d ' {
"model": "anthropic.claude-3-sonnet-20240229-v1:0",
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
} '
Exemplo de uso do SDK
from openai import OpenAI
client = OpenAI ()
completion = client . chat . completions . create (
model = "anthropic.claude-3-sonnet-20240229-v1:0" ,
messages = [{ "role" : "user" , "content" : "Hello!" }],
)
print ( completion . choices [ 0 ]. message . content )
Verifique o guia de uso para obter mais detalhes sobre como usar a API de incorporação, API multimodal e chamada de ferramenta.
A inferência entre região suporta acessar modelos de fundação em regiões, permitindo que os usuários invocem modelos hospedados em diferentes regiões da AWS para inferência. Principais vantagens:
Por favor, verifique a inferência da região transversal do Bedrock
LIMITAÇÃO: Atualmente, o Bedrock Access Gateway suporta apenas a inferência entre a região para os seguintes modelos:
Pré -requisitos:
Exemplo de uso da API:
us.anthropic.claude-3-5-sonnet-20240620-v1:0
curl $OPENAI_BASE_URL /chat/completions
-H " Content-Type: application/json "
-H " Authorization: Bearer $OPENAI_API_KEY "
-d ' {
"model": "us.anthropic.claude-3-5-sonnet-20240620-v1:0",
"max_tokens": 2048,
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
} '
Abaixo está uma imagem de configuração do modelo no Autogen Studio.
Certifique -se de usar ChatOpenAI(...)
em vez de OpenAI(...)
# pip install langchain-openai
import os
from langchain . chains import LLMChain
from langchain . prompts import PromptTemplate
from langchain_openai import ChatOpenAI
chat = ChatOpenAI (
model = "anthropic.claude-3-sonnet-20240229-v1:0" ,
temperature = 0 ,
openai_api_key = os . environ [ 'OPENAI_API_KEY' ],
openai_api_base = os . environ [ 'OPENAI_BASE_URL' ],
)
template = """Question: {question}
Answer: Let's think step by step."""
prompt = PromptTemplate . from_template ( template )
llm_chain = LLMChain ( prompt = prompt , llm = chat )
question = "What NFL team won the Super Bowl in the year Justin Beiber was born?"
response = llm_chain . invoke ( question )
print ( response )
Este aplicativo não coleta nenhum dos seus dados. Além disso, ele não registra nenhuma solicitação ou respostas por padrão.
A resposta curta é que o API Gateway não suporta eventos enviados pelo servidor (SSE) para a resposta de streaming.
Esta solução suporta apenas as regiões onde a Amazon Bedrock está disponível, pois por enquanto, abaixo estão a lista.
De um modo geral, todas as regiões que os suportes da Amazon Bedrock também serão suportados, se não, por favor, levante um problema no GitHub.
Observe que nem todos os modelos estão disponíveis nessas regiões.
Sim, você pode clonar o repositório e criar a imagem do contêiner sozinho ( src/Dockerfile
) e depois pressionar para o seu repositório ECR. Você pode usar scripts/push-to-ecr.sh
Substitua o URL do repo no modelo de formação de nuvem antes de implantar.
Sim, você pode executar isso localmente.
O URL da base da API deve parecer http://localhost:8000/api/v1
.
Comparando com a chamada SDK da AWS, a arquitetura referenciada trará latência adicional na resposta, você pode tentar testá -lo por conta própria.
Além disso, você pode usar o URL do Adaptador da Web Lambda + (consulte o exemplo) para substituir o ALB ou o AWS Fargate para substituir o Lambda para obter melhor desempenho na resposta ao streaming.
Atualmente, não há plano para apoiar modelos de sagemaker. Isso pode mudar, desde que haja uma demanda dos clientes.
Os modelos e modelos de ajuste fino com taxa de transferência provisionados atualmente não são suportados. Você pode clonar o repositório e fazer a personalização, se necessário.
Para usar os recursos mais recentes, você não precisa reimplantar a pilha de informações em nuvem. Você simplesmente precisa puxar a imagem mais recente.
Para fazer isso, depende de qual versão você implantou:
Deploy new image
e clique em Salvar.Tasks
, selecione a única tarefa que está em execução e simplesmente clique em Stop selected
. Uma nova tarefa com a imagem mais recente começará automaticamente. Consulte contribuindo para mais informações.
Esta biblioteca está licenciada sob a licença MIT-0. Veja o arquivo de licença.