Nahtlose Integration mit der Amazon Bedrock API für KI-gestützte Text- und Bildgenerierung in Ruby? + ?. Amazon Bedrock-API.
Amazon Bedrock ist ein vollständig verwalteter Dienst, der FMs von führenden KI-Startups und Amazon über eine API verfügbar macht, sodass Sie aus einer breiten Palette von FMs auswählen können, um das Modell zu finden, das für Ihren Anwendungsfall am besten geeignet ist.
Fügen Sie der Gemfile Ihrer Anwendung die folgende Zeile hinzu:
gem "ruby-amazon-bedrock" , "~> 0.2.4"
Und dann ausführen:
$ bundle install
Oder installieren Sie mit:
$ gem install ruby-amazon-bedrock -v 0.2.4
und erfordern mit:
require "amazon_bedrock"
Um Amazon Bedrock nutzen zu können, benötigen Sie wie bei jedem anderen AWS-Service Ihre sicheren Anmeldeinformationen. Holen Sie sich Ihre Schlüssel von AWS IAM (Identity and Access Management) https://us-east-1.console.aws.amazon.com/iam
Um Bedrock nutzen zu können, müssen Sie Zugriff auf die FMs von Bedrock anfordern. Dazu benötigen Sie die richtigen IAM-Berechtigungen. Bei bestimmten Modellen müssen Sie möglicherweise zunächst Anwendungsfalldetails übermitteln, bevor Sie Zugriff anfordern können.
Beachten Sie, dass Ihnen durch die Nutzung ruby-amazon-bedrock
gem in Verbindung mit Amazon Bedrock Kosten im Zusammenhang mit der Nutzung der Amazon Bedrock-Dienste entstehen können. Als Nutzer tragen Sie die alleinige Verantwortung für sämtliche Kosten, die durch die Nutzung von Amazon Bedrock entstehen. Weitere Einzelheiten zu den Preisen finden Sie hier
Instanziieren Sie einen Client, indem Sie Ihre AWS IAM-Anmeldeinformationen übergeben:
client = RubyAmazonBedrock :: Client . new (
region : "AWS_REGION" ,
access_key_id : "AWS_ACCESS_KEY_ID" ,
secret_access_key : "AWS_SECRET_ACCESS_KEY"
)
Oder kopieren Sie das .env.sample
mit den Anmeldeinformationen Ihres Kontos in eine .env
Datei und verwenden Sie die ENV
Variable. HINWEIS: Dieser Schritt ist ERFORDERLICH, um die Tests mit rspec
auszuführen
client = RubyAmazonBedrock :: Client . new (
region : ENV [ "AWS_REGION" ] ,
access_key_id : ENV [ "AWS_ACCESS_KEY_ID" ] ,
secret_access_key : ENV [ "AWS_SECRET_ACCESS_KEY" ]
)
Sie können auch AWS Named Profiles verwenden, indem Sie das Schlüsselwortargument profile
übergeben. Bei Verwendung eines benannten Profils ist die Angabe von region
, access_key_id
und access_token
nicht erforderlich.
client = RubyAmazonBedrock :: Client . new (
profile : "AWS_PROFILE"
)
Das Optionsargument erhöht die Flexibilität der Methode, indem es zusätzliche modellspezifische Konfigurationen ermöglicht. Sofern nicht explizit angegeben, verwendet die Methode standardmäßig einen Satz Standardmodellparameter. Sie können weitere Details zu den optionalen Parametern eines Modells anzeigen.
Amazon Bedrock ist ein vollständig verwalteter Dienst, der FMs von führenden KI-Startups und Amazon über eine API verfügbar macht, sodass Sie aus einer breiten Palette von FMs auswählen können, um das Modell zu finden, das für Ihren Anwendungsfall am besten geeignet ist.
Unternehmen nutzen die Jurassic-Familie führender LLMs von AI21, um generative KI-gesteuerte Anwendungen und Dienste zu entwickeln, die vorhandene Unternehmensdaten nutzen. Jurassic unterstützt branchenübergreifende Anwendungsfälle, einschließlich der Generierung von Lang- und Kurztexten, der kontextbezogenen Beantwortung von Fragen, der Zusammenfassung und der Klassifizierung. Jurassic ist so konzipiert, dass es Anweisungen in natürlicher Sprache folgt. Es basiert auf einem umfangreichen Korpus an Webtexten und unterstützt neben Englisch sechs Sprachen. Mehr sehen ...
Optionen für diese Modelle sind:
{
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
}
Weitere Dokumentation zu den Parameterdatentypen und -werten finden Sie unter [Weitere Details anzeigen...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-jurassic2.html]
So rufen Sie AI21-Modelle auf:
Jurassic-2 Ultra
Unterstützt: Beantwortung offener Buchfragen, Zusammenfassung, Entwurfserstellung, Informationsextraktion, Ideenfindung
Sprachen: Englisch, Spanisch, Französisch, Deutsch, Portugiesisch, Italienisch, Niederländisch
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 Mitte
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-Modelle werden anhand großer Datensätze vorab trainiert, was sie zu leistungsstarken Allzweckmodellen macht. Verwenden Sie sie unverändert oder passen Sie sie an, indem Sie die Modelle mit Ihren eigenen Daten für eine bestimmte Aufgabe verfeinern, ohne große Datenmengen zu kommentieren. Mehr sehen ...
Optionen für diese Modelle sind:
{
temperature : 0.5 , # float
top_p : 0.5 , # float
max_tokens : 512 , # integer
stop_sequences : [ ] # [string]
}
Weitere Dokumentation zu den Parameterdatentypen und -werten finden Sie unter [Weitere Details anzeigen...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-text.html]
So rufen Sie Amazon Titan-Textmodelle auf:
Titan Text G1 - Lite
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=amazon.titan-text-lite-v1
Unterstützt: Textgenerierung, Codegenerierung, Rich-Text-Formatierung, Orchestrierung (Agenten), Feinabstimmung.
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" } ] }
Titan Text G1 - Express
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" } ] }
Unterstützt: Textgenerierung, Codegenerierung, Rich-Text-Formatierung, Orchestrierung (Agenten), Feinabstimmung
Anthropic bietet die Claude-Familie großer Sprachmodelle, die speziell für Gespräche, Zusammenfassungen, Fragen und Antworten, Workflow-Automatisierung, Codierung und mehr entwickelt wurden. Frühe Kunden berichten, dass die Wahrscheinlichkeit, dass Claude schädliche Ergebnisse produziert, viel geringer ist, dass es einfacher ist, mit ihm zu sprechen, und dass er besser steuerbar ist – sodass Sie mit weniger Aufwand die gewünschte Leistung erzielen können. Claude kann auch Anweisungen zu Persönlichkeit, Ton und Verhalten geben.
Optionen für diese Modelle sind:
{
temperature : 0.3 , # float
top_p : 0.5 , # float
top_k : 0.5 , # float
max_tokens : 1000 , # integer
stop_sequences : [ ] # [string]
}
Weitere Dokumentation zu den Parameterdatentypen und -werten finden Sie unter [Weitere Details anzeigen...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-claude.html]
So rufen Sie anthropische Modelle auf:
Claude Instant 1.2
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=anthropic.claude-instant-v1
Unterstützt: Beantwortung von Fragen, Informationsextraktion, Entfernung personenbezogener Daten, Generierung von Inhalten, Multiple-Choice-Klassifizierung, Rollenspiel, Textvergleich, Zusammenfassung, Fragen und Antworten zu Dokumenten mit Zitierung
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
Unterstützt: Beantwortung von Fragen, Informationsextraktion, Entfernung personenbezogener Daten, Generierung von Inhalten, Multiple-Choice-Klassifizierung, Rollenspiel, Textvergleich, Zusammenfassung, Fragen und Antworten zu Dokumenten mit Zitierung
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
Unterstützt: Beantwortung von Fragen, Informationsextraktion, Entfernung personenbezogener Daten, Generierung von Inhalten, Multiple-Choice-Klassifizierung, Rollenspiel, Textvergleich, Zusammenfassung, Fragen und Antworten zu Dokumenten mit Zitierung
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:" }
Kohärente Modelle sind Textgenerierungsmodelle für geschäftliche Anwendungsfälle. Cohere-Modelle werden auf Daten trainiert, die zuverlässige Geschäftsanwendungen wie Textgenerierung, Zusammenfassung, Texterstellung, Dialog, Extraktion und Beantwortung von Fragen unterstützen.
Optionen für Befehlsmodelle sind:
{
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
}
Weitere Dokumentation zu den Parameterdatentypen und -werten finden Sie unter [Weitere Details anzeigen...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-cohere-command.html]
So rufen Sie Cohere-Befehlsmodelle auf:
Befehl
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=cohere.command-text-v14
Unterstützt: Zusammenfassung, Texterstellung, Dialog, Extraktion und Beantwortung von Fragen.
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:" }
Befehlslicht
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=cohere.command-light-text-v14
Unterstützt: Zusammenfassung, Texterstellung, Dialog, Extraktion und Beantwortung von Fragen.
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:" }
Optionen zum Einbetten von Modellen sind:
{
input_type : 'classification' , # string
truncate : 'END' # string
}
Weitere Dokumentation zu den Parameterdatentypen und -werten finden Sie unter [Weitere Details anzeigen...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-embed.html]
So rufen Sie Cohere-Einbettungsmodelle auf:
Englisch einbetten
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=cohere.embed-english-v3
Unterstützt: Semantische Suche, Retrieval-Augmented Generation (RAG), Klassifizierung, Clustering.
# WIP
# client.invoke_model(id: 'cohere.embed-english-v3', prompt: 'Your prompt goes here ...')
Mehrsprachig einbetten
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 möchte die Leistungsfähigkeit großer Sprachmodelle erschließen. Unsere neueste Version von Llama ist jetzt für Einzelpersonen, Entwickler, Forscher und Unternehmen jeder Größe zugänglich, damit sie verantwortungsvoll experimentieren, Innovationen entwickeln und ihre Ideen skalieren können.
Optionen für diese Modelle sind:
{
max_tokens : 128 , # integer
temperature : 0.9 , # float
top_p : 0.7 # float
}
So rufen Sie Metamodelle auf:
Lama 2 Chat 13B
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=meta.llama2-13b-chat-v1
Unterstützt: Llama 2 ist für kommerzielle und Forschungszwecke in englischer Sprache gedacht. Fein abgestimmte Chat-Modelle sind für chatbasierte Anwendungen gedacht.
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" }
Lama 2 Chat 70B
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=meta.llama2-70b-chat-v1
Unterstützt: Llama 2 ist für kommerzielle und Forschungszwecke in englischer Sprache gedacht. Fein abgestimmte Chat-Modelle sind für chatbasierte Anwendungen gedacht.
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 ist das weltweit führende Open-Source-Unternehmen für generative künstliche Intelligenz und arbeitet mit Partnern aus dem öffentlichen und privaten Sektor zusammen, um einem globalen Publikum die Infrastruktur der nächsten Generation zugänglich zu machen.
Optionen für diese Modelle sind:
{
cfg_scale : 20 , # integer
seed : 1 , # integer
steps : 10 # integer
}
So rufen Sie Stabilitäts-KI-Modelle auf:
SDXL 0,8
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=stability.stable-diffusion-xl-v0
Unterstützt: Bildgenerierung, Bildbearbeitung
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
}
Beispiel generiertes Bild
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
}
Beispiel generiertes Bild