Ruby에서 AI 기반 텍스트 및 이미지 생성을 위해 Amazon Bedrock API와 원활하게 통합 ? +?. 아마존 베드락 API.
Amazon Bedrock은 API를 통해 선도적인 AI 스타트업과 Amazon의 FM을 제공하는 완전 관리형 서비스이므로 다양한 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(ID 및 액세스 관리) https://us-east-1.console.aws.amazon.com/iam에서 키 가져오기
Bedrock을 사용하려면 Bedrock의 FM에 대한 액세스를 요청해야 합니다. 이렇게 하려면 올바른 IAM 권한이 필요합니다. 특정 모델의 경우 액세스 권한을 요청하기 전에 먼저 사용 사례 세부 정보를 제출해야 할 수도 있습니다.
Amazon Bedrock과 함께 ruby-amazon-bedrock
gem을 사용하면 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" ]
)
profile
키워드 인수를 전달하여 AWS 명명된 프로필을 사용할 수도 있습니다. 명명된 프로필을 사용하는 경우 region
, access_key_id
및 access_token
지정할 필요가 없습니다.
client = RubyAmazonBedrock :: Client . new (
profile : "AWS_PROFILE"
)
options 인수는 추가 모델별 구성을 허용하여 메서드의 유연성을 향상시킵니다. 명시적으로 제공되지 않은 경우 메서드는 기본적으로 표준 모델 매개변수 집합을 사용합니다. 모델의 선택적 매개변수에 대한 자세한 내용을 볼 수 있습니다.
Amazon Bedrock은 API를 통해 선도적인 AI 스타트업과 Amazon의 FM을 제공하는 완전 관리형 서비스이므로 다양한 FM 중에서 선택하여 사용 사례에 가장 적합한 모델을 찾을 수 있습니다.
기업에서는 AI21의 Jurassic 선도 LLM 제품군을 사용하여 기존 조직 데이터를 활용하는 생성적 AI 기반 애플리케이션 및 서비스를 구축합니다. Jurassic은 장문 및 단문 텍스트 생성, 상황별 질문 답변, 요약 및 분류를 포함한 산업 간 사용 사례를 지원합니다. 자연어 지침을 따르도록 설계된 Jurassic은 방대한 웹 텍스트 모음에서 훈련되었으며 영어 외에 6개 언어를 지원합니다. 더 보기 ...
이 모델의 옵션은 다음과 같습니다.
{
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 기초 모델은 대규모 데이터 세트에 대해 사전 훈련되어 강력한 범용 모델이 됩니다. 그대로 사용하거나, 대량의 데이터에 주석을 달지 않고도 특정 작업에 대해 자체 데이터로 모델을 미세 조정하여 사용자 정의할 수 있습니다. 더 보기 ...
이 모델의 옵션은 다음과 같습니다.
{
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은 대화, 요약, Q&A, 작업 흐름 자동화, 코딩 등을 위해 특별히 제작된 Claude 대규모 언어 모델 제품군을 제공합니다. 초기 고객들은 Claude가 유해한 결과물을 생성할 가능성이 훨씬 적고, 대화하기 쉽고, 조종하기가 더 쉽다고 보고합니다. 따라서 더 적은 노력으로 원하는 결과물을 얻을 수 있습니다. 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
지원: 질문 답변, 정보 추출, PII 제거, 콘텐츠 생성, 객관식 분류, 역할극, 텍스트 비교, 요약, 인용이 포함된 문서 Q&A
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
지원: 질문 답변, 정보 추출, PII 제거, 콘텐츠 생성, 객관식 분류, 역할극, 텍스트 비교, 요약, 인용이 포함된 문서 Q&A
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
지원: 질문 답변, 정보 추출, PII 제거, 콘텐츠 생성, 객관식 분류, 역할극, 텍스트 비교, 요약, 인용이 포함된 문서 Q&A
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 모델을 호출하는 방법:
SDXL 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
}
생성된 이미지 예시
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
}
생성된 이미지 예시