中文
API RESTful yang kompatibel dengan Openai untuk Amazon Bedrock
Kode sumber direfaktor dengan API Converse oleh Bedrock baru yang menyediakan dukungan asli dengan panggilan alat.
Jika Anda menghadapi masalah, silakan angkat masalah.
Amazon Bedrock menawarkan berbagai model pondasi (seperti Claude 3 Opus/Sonnet/Haiku, Llama 2/3, Mistral/Mixtral, dll.) Dan serangkaian kemampuan luas bagi Anda untuk membangun aplikasi AI generatif. Periksa halaman pendaratan Amazon Bedrock untuk informasi tambahan.
Terkadang, Anda mungkin memiliki aplikasi yang dikembangkan menggunakan OpenAI API atau SDK, dan Anda ingin bereksperimen dengan Amazon Bedrock tanpa memodifikasi basis kode Anda. Atau Anda mungkin hanya ingin mengevaluasi kemampuan model -model fondasi ini dalam alat -alat seperti Autogen dll. Nah, repositori ini memungkinkan Anda untuk mengakses model Amazon Bedrock dengan mulus melalui OpenAI API dan SDK, memungkinkan Anda untuk menguji model ini tanpa perubahan kode.
Jika Anda menemukan repositori github ini berguna, silakan pertimbangkan untuk memberikan bintang gratis untuk menunjukkan apresiasi dan dukungan Anda untuk proyek tersebut.
Fitur:
Silakan periksa Panduan Penggunaan untuk detail lebih lanjut tentang cara menggunakan API baru.
CATATAN: API Penyelesaian Teks Legacy tidak didukung, Anda harus mengubah untuk menggunakan API penyelesaian obrolan.
Model Amazon Bedrock yang Didukung Keluarga:
Anda dapat menghubungi API models
untuk mendapatkan daftar lengkap ID model yang didukung.
Catatan: Model default diatur ke
anthropic.claude-3-sonnet-20240229-v1:0
yang dapat diubah melalui variabel lingkungan Lambda (DEFAULT_MODEL
).
Pastikan Anda telah bertemu di bawah ini prasyarat:
Untuk informasi lebih lanjut tentang cara meminta akses model, silakan merujuk ke Panduan Pengguna Amazon Bedrock (Siapkan> Model Access)
Diagram berikut menggambarkan arsitektur referensi. Perhatikan bahwa itu juga termasuk VPC baru dengan dua subnet publik hanya untuk penyeimbang beban aplikasi (ALB).
Anda juga dapat memilih untuk menggunakan AWS Fargate di belakang ALB, bukan AWS Lambda, perbedaan utamanya adalah latensi byte pertama untuk respons streaming (Fargate lebih rendah).
Atau, Anda dapat menggunakan URL fungsi lambda untuk menggantikan ALB, lihat contoh
Harap ikuti langkah -langkah di bawah ini untuk menggunakan API Proxy Bedrock ke akun AWS Anda. Hanya mendukung daerah di mana Amazon Bedrock tersedia (seperti us-west-2
). Penempatan akan memakan waktu sekitar 3-5 menit .
Langkah 1: Buat kunci API khusus Anda sendiri (opsional)
Catatan: Langkah ini adalah menggunakan string apa pun (tanpa spasi) Anda ingin membuat kunci API khusus (kredensial) yang akan digunakan untuk mengakses API proxy nanti. Kunci ini tidak harus cocok dengan kunci OpenAI Anda yang sebenarnya, dan Anda tidak perlu memiliki kunci API OpenAI. Dianjurkan agar Anda mengambil langkah ini dan memastikan bahwa Anda menjaga kunci dan pribadi.
Langkah 2: Menyebarkan tumpukan CloudFormation
Alb + Lambda
Alb + Fargate
BedrockProxyAPIKey
). Jika Anda tidak mengatur kunci API, biarkan bidang ini kosong. Klik "Next". Hanya itu saja! ? Setelah dikerahkan, klik CloudFormation Stack dan buka tab Outputs , Anda dapat menemukan URL dasar API dari APIBaseUrl
, nilainya akan terlihat seperti http://xxxx.xxx.elb.amazonaws.com/api/v1
.
Yang Anda butuhkan hanyalah kunci API dan URL basis API. Jika Anda tidak mengatur kunci Anda sendiri, maka kunci API default ( bedrock
) akan digunakan.
Sekarang, Anda dapat mencoba API proxy. Katakanlah Anda ingin menguji model Sonnet Claude 3 (Model ID: anthropic.claude-3-sonnet-20240229-v1:0
) ...
Contoh Penggunaan 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!"
}
]
} '
Contoh Penggunaan 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 )
Silakan periksa Panduan Penggunaan untuk detail lebih lanjut tentang cara menggunakan embedding API, Multimodal API, dan panggilan alat.
Inferensi lintas wilayah mendukung mengakses model yayasan di seluruh wilayah, yang memungkinkan pengguna untuk memanggil model yang di-host di berbagai daerah AWS untuk inferensi. Keuntungan utama:
Harap periksa inferensi lintas-wilayah Bedrock
Batasan: Saat ini, Gateway Akses Bedrock hanya mendukung inferensi lintas wilayah untuk model-model berikut:
Prasyarat:
Contoh Penggunaan 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!"
}
]
} '
Di bawah ini adalah gambar pengaturan model di Autogen Studio.
Pastikan Anda menggunakan ChatOpenAI(...)
alih -alih 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 )
Aplikasi ini tidak mengumpulkan data Anda. Selain itu, tidak mencatat permintaan atau tanggapan apa pun secara default.
Jawaban singkatnya adalah bahwa API Gateway tidak mendukung Events-Sent Events (SSE) untuk respons streaming.
Solusi ini hanya mendukung daerah di mana Amazon Bedrock tersedia, seperti saat ini, di bawah ini adalah daftarnya.
Secara umum, semua wilayah yang didukung Amazon Bedrock juga akan didukung, jika tidak, silakan angkat masalah di GitHub.
Perhatikan bahwa tidak semua model tersedia di wilayah tersebut.
Ya, Anda dapat mengkloning repo dan membangun gambar wadah sendiri ( src/Dockerfile
) dan kemudian mendorong ke repo ECR Anda. Anda dapat menggunakan scripts/push-to-ecr.sh
Ganti URL repo di templat CloudFormation sebelum Anda menggunakan.
Ya, Anda dapat menjalankan ini secara lokal.
URL dasar API harus terlihat seperti http://localhost:8000/api/v1
.
Dibandingkan dengan panggilan AWS SDK, arsitektur yang direferensikan akan membawa latensi tambahan pada respons, Anda dapat mencoba dan mengujinya sendiri.
Juga, Anda dapat menggunakan Lambda Web Adapter + URL fungsi (lihat contoh) untuk menggantikan ALB atau AWS Fargate untuk menggantikan Lambda untuk mendapatkan kinerja yang lebih baik pada respons streaming.
Saat ini, tidak ada rencana untuk mendukung model Sagemaker. Ini dapat berubah asalkan ada permintaan dari pelanggan.
Model dan model yang disempurnakan dengan throughput yang disediakan saat ini tidak didukung. Anda dapat mengkloning repo dan membuat kustomisasi jika diperlukan.
Untuk menggunakan fitur -fitur terbaru, Anda tidak perlu menggunakan kembali tumpukan CloudFormation. Anda hanya perlu menarik gambar terbaru.
Untuk melakukannya, tergantung pada versi mana yang Anda gunakan:
Deploy new image
dan klik Simpan.Tasks
, pilih satu -satunya tugas yang berjalan dan cukup klik Stop selected
. Tugas baru dengan gambar terbaru akan dimulai secara otomatis. Lihat berkontribusi untuk informasi lebih lanjut.
Perpustakaan ini dilisensikan di bawah lisensi MIT-0. Lihat file lisensi.