![](https://images.logmi.jp/media/article/331351/images/main_image_6b591c1ac9b2fd8d4da82a0cccfed54e8b9e39b6.jpg?w=600)
2025.02.12
職員一人あたり52時間の残業削減に成功 kintone導入がもたらした富士吉田市の自治体DX“変革”ハウツー
リンクをコピー
記事をブックマーク
大嶋勇樹氏:では、「プロンプトエンジニアリングから始めるLangChain入門」ということで始めます。
最初に私の自己紹介ですが、名前は大嶋勇樹と申します。最近はよく「しま」さんとか、そんなふうに呼ばれています。キャリアは、都内のIT企業に新卒で就職して、そこからフリーランスエンジニアを経て、今は会社を設立していろいろやっています。最近は実務に就き始めのエンジニアのスキルアップのサポートということで、研修や勉強会の開催、Udemy講座の作成をやっていたりします。
今日は実務に就き始めとかはあまり関係ないテーマですが、データ分析や機械学習に関連する業務経験だと、AWSでデータ分析基盤みたいなものを作ったり、DockerやKubernetesを使って機械学習アプリケーションの基盤を作ったりしています。
自己紹介はこのぐらいにして、「プロンプトエンジニアリングから始めるLangChain入門」ということで入っていこうと思います。
まず背景として、ChatGPTは2022年末に公開されて以来、特に一般にも知られるようなキーワードとして、すごく盛り上がっていると思います。そしてChatGPTが使っているGPT-3.5やGPT-4といったモデルは、大規模言語モデル、LLM、Large Language Modelと呼ばれています。LLM周辺のトピックとして、特にこの数ヶ月は毎日のように新しい発表が話題になっていると思います。
そんな中、LLMを使ったアプリケーションを開発するためのツールとして、LangChainがすごく注目を集めています。そして、LangChainをキャッチアップするには、LLMに狙いどおりの動きをさせるためには、内部で使われているプロンプトエンジニアリングから学ぶとスムーズかなと、私が実際にLangChainをちょっと勉強してみて思ったところです。
そこで、この勉強会ではプロンプトエンジニアリングから始めて、LangChainに入門していきます。
今日は参加者も多いので、前提を一応補足すると、今日の主な対象者は、LLMを使ってなにか作ってみたいと思っている方や、アプリケーションを作るイメージをつけたいという方を想定しています。前提知識としては、ChatGPTに触れたことがある、またPythonの基礎知識がある程度としています。
そして、もう1点だけ注意事項として、今回の発表でLLMや機械学習自体の仕組みの話はないです。あくまでLLMを使ったアプリケーション開発がテーマです。また、LangChainに触れたことがない方を想定した内容なので、すでにLangChainに触れたことがある、ある程度触っている方には初歩的かもしれませんが、そのあたりはご了承ください。
ということでアジェンダです。OpenAIのLLMの概要から始めて、プロンプトエンジニアリングの概要、そしてLangChain入門と進めていこうと思います。
では、さっそくOpenAIのLLMの概要から入っていきますが、今日は1時間ぐらいを想定した勉強会なので、このあたりはさらっといこうと思っています。
そもそも「LLMとは?」「OpenAIとは?」というところがまず疑問としてあるかもしれませんが、ここはせっかくなのでChatGPTに聞いてみるのがいいかなと思います。
「LLMって何?」と事前にChatGPTのGPT-4に聞いてみると、「LLMとは、一般的にLarge Language Modelの略で、大規模な自然言語モデルを指します」と。そして、「これらのモデルは、機械学習、深層学習技術を利用して、テキストデータの理解や生成を行います。代表的なLLMには、OpenAIが開発したGPTシリーズがあります」と、こんな感じで自己紹介をしてくれます。
もう1つ、OpenAIのLLMの概要みたいな話で、「OpenAIとは?」についてもChatGPTのGPT-4に聞いてみました。
「OpenAIとは?」と聞くと、「OpenAIは、人工知能の研究と開発を行うプライベート企業で、2015年に設立されました。主な目標は、友好的で人間の利益にかなうかたちでAGIを開発することです。人工一般知能とは」とか、いろいろ説明してくれます。
信憑性として完全に大丈夫かは別として、そこそこいい回答を返してくれているんじゃないかなと思います。
今「ChatGPTのGPT-4」みたいな言い方をしましたが、ChatGPTはGPT-4だったり、GPTの3.5といったモデルを使っています。ChatGPTのプラン次第ですが、Plusプランに入ると、GPT-4を選んでチャット、メッセージを送って応答を得ることができるようになっています。
(スライドを示して)こんな感じで、OpenAIのモデルには大きくこんな分類があります。例えばGPT-4やGPT-3.5、GPT-3のような自然言語やコードを生成するモデルもあれば、「Whisper」という音声をテキストに変換するモデルもあれば、「Embeddings」という、テキストを数値のベクトルに変換するモデルもあります。ほかにもいろいろありますが、OpenAIのモデルはそもそもこんなふうにいろいろな分類があります。
主にGPT-4やGPT-3.5を使ったアプリケーション開発が今日の主なトピックですが、そういったことをする時は、こういったモデルをOpenAIのAPI経由で使うことになります。
そして、ここが最初に混乱しやすいところです。今日はそんなに大事じゃないのでなんとなくの理解でもいいんですが、実はGPT-4やGPT-3.5やGPT-3というのは、実際にはモデルの集まりみたいなものだったりします。“モデルのファミリー”みたいな表現を公式ドキュメントでもしています。
GPT-4は実際のモデルの名前も「gpt-4」だったりするのでややこしいんですが、GPT-3.5といった場合には、実際のモデルは「gpt-3.5-turbo」や「text-davinci-003」や「text-davinci-002」など、実際のモデルはいろいろあって、その集まりをGPT-3.5と言っています。GPTの3でも、実際のモデルは「text-curie-001」や「text-babbage-001」や「text-ada-001」などになっています。
このモデルの中からどれを使うか選択して使うことになるんですが、もともとはこのtext-ada、babbage、curie、davinciみたいなものがありました。低性能・安価なものから高性能で高価なものまであって、性能と料金がトレードオフみたいな状態だったのが、3月1日にgpt-3.5-turboというものが使えるようになって。それまで使えて(いるものの中で)一番高性能だったtext-davinci-003の10分の1というめちゃくちゃ安価な価格で使えて、これがすごく話題になりました。
さらに、最近はLimited Betaですがgpt-4のモデルも使うことができます。なので、実際にアプリケーションを開発するためにAPIを使う時は、このGPT-3.5などの括りの名前ではなくて、gpt-4やgpt-3.5-turboやtext-davinci-003などの名前でモデルを指定して使うことになります。
もう少しこのモデルやAPIの使い方について補足しておこうと思います。このOpenAIの文章生成のAPIは、実は「Chat」と「Completions」という2種類があります。
以前からあるこのあたりのモデルについてはCompletionsというAPIが使えるのに対して、最近のちょっと新しいモデルについてはChatというAPIが使えるようになっています。
このAPIは今日は技術的な前提知識が人によってぜんぜん違うと思うので、ざっくり説明になりますが、本当にいわゆるURLみたいなものが違ったり、呼び出す時に与えるパラメーターみたいなものが違ったりします。
実際にはChatのほうが新しいモデルに対応していて、新しいモデルを使おうとするとChatのAPIを使わないといけないみたいになっているので、実際の開発だと性能や料金の観点からChatのAPIを使いたいケースが多いと思います。
このChatのAPIは少し複雑というか、ちょっと変わった使い方になっているので、今日のLangChainの入門というテーマだと少しわかりにくいです。なので、今日のLangChainの入門のためには、CompletionsというAPIを使ったほうがわかりやすいので、今日はCompletionsの中で一番性能のいい、text-davinci-003を使う例で進めていこうと思います。
今ごちゃごちゃとモデルの説明やAPIの説明をしましたが、このあたりは最初はなんとなくでも大丈夫です。
触り始めるとよくわからなくて詰まりやすいので整備しましたが、いったん「text-davinci-003という名前のモデルを使う」というところだけ押さえてもらえれば大丈夫です。
実際にAPIを使うってどんな感じかというところで、実際にコードを資料にも載せているんですが、ちょっと動かしてみようと思います。(画面を示して)こんな感じのPythonのコードを用意して、実行するとAPIを叩けます。poetry run python……。このコードを実行してみます。
そうすると、こんな感じで返ってきます。
何をしたかというと、ざっくりですがOpenAIのAPIキーを指定して、さらにモデルの名前、先ほど話に出したtext-davinci-003を指定しています。が
モデルの名前を指定して、ここは「hello」だけですが、ChatGPTで打つのと同じようなプロンプトを指定して実行しています。すると、こんな感じで応答がいろいろ返ってくるわけですね。
スライドに戻って説明をすると、APIキーを指定するのと、モデルの名前とプロンプトを文字列として指定しました。実はこの「model」「prompt」以外にもいろいろなパラメーターが指定できるんですが、「temperature」は有名なパラメーターなので紹介します。
これは0に近いほど毎回同じ応答になりやすいというようなパラメーターですね。ほかにもいろいろなパラメーターがありますが、そのあたりはドキュメントを参照するといいかなと思います。
(スライドを示して)応答も返ってきましたが、応答はこんな内容です。いろいろごちゃごちゃ書かれていますが、応答のテキスト、ChatGPTでいう画面に表示されるようなテキスト。「Hello there! How are you doing today?」みたいな内容が、「hello」に対して返ってきました。
あとはプロンプトに使われたトークン数。応答のトークン数、そして合計数が表示されます。入力したプロンプトのトークン数と、返ってきた応答のトークン数の合計で料金が発生することになっています。
ということで、ここまでGPT-4やGPT-3.5などの文章生成のためのアプリケーションを開発する場合は、OpenAIのAPIのChatかCompletionsを使うということを見てきました。
そしてCompletionsのAPIを使う時は、モデルの名前、例えばtext-davinci-003と、プロンプトを文字列として渡すと応答が返ってくるということです。簡単に言えば、APIでもプロンプトを渡して応答のテキストを得ること自体は同じです。というのもあって、やはりプロンプトをどう工夫するかが大事ということですね。
ということで、(ここから)プロンプトエンジニアリングの概要に入っていきますが、少しQ&Aをいただいているので、一応回答しようと思います。Q&Aをもらえれば適宜回答しようと思います。
今Zoomでご質問いただいたのは、「料金体系の仕組みについて質問させてください。料金体系は1リクエストで100トークンのテキストを送信した場合は、最低料金として0.002が発生するのかどうか?」と。どのタイミングで最低料金が発生するかについては、すみません、そこは僕もドキュメントとかをそこまで見られていなくてわからないです。
ドキュメントを見てもらうのが一番いいと思いますが、正直OpenAIのドキュメントはまだ整いきっていないので、もしかするとわかりにくいかもしれないですね。パッと見た範囲だと見つからなかったかもしれないです。すみません。
チャットのほうで「text-davinci-003だと料金注意ですね」ということですが、これはいわゆる今よく使われるgpt-3.5のものよりも料金が高めなので、ちょっと注意ですね。
もう少し質問をもらっていますが、今日は時間の都合もあるので、特に内容に近いものを優先して回答しようと思います。
いったん続きに進みたいと思います。最後の時間では、できるだけQ&Aを全部、残ったものを回答するつもりです。
(次回につづく)
関連タグ:
プロンプトエンジニアリングから始めるLangChain入門講座 大嶋勇樹氏が教える、OpenAIのモデルとAPIの使い方
AIモデルへの入力を最適化し、意図した出力を得るために 例から学ぶ、プロンプトエンジニアリングの概要
そもそもLangChainは何に使えるのか 3つの基礎的なモジュール「Models」「Prompts」「Chains」から考える活用事例
保存した文章を利用する「Indexes」、過去のやりとりを記憶する「Memory」 LLMにできることを拡張する2つのLangChainモジュール
まるで“LLMがツールを使う”かのように動作する デモから見るLangChainのモジュール「Agents」の使い方
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.10
A4用紙を持ち歩いて殴り書きでアウトプット コクヨのワークスタイルコンサルタントが語る、2種類のメモ術
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
【著者来館】『成果を上げるプレイングマネジャーは「これ」をやらない』出版記念イベント!
2025.01.10 - 2025.01.10