私たちの会社、LongRailが目指しているのは、生成AI、特にLLM(大規模言語モデル)の力を借りて、みんなのビジネスをもっとスムーズに、もっとクリエイティブにすることなのです。単に「AIツールを導入しました!」で終わるんじゃなくて、業務プロセスのどこにAIを組み込めば一番効果的なのか、企画段階から一緒に考え、PoC(概念実証)を通じてその価値を証明していく。そんな、お客さんのビジネスに深く寄り添う姿勢を、非常に大事にしたいなと日々感じています。最近、社内の勉強会や先輩たちの会話の中で、その姿勢を支える技術の奥深さに改めて触れる機会がありました。特に僕が「これはすごい!」と唸ったのが、「プロンプトエンジニアリング」の世界。私たちが普段何気なく使っている「〇〇について教えて」という指示の、さらに一歩先を行く考え方だったんです。
ReActプロンプティングとは何か
はじめはChatGPTに質問を投げるくらいで、「プロンプトって要は聞き方でしょ?」くらいにしか思っていませんでした。でも、LLMに単に答えてもらうんじゃなくて、もっと自律的に「考えて、行動して」もらうための技術があるって知って、目からウロコでした。それが「ReAct(Reason and Act)」というプロンプティングの考え方です。これは、LLMに「思考(Thought)」→「行動(Action)」→「観察(Observation)」という一連のサイクルをテキスト上で実行させることで、複雑なタスクを分解して処理させるアプローチなんです。
例えば、「今日の東京の天気を調べて、それに合った服装を提案して」みたいな、複数のステップが必要な指示があったとします。ReActプロンプトで指示されたLLMは、まず「思考:東京の天気を調べる必要があるな」と考え、次に「行動:天気検索ツールを使う」と判断し、ツールから「観察:東京は晴れ、25度」という結果を得ます。そして再び「思考:晴れで25度なら半袖シャツがいいな」と考えて、最終的な答えを導き出してくれる。まるで人間みたいに、一つひとつ手順を踏んで答えにたどり着く姿は、本当に驚きでした。
LangChainで実装するReActエージェント
このReActの考え方、理論だけ聞いても面白いんですが、実際にコードに落とし込んでみると、その可能性の大きさにさらにワクワクします。例えば、PythonのLangChainというフレームワークを使うと、このエージェントみたいな動きを比較的簡単に実装できるのです。 早速見よう見まねで簡単なコードを書いてみました。これは、特定の都市の天気を返すダミーの関数を「ツール」としてLLMに与えて、質問に答えさせるものです。
from langchain_openai import ChatOpenAI
from langchain.agents import tool, AgentExecutor, create_react_agent
from langchain_core.prompts import PromptTemplate
# ダミーの天気情報ツールを定義
@tool
def get_weather(city: str) -> str:
"""指定された都市の現在の天気を返します。"""
if "東京" in city:
return "晴れ、気温は25度です。"
else:
return f"{city}の天気は分かりません。"
# LLMやプロンプト、エージェントを準備
llm = ChatOpenAI(model="gpt-4o", temperature=0)
tools = [get_weather]
# ReActの思考プロセスを促すプロンプトテンプレート(一部抜粋)
template = """
...
思考:何をすべきか考えます。
行動:[{tool_names}]の中から使用するツールを選び、そのツールへの入力を決めます。
観察:ツールの実行結果を観察します。
...
質問: {input}
{agent_scratchpad}
"""
prompt = PromptTemplate.from_template(template)
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 実行
agent_executor.invoke({"input": "今日の東京の天気を調べて、その天気に合った服装を提案してください。"})
このコードを実行すると、LLMが「まずget_weatherツールを使おう」と考え、実行し、その結果を見てから「半袖シャツが良いでしょう」と回答する、まさにReActの思考プロセスがログに出力されるんです。これって、社内のデータベースにアクセスするツールや、外部のAPIを叩くツールをLLMに与えれば、単なるチャットボットを超えた「業務アシスタントエージェント」が作れるということです。夢が広がりすぎます。
プロンプトエンジニアリングの深さと私たちの価値
プロンプト一つ、その設計思想一つで、LLMの能力をここまで引き出せるなんて、本当に奥が深い世界だなと思います。LongRailが提供しているLLMアプリケーション開発やコンサルティングって、こういう深い技術的な知見に裏打ちされているからこそ、お客さんの課題に対して的確なソリューションを提案できるんだなと、社内にいながら改めて実感しました。ただAIを導入するだけじゃなく、そのポテンシャルを最大限に引き出すためのノウハウを持っていること。それが私たちの本当の価値なのかもしれません。もっともっと勉強して、お客さんの「こんなことできないでしょうか。」という漠然とした期待に、「こんな注目すべきことができますよ!」って驚きを届けられるようになりたいです。