ARCHIVE

#3 AIエージェント勉強会始めました

キーワード : LangChain/LangGraph
deco
deco
deco
deco
deco
deco
deco
deco
deco
deco
deco
deco
deco
サマリ
  • TSUNAGU Community Analytics(以下、TCA)では、非エンジニア職も含めた全社員を対象にAIエージェントの理解を深めるための勉強会を開始
  • 社内業務へのAIエージェント導入余地を見出すため、全員が「AIエージェントで何ができるか」を理解し、自分の業務に生かすための発想を持つことが目標
  • 初回として大規模言語モデル(Large Language Models、以下、LLM)のAPIの呼び出し方法、Function Callingによる外部機能連携、プロンプトエンジニアリングの基本と応用についてのハンズオンを実施
  • 今後はRAG構築やLangChain/LangGraphを用いたエージェントワークフローの実装へと発展予定

勉強会の成り立ち

 こんにちは! TCAでAIモデルの構築やデータ分析を担当しているもの者です。

 唐突ですが、AIエージェント……やばいですね。多くの人がChatGPTなどのチャットモデルに業務に関する専門的な質問をしたり、プライベートな悩み相談したりしている現代。そうした知能をもとに自律的にワークフローを構築し、従来は人間しか扱えなかったようなファジーなI/Oを扱うAIエージェントのインパクトに、多くの人が驚いたのではないでしょうか。

 さて、そういった背景のもと、TCAでも数々のAIエージェント導入案件を取り扱っていますが、社内利用というところでは、「まだまだ伸びしろがあるな」と感じている今日この頃。そんな中で、AIエージェントを導入する余地を洗い出すためには、データエンジニアやデータサイエンティストはもちろん、管理業務に携わる社員も含めた全員が「AIエージェントで何ができるのか?」を理解し、「自分の業務のこの部分をAIエージェントに任せることができそうだぞ」という発想を持つのが一番です。
ということで、全社員を対象にした勉強会を始めました!

 導入として、まずは基礎の基礎となりますが、このような内容についての簡単なハンズオンを実施しました。
 ・LLMをAPIで呼び出すにはどうしたらいいの?
 ・Function Callingってどういったことができるの?
 ・プロンプトエンジニアリングってよく聞くけど具体的にどんなことをするの?

 内容に関してはこちらの本を参考にしました。
西見公宏, 吉田真吾, 大嶋勇樹. LangChainとLangGraphによるRAG・AIエージェント[実践]入門. 2024

勉強会風景(オンラインでも多数参加!)

勉強会風景(オンラインでも多数参加!)

 勉強会の内容の一部を紹介します。
 ※ここからの記事は、NotebookLMを用いて議事録から作成したものもとに再編集しています

LLM APIの活用

 LLM APIは、自然言語での高度な対話や情報生成を実現する技術です。このAPIは、システム、ユーザー、アシスタントといった複数の役割(Role)を指定することで、多様な対話シナリオを柔軟に設計できる構造を持っています。

 また、APIはステートレスであり、直前のやりとりを自動で保持しないため、文脈を維持した会話を行うには過去の対話履歴を毎回リクエストに含める必要があります。さらに、パラメータには、応答の多様性を制御するtemperature、生成されるトークン数の上限を定めるmax_tokensなどが用意されており、これらを適切に設定することで、出力の特性や品質を細かく調整可能です。


Function Callingによる外部機能連携

 Function Callingは、LLMに対して事前に定義した関数や外部サービスの情報を与え、モデル自身が最適な関数や引数を選択し、その実行指示を出力できる技術です。この仕組みにより、LLMのアウトプットが単なる文章生成にとどまらず、APIやデータベースの呼び出し、グラフ作成や各種計算処理など、実行可能な外部アクションへと拡張されます。

 モデルはユーザーからの入力内容や文脈を元に、最適な関数の呼び出し形式を提案するロジックを備えており、人間がその指示に従って実行結果をフィードバックすることで、対話システムとしての柔軟性や拡張性が向上します。


プロンプトエンジニアリング

 プロンプトエンジニアリングとは、LLMに与える指示文(プロンプト)を工夫することで、望ましい出力や安定した応答を引き出すための設計技術です。LLMの出力はプロンプトの書き方次第でぶれてしまうことが多いため、これを安定させるためにプロンプトエンジニアリングが重要となります。

 プロンプトは次のような基本的な要素で構成されます。
 ✓命令:モデルに実行してほしい特定のタスクまたは命令
 ✓文脈:外部情報や従ってほしい文脈の指定
 ✓入力データ:応答してほしい入力または質問
 ✓出力指示子:出力のタイプや形式の指定
(参照:https://www.promptingguide.ai/jp/introduction/elements)

 また、主なアプローチとしては、このようなものがあります。
 ✓Zero-shot(事例を与えず単一指示のみで答えを生成)
 ✓Few-shot(いくつかの例示を通じて期待される出力形式や論理を誘導)
 ✓Zero-shot Chain-of-Thought(「ステップバイステップで考えてください」といった指示で推論過程の明示化を促進)

 これらは、タスクの特性や求める精度に応じて使い分けられます。これにより、LLMの汎用性を維持しつつ、実用的なシナリオに最適化された出力を得ることが可能になります。

 さらに、以下の図のように、Zero-shot Chain-of-Thought promptingを用いることで回答精度が大きく変わることが分かります。


おわりに

 このような勉強会は初めての取り組みでしたが、データサイエンティスト以外にも様々な職種のメンバーが参加し、AIエージェント構築に向けて理解を深めることができました。

 次回以降の勉強会では、より発展的な内容としてRAGの構築やLangChain/LangGraphを使ったエージェントワークフローの構築などに進んでいきたいと思います。

Let’s Enjoy DX!