こんにちはー!NTです!
アドベントカレンダーということで連日みんなでカレンダー書いているわけですが、
今年もなんとか全日埋めれそうで一安心しております!!
早速ですが、前回書かせていただいたクラウドに関連して
最近生成AI系で話題になった(私調べ)Amazon Bedrockについて使って行こうと思います!
そもそもAmazon Bedrockとは?
Amazon Bedrock は、AI21 Labs、Anthropic、Cohere、Meta、Stability AI、Amazon などの大手 AI 企業が提供する高性能な基盤モデル (FM) を単一の API で選択できるフルマネージド型サービスです。また、生成系 AI アプリケーションの構築に必要な幅広い機能も備えているため、プライバシーとセキュリティを維持しながら開発を簡素化できます。
結構生成AI系ってAzure、GCPも出して来ててAWSが遅れたため株価が少し下がったみたいな話も
聞いたりしますが、とはいえAWSサービスを使ってる現場が圧倒的過ぎてるので
後は価格競争をみんなでしてくれればなと思っています。
早速ですが、AWSのドキュメントを参考にPythonからBedrockを呼び出してみましょう!
※Bedrockにはチャットのような画面も用意されていますが、実践的にプログラムから呼び出すことを想定してPythonのAWS SDKであるBoto3から呼ぶこととします。
使用モデル:https://aws.amazon.com/jp/bedrock/claude/
ドキュメント:https://docs.aws.amazon.com/bedrock/latest/userguide/api-methods-run-inference.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import boto3 import json brt = boto3.client(service_name='bedrock-runtime', region_name='us-east-1') body = json.dumps({ "prompt": "\n\nHuman: explain black holes to 8th graders\n\nAssistant:", "max_tokens_to_sample": 1000, "temperature": 0.1, "top_p": 0.9, }) modelId = 'anthropic.claude-v2:1' accept = 'application/json' contentType = 'application/json' response = brt.invoke_model(body=body, modelId=modelId, accept=accept, contentType=contentType) response_body = json.loads(response.get('body').read()) # text print(response_body.get('completion')) |
※ドキュメントとの差は以下の点です。
・使用リージョンを指定
・max_tokens_to_sample(生成される最大トークン数)を300から1000に変更
・モデルをv2からv2.1に変更
レスポンスは以下の通りです。
1 2 3 4 5 |
Here is how I would explain black holes to 8th graders: A black hole is a place in space where gravity pulls so much that even light can not get out. Gravity is what pulls things toward each other. The more mass something has, the stronger its gravity. Black holes have an extremely large amount of mass packed into a very small area. This gives them gravity that is so strong, not even light can escape once it gets close. To help visualize it, imagine the Earth being squeezed smaller and smaller. As it gets compressed into a tiny space, its gravity gets stronger and stronger because all that mass is now concentrated in one spot. If you squeezed the Earth down to the size of a peanut, the gravity would be so strong that not even light could escape - it would become a black hole! We can't directly see black holes since no light comes out. But we can observe their effects on things around them. Any gas or dust or stars that get very close to the black hole get stretched and pulled by the strong gravity, creating a disk of material swirling around it that we can see. We also detect black holes from the X-rays and radio waves emitted from this hot swirling material. So in summary - black holes have gravity so incredibly strong from concentrating lots of mass into a tiny space that not even light can escape once it's near the black hole. Cool and weird things for bending space, time, and our understanding of |
翻訳したもの
1 2 3 4 5 |
中学2年生にブラックホールを説明するとしたら、こうなるだろう: ブラックホールとは、光でさえも外に出ることができないほど重力に引っ張られている宇宙の場所のことです。重力は物事を互いに引き寄せるものである。質量が大きいほど重力は強くなる。ブラックホールは、非常に小さな領域に非常に大きな質量が詰まっている。そのため重力が非常に強く、光でさえも近づけば逃げられない。 イメージしやすいように、地球がどんどん小さくなっていく様子を想像してみてほしい。小さな空間に圧縮されるにつれて、質量が一点に集中するため、重力はますます強くなる。地球をピーナッツの大きさまで小さくすると、重力が強すぎて光さえも抜け出せなくなり、ブラックホールになる! 光は出てこないので、ブラックホールを直接見ることはできない。しかし、ブラックホールが周囲のものに与える影響を観察することはできる。ブラックホールに近づいたガスや塵や星は、強い重力によって引き伸ばされ、ブラックホールの周りを渦巻く円盤状の物質ができる。私たちはまた、この高温で渦巻く物質から放出されるX線や電波からブラックホールを検出する。 つまり要約すると、ブラックホールは、たくさんの質量を小さな空間に集中させることで信じられないほど強い重力を持っており、ブラックホールに近づくと光さえも逃げられなくなるということだ。空間、時間、そして私たちの理解を曲げるクールで奇妙なもの |
実は日本語での質問も可能です!
1 2 3 4 5 6 |
body = json.dumps({ "prompt": "\n\nHuman: これからエンジニアになるためにはどういった内容をどのように勉強していくのが良いでしょうか?最も効率の良い方法を教えてください。\n\nAssistant:", "max_tokens_to_sample": 300, "temperature": 0.1, "top_p": 0.9, }) |
1 2 3 4 5 6 7 8 9 10 11 |
エンジニアになるための効率的な勉強方法としては以下がおすすめです。 ・プログラミング言語の基礎をしっかり身につける。特に需要の高い言語を選ぶ。(Python、JavaScript、Javaなど) ・基礎ができたら、Webアプリケーションやモバイルアプリなどの実践的なプロジェクトを通じてスキルアップを図る。 ・オンラインのプログラミング学習サイトや動画サービスを活用する。実践を通じた学習が大切。 ・開発コミュニティに参加し、他のエンジニアと交流を持つことで刺激を得る。 ・最新の開発動向や技術トレンドを把握するため、関連サイトや書籍などで常に学習を続ける。 ・企業の開発現場を知るため、インターンシップに参加したり、OB訪問をする。 ・基礎力を試すため、プログラミングコンテストなどにチャレンジする。 このように実践を通じた学習、コミュニティでの刺激、継続的な自己研鑽が大切です。興味と適性を確かめながら効率的にスキルアップを図っていきましょう。 |
それっぽい内容が返って来ました。もちろん実行する毎に少し内容が違うのでそこも面白いです。
こんな質問も投げてみました。
1 2 3 4 5 6 |
body = json.dumps({ "prompt": "\n\nHuman: 将来、職業の幅が広がるような習い事を子供にはして欲しいと思っています。どのような習い事が適しているでしょうか?\n\nAssistant:", "max_tokens_to_sample": 1000, "temperature": 0.1, "top_p": 0.9, }) |
1 2 3 4 5 6 7 8 |
子供の将来の職業の幅を広げる習い事としては、以下がおすすめです。 - プログラミング - 情報社会がさらに発展していく中で、プログラミングスキルは大変重要性が高まっています。論理的思考力や問題解決能力も身につきます。 - 英会話 - 国際共通語である英語は、ほとんど全ての職種で活躍する上で必要不可欠なスキルです。海外とのコミュニケーション能力が身につきます。 - 音楽・美術 - クリエイティビティや表現力を高めることができます。デザインやメディア関連の職業につながりやすいでしょう。 - スポーツ - 体力づくりやコミュニケーション能力を高められます。プロスポーツ選手に限らず、多くの職業に好影響を与えるでしょう。 子供の興味関心も重要な要素ですが、これらの習い事は多くの職業で生きてくるスキルを身につけられると思います。子供の適性と将来の可能性を見極めながら、バランスよく習い事を選ぶことをおすすめします。 |
こんな感じで簡単にかつ日本語を用いてテキスト生成AIを使用することが出来ました。
もちろんトークン1000個あたりでお金がかかっていますが、
勉強のコストと考えたら安い物だと思います。
最近AWSの勉強しつつ環境を構築していると毎月5000円くらいかかってしまってますが、
現場でも使える技術ですし何しろ自分の今後の武器になるので先行投資だと思ってもくもくしてます!
(AWS系のセミナーとかオンラインイベント出るとクレジット貰えるのでぜひ出るのをおすすめします)
では、次のブログでお会いしましょう!!
(日本語最大LLMを構築するためにAWSに上限緩和申請してるので、それが通れば書ける!)