LangChainで設計するエージェント型システム
Dilini K. Sumanapala, PhD
Founder & AI Engineer, Genverv, Ltd.

- Agent: [Tool 1: answer]
- Agent: [Tool 2: answer]
- User: [Query]
- Agent: [Tool 1: answer]
- User: [Follow-up query]
- Agent: [Tool 1: follow-up answer]
from langchain_core.messages import AIMessage, HumanMessageconfig = {"configurable": {"thread_id": "1"}}# ユーザーの質問で入力メッセージを作成 def multi_tool_output(query):inputs = {"messages": [HumanMessage(content=query)]}# チャットボットアプリからメッセージとメタデータをストリーム for msg, metadata in app.stream(inputs, config, stream_mode="messages"):# コンテンツがあり、人間からでないメッセージを出力 if msg.content and not isinstance(msg, HumanMessage): print(msg.content, end="", flush=True)print("\n")
multi_tool_output("Is `Stella won no wallets` a palindrome?")multi_tool_output("What happened on April 12th, 1955?")
The phrase or word 'Stella won no wallets' is a palindrome.Yes, the phrase "Stella won no wallets" is a palindrome.1955年4月12日は、特に科学技術の文脈で重要です。この日、ジョナス・ソーク博士が開発した 初の成功したポリオワクチンが一般に発表されました。これはポリオとの闘いの大きな転機で、 流行と不安をもたらした病気への対策として、特に子どもに影響が大きかったため、 公衆衛生の転換点となり、その後の大規模な予防接種によりポリオのほぼ根絶に貢献しました...
# 各やり取りで最初にユーザーの質問を表示 def user_agent_multiturn(queries): for query in queries: print(f"User: {query}")# 質問に対応するメッセージをメタデータ抜きでストリーム print("Agent: " + "".join(msg.content for msg, metadata in app.stream( {"messages": [HumanMessage(content=query)]}, config, stream_mode="messages")# 人間のメッセージを除外し、エージェントの内容のみを出力 if msg.content and not isinstance(msg, HumanMessage)) + "\n")queries = ["What happened on the 12 April 1961?", "What about 10 December 1948?", "Is `Mr. Owl ate my metal worm?` a palindrome?", "What about 'palladium stadium?'"] user_agent_multiturn(queries)
User: 1961年4月12日には何が起きましたか?
Agent: 1961年4月12日、ソ連の宇宙飛行士ユーリ・ガガーリンがボストーク1号で
人類初の宇宙飛行を達成しました...
User: 1963年11月22日は?
Agent: 1948年12月10日... 世界人権宣言 (UDHR) が採択されました。
User: `Mr. Owl ate my metal worm?` は回文ですか?
Agent: フレーズ(または単語)'Mr. Owl ate my metal worm?' は回文です...
User: 'palladium stadium' は?
Agent: いいえ、フレーズ `palladium stadium` は回文ではありません...
LangChainで設計するエージェント型システム