Integrasi yang Mulus dengan Amazon Bedrock API untuk Pembuatan Teks dan Gambar yang Didukung AI di Ruby? +?. API Batuan Dasar Amazon.
Amazon Bedrock adalah layanan terkelola sepenuhnya yang menjadikan FM dari startup AI terkemuka dan Amazon tersedia melalui API, sehingga Anda dapat memilih dari beragam FM untuk menemukan model yang paling sesuai dengan kasus penggunaan Anda.
Tambahkan baris berikut ke Gemfile aplikasi Anda:
gem "ruby-amazon-bedrock" , "~> 0.2.4"
Dan kemudian jalankan:
$ bundle install
Atau instal dengan:
$ gem install ruby-amazon-bedrock -v 0.2.4
dan membutuhkan dengan:
require "amazon_bedrock"
Untuk menggunakan Amazon Bedrock, Anda memerlukan kredensial aman sama seperti layanan AWS lainnya. Dapatkan kunci Anda dari AWS IAM (Identity and Access Management) https://us-east-1.console.aws.amazon.com/iam
Untuk menggunakan Bedrock, Anda harus meminta akses ke FM Bedrock. Untuk melakukannya, Anda harus memiliki Izin IAM yang benar. Untuk model tertentu, Anda mungkin perlu mengirimkan detail kasus penggunaan terlebih dahulu sebelum dapat meminta akses.
Ketahuilah bahwa dengan menggunakan permata ruby-amazon-bedrock
bersama dengan Amazon Bedrock, Anda mungkin dikenakan biaya terkait dengan penggunaan layanan Amazon Bedrock. Sebagai pengguna, Anda sepenuhnya bertanggung jawab atas setiap dan seluruh biaya yang timbul dari penggunaan Anda atas Amazon Bedrock. Anda dapat melihat detail lebih lanjut tentang harga di sini
Buat instance klien dengan meneruskan kredensial AWS IAM Anda:
client = RubyAmazonBedrock :: Client . new (
region : "AWS_REGION" ,
access_key_id : "AWS_ACCESS_KEY_ID" ,
secret_access_key : "AWS_SECRET_ACCESS_KEY"
)
Atau salin .env.sample
ke file .env
dengan kredensial akun Anda dan gunakan variabel ENV
. CATATAN: Langkah ini DIPERLUKAN untuk menjalankan pengujian dengan rspec
client = RubyAmazonBedrock :: Client . new (
region : ENV [ "AWS_REGION" ] ,
access_key_id : ENV [ "AWS_ACCESS_KEY_ID" ] ,
secret_access_key : ENV [ "AWS_SECRET_ACCESS_KEY" ]
)
Anda juga dapat menggunakan Profil Bernama AWS dengan meneruskan argumen keyboard profile
. Saat menggunakan profil bernama, menentukan region
, access_key_id
, dan access_token
tidak diperlukan.
client = RubyAmazonBedrock :: Client . new (
profile : "AWS_PROFILE"
)
Argumen opsi meningkatkan fleksibilitas metode dengan mengizinkan konfigurasi tambahan yang spesifik untuk model. Jika tidak disediakan secara eksplisit, metode ini akan ditetapkan secara default ke sekumpulan parameter Model standar. Anda dapat melihat detail selengkapnya tentang parameter opsional Model.
Amazon Bedrock adalah layanan terkelola sepenuhnya yang menjadikan FM dari startup AI terkemuka dan Amazon tersedia melalui API, sehingga Anda dapat memilih dari beragam FM untuk menemukan model yang paling sesuai dengan kasus penggunaan Anda.
Bisnis menggunakan keluarga LLM terkemuka Jurassic AI21 untuk membangun aplikasi dan layanan generatif berbasis AI yang memanfaatkan data organisasi yang ada. Jurassic mendukung kasus penggunaan lintas industri termasuk pembuatan teks panjang dan pendek, menjawab pertanyaan kontekstual, ringkasan, dan klasifikasi. Dirancang untuk mengikuti instruksi bahasa alami, Jurassic dilatih pada kumpulan teks web yang sangat besar dan mendukung enam bahasa selain bahasa Inggris. Lihat lebih lanjut...
Pilihan untuk model ini adalah:
{
temperature : 0.5 , # float
max_tokens : 200 , # integer
stop_sequences : [ ] , # [string]
top_p : 0.5 , # float
count_penalty : 0 , # integer
presence_penalty : 0 , # integer
frequency_penalty : 0 # integer
}
Untuk dokumentasi selengkapnya tentang tipe dan nilai data parameter, Anda dapat [Lihat detail selengkapnya...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-jurassic2.html]
Cara memanggil model AI21:
Jurassic-2 Ultra
Mendukung: Menjawab pertanyaan buku terbuka, ringkasan, pembuatan draf, ekstraksi informasi, pembuatan ide
Bahasa: Inggris, Spanyol, Perancis, Jerman, Portugis, Italia, Belanda
client . invoke_model ( id : 'ai21.j2-ultra-v1' , prompt : "What's natural language processing?" , options : { } )
# Response
{ :id => 1234 ,
:prompt =>
{ :text => "Describe how an LLM works" ,
:tokens =>
[ { :generatedToken => { :token => "▁Describe" , :logprob => - 10.674324035644531 , :raw_logprob => - 10.674324035644531 } ,
:completions =>
[ { :data =>
{ :text =>
" n Natural language processing (NLP) is a field of computer science, artificial intelligence, and linguistics concerned with the interactions between computers and human (natural) languages, in particular how to program computers to process and analyze large amounts of natural language data. The goal of NLP is to provide computers with the ability to read, understand, and generate human language." ,
:tokens =>
[ { :generatedToken => { :token => "<|newline|>" , :logprob => 0.0 , :raw_logprob => - 0.00046850196667946875 } ,
Jurassic-2 Pertengahan
client . invoke_model ( id : 'ai21.j2-mid-v1' , prompt : "What's GenAI?" , options : { } )
# Response
{ :id => 1234 ,
:prompt =>
{ :text => "What's GenAI?" ,
:tokens =>
[ { :generatedToken => { :token => "▁What's" , :logprob => - 9.553738594055176 , :raw_logprob => - 9.553738594055176 } ,
:topTokens => nil ,
:textRange => { :start => 0 , :end => 6 } } ,
:completions =>
[ { :data =>
{ :text =>
" n GenAI is a proposed standard for a generic AI language, which would allow AI systems to communicate and reason with each other in a common language. The goal of GenAI is to create a universal language that can be used by all AI systems, regardless of their specific task or underlying architecture. This would make it easier for AI systems to work together and learn from each other, and it would also make it easier for humans to interact with and understand AI systems." ,
:tokens =>
[ { :generatedToken => { :token => "<|newline|>" , :logprob => 0.0 , :raw_logprob => - 0.0009662011871114373 } ,
Amazon Titan Foundation Model telah dilatih sebelumnya pada kumpulan data besar, menjadikannya model yang kuat dan bertujuan umum. Gunakan model sebagaimana adanya, atau sesuaikan dengan menyempurnakan model dengan data Anda sendiri untuk tugas tertentu tanpa memberi anotasi pada data dalam jumlah besar. Lihat lebih lanjut...
Pilihan untuk model ini adalah:
{
temperature : 0.5 , # float
top_p : 0.5 , # float
max_tokens : 512 , # integer
stop_sequences : [ ] # [string]
}
Untuk dokumentasi selengkapnya tentang tipe dan nilai data parameter, Anda dapat [Lihat detail selengkapnya...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-text.html]
Cara memanggil model teks Amazon Titan:
Teks Titan G1 - Ringan
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=amazon.titan-text-lite-v1
Mendukung: Pembuatan teks, Pembuatan kode, Pemformatan teks kaya, Orkestrasi (Agen), Penyempurnaan.
client . invoke_model ( id : 'amazon.titan-text-lite-v1' , prompt : 'Generate a story about rubies and gems' , options : { } )
# Response
{ :inputTextTokenCount => 8 ,
:results =>
[ { :tokenCount => 294 ,
:outputText =>
" n Once upon a time, there was a king who was very fond of rubies and gems. He had a collection of the most beautiful rubies and gems ..." ,
:completionReason => "FINISH" } ] }
Teks Titan G1 - Ekspres
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=amazon.titan-text-express-v1
client . invoke_model ( id : 'amazon.titan-text-express-v1' , prompt : 'Generate a post about cats formatted with HTML tags' , options : { } )
# Response
{ :inputTextTokenCount => 9 ,
:results =>
[ { :tokenCount => 330 ,
:outputText =>
" n <h1>Cats</h1> n n Cats are small, furry, carnivorous mammals that are loved by many people around the world. They come in a variety of colors, shapes, and sizes, and have unique personalities that make them great companions. n n " ,
:completionReason => "FINISH" } ] }
Mendukung: Pembuatan teks, Pembuatan kode, Pemformatan teks kaya, Orkestrasi (Agen), Penyempurnaan
Anthropic menawarkan keluarga model bahasa besar Claude yang dibuat khusus untuk percakapan, ringkasan, tanya jawab, otomatisasi alur kerja, pengkodean, dan banyak lagi. Pelanggan awal melaporkan bahwa Claude jauh lebih kecil kemungkinannya untuk menghasilkan keluaran yang berbahaya, lebih mudah diajak berkomunikasi, dan lebih mudah dikendalikan - sehingga Anda bisa mendapatkan keluaran yang diinginkan dengan lebih sedikit usaha. Claude juga dapat menentukan arah kepribadian, nada suara, dan perilaku.
Pilihan untuk model ini adalah:
{
temperature : 0.3 , # float
top_p : 0.5 , # float
top_k : 0.5 , # float
max_tokens : 1000 , # integer
stop_sequences : [ ] # [string]
}
Untuk dokumentasi selengkapnya tentang tipe dan nilai data parameter, Anda dapat [Lihat detail selengkapnya...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-claude.html]
Cara memanggil model Antropik:
Claude Instan 1.2
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=anthropic.claude-instant-v1
Mendukung: Menjawab pertanyaan, ekstraksi informasi, menghapus PII, pembuatan konten, klasifikasi pilihan ganda, Roleplay, membandingkan teks, ringkasan, tanya jawab dokumen dengan kutipan
client . invoke_model ( id : 'anthropic.claude-instant-v1' , prompt : 'What is a neural network?' )
# Response
{ :completion =>
" A neural network is a type of machine learning model inspired by the human brain. The key elements of neural networks are: n n - Neurons..."
: stop_reason = > "stop_sequence" ,
:stop => " n n Human:" }
Claude 1.3
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=anthropic.claude-v1
Mendukung: Menjawab pertanyaan, ekstraksi informasi, menghapus PII, pembuatan konten, klasifikasi pilihan ganda, Roleplay, membandingkan teks, ringkasan, tanya jawab dokumen dengan kutipan
client . invoke_model ( id : 'anthropic.claude-v1' , prompt : "You will be acting as a AI customer success agent for a company called Acme Dynamics." )
# Response
{ :completion =>
" Okay, thanks for providing the context. My name is Claude, I'm an AI assistant created by Anthropic to be helpful, harmless, and honest. How can I assist you as a customer success agent for Acme Dynamics today?" ,
:stop_reason => "stop_sequence" ,
:stop => " n n Human:" }
Claude 2
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=anthropic.claude-v2
Mendukung: Menjawab pertanyaan, ekstraksi informasi, menghapus PII, pembuatan konten, klasifikasi pilihan ganda, Roleplay, membandingkan teks, ringkasan, tanya jawab dokumen dengan kutipan
client . invoke_model ( id : 'anthropic.claude-v2' , prompt : "I'm going to provide some text. I want to remove all person
ally identifying information from this text and replace it with XXX. It's very important that PII such as names, phone numbers,
and home and email addresses, get replaced with XXX." )
# Response
{ :completion =>
" Here is the text with personally identifying information replaced with XXX: n n XXX lives at XXX in the city of XXX. XXX can be reached at phone..." ,
:stop_reason => "stop_sequence" ,
:stop => " n n Human:" }
Model Cohere adalah model pembuatan teks untuk kasus penggunaan bisnis. Model Cohere dilatih pada data yang mendukung aplikasi bisnis yang andal, seperti pembuatan teks, peringkasan, copywriting, dialog, ekstraksi, dan menjawab pertanyaan.
Opsi untuk model perintah adalah:
{
temperature : 0.3 , # float
top_p : 0.5 , # float
top_k : 0.5 , # float
max_tokens : 1000 , # integer
stop_sequences : [ ] , # [string]
num_generations : 2 , # integer
return_likelihoods : 'ALL' , # string
stream : true , # boolean
truncate : 'END' # srtring
}
Untuk dokumentasi selengkapnya tentang tipe dan nilai data parameter, Anda dapat [Lihat detail selengkapnya...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-cohere-command.html]
Cara memanggil model perintah Cohere:
Memerintah
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=cohere.command-text-v14
Mendukung: Peringkasan, copywriting, dialog, ekstraksi, dan menjawab pertanyaan.
client . invoke_model ( id : 'cohere.command-text-v14' , prompt : 'Generate a twit about why Ruby on Rails is a great tool for building a startup. Write a few hashtags' )
# Response
{ :generations =>
[ { :finish_reason => "COMPLETE" ,
:id => "b82658a5-8f36-4a94-a1f1-7802aa418904" ,
:text =>
" Sure! Here's a tweet: n n Ruby on Rails is a powerful framework for building web applications. It is highly scalable, has robust community support, and is the perfect choice for startups looking to build fast and ship often. #RoR #RubyOnRails #Startup #Tech #Efficient n n What do you think?" } ] ,
:id => "d5d5149f-ea5a-47ae-ae37-8324882b06c7" ,
:prompt => "Generate a twit about why Ruby on Rails is a great tool for building a startup. Write a few hashtags:" }
Lampu Perintah
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=cohere.command-light-text-v14
Mendukung: Peringkasan, copywriting, dialog, ekstraksi, dan menjawab pertanyaan.
client . invoke_model ( id : 'cohere.command-light-text-v14' , prompt : 'Generate a facebook post about GenAI models available at Amazon Bedrock' )
# Response
{ :generations =>
[ { :finish_reason => "MAX_TOKENS" ,
:id => "b58eaa37-915e-4f26-b37c-6b4875516648" ,
:text =>
" Introducing the latest innovation at Amazon Bedrock - our state-of-the-art GenAI models! ? n n Our team has been working tirelessly to bring you the best in artificial intelligence, and we're excited to share the results with you. With our GenAI models, you can now: n n - Develop applications that can understand and respond to human language with incredible accuracy, thanks to our state-of-the-art Large Language Models (LLMs). n -" } ] ,
:id => "0d2f2c74-cae9-434b-b5d5-f44aaeb1a587" ,
:prompt => "Generate a facebook post about GenAI models available at Amazon Bedrock:" }
Opsi untuk model penyematan adalah:
{
input_type : 'classification' , # string
truncate : 'END' # string
}
Untuk dokumentasi selengkapnya tentang tipe dan nilai data parameter, Anda dapat [Lihat detail selengkapnya...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-embed.html]
Cara memanggil model penyematan Cohere:
Sematkan bahasa Inggris
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=cohere.embed-english-v3
Mendukung: Pencarian semantik, retrieval-augmented generation (RAG), klasifikasi, pengelompokan.
# WIP
# client.invoke_model(id: 'cohere.embed-english-v3', prompt: 'Your prompt goes here ...')
Sematkan Multibahasa
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=cohere.embed-multilingual-v3
# WIP
# client.invoke_model(id: 'cohere.embed-multilingual-v3', prompt: 'Your prompt goes here ...')
Meta ingin membuka kekuatan model bahasa besar. Llama versi terbaru kami kini dapat diakses oleh individu, pencipta, peneliti, dan bisnis dari segala ukuran sehingga mereka dapat bereksperimen, berinovasi, dan mengembangkan ide-ide mereka secara bertanggung jawab.
Pilihan untuk model ini adalah:
{
max_tokens : 128 , # integer
temperature : 0.9 , # float
top_p : 0.7 # float
}
Cara memanggil model Meta:
Llama 2 Obrolan 13B
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=meta.llama2-13b-chat-v1
Mendukung: Llama 2 ditujukan untuk penggunaan komersial dan penelitian dalam bahasa Inggris. Model obrolan yang disempurnakan ditujukan untuk aplikasi berbasis obrolan.
client . invoke_model ( id : 'meta.llama2-13b-chat-v1' , prompt : 'Generate an Instagram Post about the Metaverse' )
# Resopnse
{ :generation =>
" n n Hey #Instagram community! I'm super excited to share my latest discovery with you all - the #Metaverse! ? n n Have you heard of it? It's like a virtual world where you can be anyone and do anything! ? From exploring new planets to attending virtual concerts, the possibilities are endless! ? n n I've been spending some time in the #Metaverse lately, and let me tell you, it's a game changer! Not only is it a ton of fun, but it's also a great way to connect with people from all over the world. ? n n I've made some amazing friends in the #Metaverse, and we've had some incredible adventures together! ?? n n So, what are you waiting for? Come join me in the #Metaverse and let's explore this amazing virtual world together! ? n n #Metaverse #VirtualReality #VR #Gaming #Adventure #Fun #Community #Friends #Instagram #SocialMedia" ,
:prompt_token_count => 11 ,
:generation_token_count => 275 ,
:stop_reason => "stop" }
Llama 2 Obrolan 70B
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=meta.llama2-70b-chat-v1
Mendukung: Llama 2 ditujukan untuk penggunaan komersial dan penelitian dalam bahasa Inggris. Model obrolan yang disempurnakan ditujukan untuk aplikasi berbasis obrolan.
client . invoke_model ( id : 'meta.llama2-70b-chat-v1' , prompt : 'Generate a Facebook add to promote a new website that is selling Ruby on Rails and AI courses' )
# Response
{ :generation =>
". n n The ad should be targeted at people who are interested in learning Ruby on Rails and AI, and should highlight the benefits of taking the courses on the website. n n Here is a sample ad that could be used to promote the website: n n Headline: Unlock Your Potential with Ruby on Rails and AI Courses n n Body: Are you interested in learning Ruby on Rails and AI? Look no further! Our website offers a range of courses that will teach you everything you need to know to get started with these exciting technologies. n n Our Ruby on Rails courses will show you how to build powerful web applications using the popular framework, while our AI courses will teach you the fundamentals of machine learning and deep learning. ..." ,
:prompt_token_count => 22 ,
:generation_token_count => 512 ,
:stop_reason => "length" }
Stability AI adalah perusahaan kecerdasan buatan generatif sumber terbuka terkemuka di dunia, yang berkolaborasi dengan mitra sektor publik dan swasta untuk menghadirkan infrastruktur generasi berikutnya ke khalayak global.
Pilihan untuk model ini adalah:
{
cfg_scale : 20 , # integer
seed : 1 , # integer
steps : 10 # integer
}
Cara memanggil model Stabilitas AI:
SDXL 0.8
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=stability.stable-diffusion-xl-v0
Mendukung: pembuatan gambar, pengeditan gambar
client . invoke_model ( id : 'stability.stable-diffusion-xl-v0' , prompt : 'Generate an image of an orca jumping out of the water' , options : { file_path : 'path/to/your/image.jpg' } )
# NOTE: If file_path is not provided the image will be saved at 'image.jpg'
# Success Response
{
result : :success ,
file_path : 'path/to/your/image.jpg'
}
# Failure Response
{
result : :failure ,
error : ErrorClass
}
Contoh gambar yang dihasilkan
SDXL 1.0
client . invoke_model ( id : 'stability.stable-diffusion-xl-v1' , prompt : 'Generate an image of a white gold ring with a ruby on it' , options : { file_path : 'path/to/your/image.jpg' } )
# NOTE: If file_path is not provided the image will be saved at 'image.jpg'
# Success Response
{
result : :success ,
file_path : 'path/to/your/image.jpg'
}
# Failure Response
{
result : :failure ,
error : ErrorClass
}
Contoh gambar yang dihasilkan