Бесшовная интеграция с API Amazon Bedrock для создания текста и изображений с помощью искусственного интеллекта в Ruby? + ?. API Amazon Bedrock.
Amazon Bedrock — это полностью управляемый сервис, который делает FM от ведущих стартапов в области искусственного интеллекта и Amazon доступными через API, поэтому вы можете выбирать из широкого спектра FM, чтобы найти модель, которая лучше всего подходит для вашего варианта использования.
Добавьте следующую строку в Gemfile вашего приложения:
gem "ruby-amazon-bedrock" , "~> 0.2.4"
И затем выполните:
$ bundle install
Или установите с помощью:
$ gem install ruby-amazon-bedrock -v 0.2.4
и требуйте с:
require "amazon_bedrock"
Чтобы использовать Amazon Bedrock, вам потребуются безопасные учетные данные, как и для любого другого сервиса AWS. Получите ключи от AWS IAM (Управление идентификацией и доступом) https://us-east-1.console.aws.amazon.com/iam
Чтобы использовать Bedrock, вы должны запросить доступ к FM-каналам Bedrock. Для этого вам потребуются правильные разрешения IAM. Для некоторых моделей вам может сначала потребоваться предоставить сведения о сценарии использования, прежде чем вы сможете запросить доступ.
Имейте в виду, что при использовании драгоценного камня ruby-amazon-bedrock
в сочетании с Amazon Bedrock вы можете понести расходы, связанные с использованием сервисов Amazon Bedrock. Как пользователь вы несете единоличную ответственность за любые расходы, возникающие в результате использования Amazon Bedrock. Более подробную информацию о ценах можно посмотреть здесь
Создайте экземпляр клиента, передав свои учетные данные AWS IAM:
client = RubyAmazonBedrock :: Client . new (
region : "AWS_REGION" ,
access_key_id : "AWS_ACCESS_KEY_ID" ,
secret_access_key : "AWS_SECRET_ACCESS_KEY"
)
Или скопируйте .env.sample
в файл .env
с учетными данными вашей учетной записи и используйте переменную ENV
. ПРИМЕЧАНИЕ. Этот шаг НЕОБХОДИМ для запуска тестов с помощью 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" ]
)
Вы также можете использовать именованные профили AWS, передав аргумент ключевого слова profile
. При использовании именованного профиля указание region
, access_key_id
и access_token
не потребуется.
client = RubyAmazonBedrock :: Client . new (
profile : "AWS_PROFILE"
)
Аргумент options повышает гибкость метода, позволяя использовать дополнительные конфигурации для конкретной модели. Если это не указано явно, метод по умолчанию использует набор стандартных параметров модели. Вы можете увидеть более подробную информацию о дополнительных параметрах модели.
Amazon Bedrock — это полностью управляемый сервис, который делает FM от ведущих стартапов в области искусственного интеллекта и Amazon доступными через API, поэтому вы можете выбирать из широкого спектра FM, чтобы найти модель, которая лучше всего подходит для вашего варианта использования.
Компании используют семейство ведущих LLM компании AI21 Jurassic для создания генеративных приложений и услуг на основе искусственного интеллекта, использующих существующие организационные данные. Jurassic поддерживает межотраслевые варианты использования, включая генерацию длинных и кратких текстов, контекстные ответы на вопросы, обобщение и классификацию. Разработанный для выполнения инструкций на естественном языке, Jurassic обучается на огромном массиве веб-текста и поддерживает шесть языков помимо английского. Посмотреть больше...
Опции для этих моделей:
{
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
}
Для получения дополнительной документации о типах данных и значениях параметров вы можете [Подробнее...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-jurassic2.html]
Как вызвать модели AI21:
Юрский-2 Ультра
Поддерживает: ответы на вопросы открытой книги, обобщение, создание черновиков, извлечение информации, выдвижение идей.
Языки: английский, испанский, французский, немецкий, португальский, итальянский, голландский
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 } ,
Юрский-2 Мид
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 предварительно обучаются на больших наборах данных, что делает их мощными моделями общего назначения. Используйте их как есть или настраивайте, настраивая модели с собственными данными для конкретной задачи без аннотирования больших объемов данных. Посмотреть больше...
Опции для этих моделей:
{
temperature : 0.5 , # float
top_p : 0.5 , # float
max_tokens : 512 , # integer
stop_sequences : [ ] # [string]
}
Для получения дополнительной документации о типах данных и значениях параметров вы можете [Подробнее...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-text.html]
Как вызывать текстовые модели Amazon Titan:
Титан Текст G1 - Облегченный
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=amazon.titan-text-lite-v1
Поддерживает: генерацию текста, генерацию кода, расширенное форматирование текста, оркестровку (агенты), тонкую настройку.
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" } ] }
Титан Текст G1 - Экспресс
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" } ] }
Поддерживает: генерацию текста, генерацию кода, форматирование текста, оркестровку (агенты), тонкую настройку.
Anthropic предлагает семейство больших языковых моделей Claude, специально созданных для общения, обобщения, вопросов и ответов, автоматизации рабочих процессов, кодирования и многого другого. Первые клиенты сообщают, что Клод гораздо реже производит вредные результаты, с ним легче общаться и он более управляем, поэтому вы можете получить желаемый результат с меньшими усилиями. Клод также может определять личность, тон и поведение.
Опции для этих моделей:
{
temperature : 0.3 , # float
top_p : 0.5 , # float
top_k : 0.5 , # float
max_tokens : 1000 , # integer
stop_sequences : [ ] # [string]
}
Для получения дополнительной документации о типах данных и значениях параметров вы можете [Подробнее...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-claude.html]
Как вызвать антропные модели:
Клод Инстант 1.2
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=anthropic.claude-instant-v1
Поддержка: ответы на вопросы, извлечение информации, удаление личных данных, создание контента, классификация с множественным выбором, ролевая игра, сравнение текста, обобщение, вопросы и ответы по документам с цитированием.
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:" }
Клод 1.3
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=anthropic.claude-v1
Поддержка: ответы на вопросы, извлечение информации, удаление личных данных, создание контента, классификация с множественным выбором, ролевая игра, сравнение текста, обобщение, вопросы и ответы по документам с цитированием.
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:" }
Клод 2
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=anthropic.claude-v2
Поддержка: ответы на вопросы, извлечение информации, удаление личных данных, создание контента, классификация с множественным выбором, ролевая игра, сравнение текста, обобщение, вопросы и ответы по документам с цитированием.
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:" }
Модели Cohere — это модели генерации текста для бизнес-приложений. Модели Cohere обучаются на данных, которые поддерживают надежные бизнес-приложения, такие как генерация текста, обобщение, копирайтинг, диалог, извлечение и ответы на вопросы.
Варианты командных моделей:
{
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
}
Для получения дополнительной документации о типах данных и значениях параметров вы можете [Подробнее...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-cohere-command.html]
Как вызвать модели команд Cohere:
Команда
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=cohere.command-text-v14
Поддерживает: обобщение, копирайтинг, диалог, извлечение и ответы на вопросы.
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:" }
Командный свет
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=cohere.command-light-text-v14
Поддерживает: обобщение, копирайтинг, диалог, извлечение и ответы на вопросы.
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:" }
Варианты встраивания моделей:
{
input_type : 'classification' , # string
truncate : 'END' # string
}
Для получения дополнительной документации о типах данных и значениях параметров вы можете [Подробнее...][https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-embed.html]
Как вызвать встроенные модели Cohere:
Вставить английский
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=cohere.embed-english-v3
Поддерживает: семантический поиск, генерацию с расширенным поиском (RAG), классификацию, кластеризацию.
# WIP
# client.invoke_model(id: 'cohere.embed-english-v3', prompt: 'Your prompt goes here ...')
Встроить многоязычный
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 стремится раскрыть возможности больших языковых моделей. Наша последняя версия Llama теперь доступна частным лицам, авторам, исследователям и предприятиям любого размера, чтобы они могли экспериментировать, внедрять инновации и ответственно масштабировать свои идеи.
Опции для этих моделей:
{
max_tokens : 128 , # integer
temperature : 0.9 , # float
top_p : 0.7 # float
}
Как вызывать метамодели:
Лама 2 Чат 13B
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=meta.llama2-13b-chat-v1
Поддерживается: Llama 2 предназначена для коммерческого и исследовательского использования на английском языке. Точно настроенные модели чата предназначены для приложений на основе чата.
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" }
Лама 2 Чат 70B
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=meta.llama2-70b-chat-v1
Поддерживается: Llama 2 предназначена для коммерческого и исследовательского использования на английском языке. Точно настроенные модели чата предназначены для приложений на основе чата.
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 — ведущая в мире компания, занимающаяся генеративным искусственным интеллектом с открытым исходным кодом, сотрудничающая с партнерами из государственного и частного сектора, чтобы предоставить инфраструктуру следующего поколения глобальной аудитории.
Опции для этих моделей:
{
cfg_scale : 20 , # integer
seed : 1 , # integer
steps : 10 # integer
}
Как вызвать модели Stability AI:
СДХЛ 0,8
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=stability.stable-diffusion-xl-v0
Поддерживает: генерацию изображений, редактирование изображений.
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
}
Пример сгенерированного изображения
СДХЛ 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
}
Пример сгенерированного изображения