Skip to content

Commit d9d98b7

Browse files
committed
add chat_with_tools notebook
1 parent e7de197 commit d9d98b7

File tree

3 files changed

+121
-46
lines changed

3 files changed

+121
-46
lines changed

notebooks/chat_with_tools.ipynb

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 1,
6+
"id": "1f4d669f",
7+
"metadata": {},
8+
"outputs": [],
9+
"source": [
10+
"from template_langgraph.agents.chat_with_tools_agent.agent import ChatWithToolsAgent\n",
11+
"\n",
12+
"# Create an instance of the agent\n",
13+
"agent = ChatWithToolsAgent().create_graph()"
14+
]
15+
},
16+
{
17+
"cell_type": "code",
18+
"execution_count": 2,
19+
"id": "21bd80ab",
20+
"metadata": {},
21+
"outputs": [
22+
{
23+
"name": "stdout",
24+
"output_type": "stream",
25+
"text": [
26+
"--------------------\n",
27+
"Event: {'chat_with_tools': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_dgZmuEHRra9AoPOF0eDk8hlu', 'function': {'arguments': '{\"keywords\": \"鬼灯 KABUTO 停止 原因 対策\"}', 'name': 'search_qdrant'}, 'type': 'function'}, {'index': 1, 'id': 'call_Ozsm6M8EKcfqBGTEz2AqHVE0', 'function': {'arguments': '{\"keywords\": \"鬼灯 KABUTO 停止 原因 対策\"}', 'name': 'search_elasticsearch'}, 'type': 'function'}]}, response_metadata={'finish_reason': 'tool_calls', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--c1e04748-5dee-4a87-be5d-44ac8904997d-0', tool_calls=[{'name': 'search_qdrant', 'args': {'keywords': '鬼灯 KABUTO 停止 原因 対策'}, 'id': 'call_dgZmuEHRra9AoPOF0eDk8hlu', 'type': 'tool_call'}, {'name': 'search_elasticsearch', 'args': {'keywords': '鬼灯 KABUTO 停止 原因 対策'}, 'id': 'call_Ozsm6M8EKcfqBGTEz2AqHVE0', 'type': 'tool_call'}])]}}\n",
28+
"--------------------\n",
29+
"Event: {'tools': {'messages': [ToolMessage(content='\"[QdrantOutput(file_name=\\'./data/qa_kabuto.csv\\', content=\\'q: 特定のアプリケーション「鬼灯」を実行すると、KABUTOのファンが急に停止し、無音になります。 a: 「鬼灯」は、その特殊な演算処理において、KABUTOの冷却システム「風魔の術」を一時的に停止させ、内部エネルギーの流れを最適化する機能を持っています。これは異常ではありません。ただし、無音状態が15分以上続く場合は、過熱の可能性があるため、アプリケーションを強制終了し、KABUTO本体の電源を一度切ってから再起動してください。\\'), QdrantOutput(file_name=\\'./data/qa_kabuto.csv\\', content=\\'q: KABUTOの電源ランプが、赤と青の交互点滅ではなく、緑色で点滅しています。 a: 通常、電源ランプは赤(待機中)と青(稼働中)の点滅を繰り返します。緑色の点滅は、KABUTOが「禅モード」に入っており、パフォーマンスを最小限に抑え、バックグラウンドでシステム自己修復を行っている状態を示します。この状態では、ユーザー操作はほとんど受け付けられません。このモードから強制的に脱出するには、KABUTO本体の「龍玉」ボタンを5秒以上長押ししてください。\\'), QdrantOutput(file_name=\\'./data/qa_kabuto.csv\\', content=\\'q: KABUTOの画面の隅に、時々「狐火」のような光の点が、不規則に現れては消えます。 a: 「狐火」は、KABUTOの演算コア「稲荷」が、膨大な量のタスクを処理しきれずに、一部の計算結果が視覚的なノイズとして現れている現象です。これは、システム負荷が高いことを示しています。この現象が頻繁に発生する場合は、バックグラウンドで動作している不要なアプリケーションを終了させるか、KABUTOを再起動してください。\\')]\"', name='search_qdrant', id='852006ec-9c76-432a-a8f0-ee9a675f5096', tool_call_id='call_dgZmuEHRra9AoPOF0eDk8hlu'), ToolMessage(content='\"[ElasticsearchOutput(file_name=\\'docs_kabuto.pdf\\', content=\\'docs_kabuto.md 2025-08-01\\\\\\\\n2 / 3\\\\\\\\nた場合、「虚無」エラーが表⽰され、ログインは拒否される。これは疲労やストレスによる精神状態の変化が原因で\\\\\\\\nある可能性があり、深呼吸による精神状態の安定化が解決策となる。\\\\\\\\n3.3 ネットワーク・通信\\\\\\\\nネットワークモジュール「隠れ蓑」は、外部からの不必要なスキャンを回避するため、デフォルトでステルスモード\\\\\\\\nで動作する。これにより、ネットワーク上の他のデバイスから認識されない状態となる。 KABUTO をネットワーク上\\\\\\\\nで可視化させるには、ネットワーク設定画⾯から「忍びの道」オプションを有効にする必要がある。\\\\\\\\n3.4 演算コア\\'), ElasticsearchOutput(file_name=\\'docs_kabuto.pdf\\', content=\\'docs_kabuto.md 2025-08-01\\\\\\\\n2 / 3\\\\\\\\nた場合、「虚無」エラーが表⽰され、ログインは拒否される。これは疲労やストレスによる精神状態の変化が原因で\\\\\\\\nある可能性があり、深呼吸による精神状態の安定化が解決策となる。\\\\\\\\n3.3 ネットワーク・通信\\\\\\\\nネットワークモジュール「隠れ蓑」は、外部からの不必要なスキャンを回避するため、デフォルトでステルスモード\\\\\\\\nで動作する。これにより、ネットワーク上の他のデバイスから認識されない状態となる。 KABUTO をネットワーク上\\\\\\\\nで可視化させるには、ネットワーク設定画⾯から「忍びの道」オプションを有効にする必要がある。\\\\\\\\n3.4 演算コア\\'), ElasticsearchOutput(file_name=\\'docs_kabuto.pdf\\', content=\\'る。これにより、漢字で表⽰されている特定のフォルダ名が、ひらがなとして読み取られる現象が発⽣する。この問\\\\\\\\n題を解消するには、システム設定にて「読み⽅優先モード」を⼀時的に無効化する必要がある。\\\\\\\\n4.2 ⼊⼒・ AI アシスタント\\\\\\\\n内蔵 AI アシスタント「ヤタガラス」は、ユーザーの⼊⼒内容を予測し、システムの基幹⾔語である「KABUTO 語」に\\\\\\\\n最適化しようとする機能を持つ。これにより、特定の⽂字が⾃動的にカタカナに変換される現象が発⽣する。この機\\\\\\\\n能を⼀時的に停⽌するには、⼊⼒中にCtrlキーとShiftキーを同時に押しながら「 KABUTO 」と⼊⼒する。\\\\\\\\n4.3 スクリーンショット機能\\')]\"', name='search_elasticsearch', id='36b609c3-edcf-4fc7-ad3f-c80dfb896cf1', tool_call_id='call_Ozsm6M8EKcfqBGTEz2AqHVE0')]}}\n",
30+
"--------------------\n",
31+
"Event: {'chat_with_tools': {'messages': [AIMessage(content='「鬼灯」を実行するとKABUTOが急に停止する問題について、以下の情報が得られました。\\n\\n### 原因\\n1. **「鬼灯」の特性**:\\n - 「鬼灯」は特異な演算処理を行い、KABUTOの冷却システム「風魔の術」を一時的に停止させ、内部エネルギーの流れを最適化する機能を持っています。これは異常ではありませんが、システム負荷が高まる可能性があります。\\n\\n2. **過熱の可能性**:\\n - 無音状態が15分以上続く場合、過熱が原因でシステムが停止する可能性があります。\\n\\n3. **「禅モード」への移行**:\\n - KABUTOが「禅モード」に入ると、パフォーマンスを最小限に抑え、自己修復を行う状態になります。この場合、ユーザー操作がほとんど受け付けられません。\\n\\n### 対策\\n1. **システムの再起動**:\\n - 「鬼灯」実行後に無音状態が長時間続く場合、アプリケーションを強制終了し、KABUTO本体の電源を一度切ってから再起動してください。\\n\\n2. **「禅モード」からの脱出**:\\n - KABUTO本体の「竜玉」ボタンを5秒以上長押しすることで、「禅モード」から強制的に脱出できます。\\n\\n3. **冷却システムの確認**:\\n - 冷却システム「風魔の術」が正常に動作しているか確認してください。必要に応じて、システム設定を見直してください。\\n\\n4. **不要なアプリケーションの終了**:\\n - システム負荷を軽減するため、バックグラウンドで動作している不要なアプリケーションを終了させてください。\\n\\nこれらの対策を試しても問題が解決しない場合、KABUTOのサポートチームに連絡することをお勧めします。', additional_kwargs={}, response_metadata={'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--ffeb926c-8451-484b-a052-a6a396b4cc67-0')]}}\n"
32+
]
33+
}
34+
],
35+
"source": [
36+
"question = \"「鬼灯」を実行すると、KABUTOが急に停止します。原因と対策を教えてください。\"\n",
37+
"\n",
38+
"# Stream the agent's response to the question\n",
39+
"for event in agent.stream(\n",
40+
" input={\n",
41+
" \"messages\": [\n",
42+
" {\n",
43+
" \"role\": \"user\",\n",
44+
" \"content\": question,\n",
45+
" }\n",
46+
" ],\n",
47+
" }\n",
48+
"):\n",
49+
" print(\"-\" * 20)\n",
50+
" print(f\"Event: {event}\")"
51+
]
52+
},
53+
{
54+
"cell_type": "code",
55+
"execution_count": 3,
56+
"id": "53219c94",
57+
"metadata": {},
58+
"outputs": [
59+
{
60+
"name": "stdout",
61+
"output_type": "stream",
62+
"text": [
63+
"--------------------\n",
64+
"Event: {'chat_with_tools': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_b3sbZHFfCd5ZiuufVBDrksGu', 'function': {'arguments': '{\"requirements\":\"京都から東京への旅行プランを作成してください。\"}', 'name': 'run_dify_workflow'}, 'type': 'function'}]}, response_metadata={'finish_reason': 'tool_calls', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--2edce6b7-e252-47c6-b05b-9c5d51f546d1-0', tool_calls=[{'name': 'run_dify_workflow', 'args': {'requirements': '京都から東京への旅行プランを作成してください。'}, 'id': 'call_b3sbZHFfCd5ZiuufVBDrksGu', 'type': 'tool_call'}])]}}\n",
65+
"--------------------\n",
66+
"Event: {'tools': {'messages': [ToolMessage(content='\"response={\\'task_id\\': \\'b9adea52-c9dd-4bf6-a5be-bbbc4b619e06\\', \\'workflow_run_id\\': \\'31fb862d-d30d-45c4-93a2-2924018f95b4\\', \\'data\\': {\\'id\\': \\'31fb862d-d30d-45c4-93a2-2924018f95b4\\', \\'workflow_id\\': \\'2d97261d-6f0e-4c1e-9223-993a96e676b8\\', \\'status\\': \\'succeeded\\', \\'outputs\\': {\\'text\\': \\'ええやん!ほな京都から東京への旅行プラン考えてみるわな。関西弁でしゃべるさかい、気ぃつけて聞いてや~。\\\\\\\\n\\\\\\\\n---\\\\\\\\n\\\\\\\\n**1日目:京都出発** \\\\\\\\n朝早よから京都駅発って新幹線「のぞみ」に乗るのがおすすめやで!せやけど、ちょっと節約したいんやったら「ひかり」でもええ感じや。新幹線乗ると東京まで2時間半くらいで着くし、めっちゃ早いなぁ。\\\\\\\\n\\\\\\\\n**2日目:東京観光** \\\\\\\\n東京やったら観光スポットがぎょうさんあるさかい、ちょっと絞らなあかんわ。\\\\\\\\n\\\\\\\\n- 【浅草】 \\\\\\\\n\\\\\\\\u3000まずは浅草や!雷門で写真撮って、仲見世通りでお土産買うたり、揚げまんじゅう食べたりしたらええと思うで。浅草寺もお参りして、運気アップや!\\\\\\\\n\\\\\\\\n- 【スカイツリー】 \\\\\\\\n\\\\\\\\u3000浅草から近いさかい、スカイツリーにも寄ったらええで。展望台から東京の景色を見渡せるし、ほんま感動するわ。\\\\\\\\n\\\\\\\\n- 【夜は渋谷】 \\\\\\\\n\\\\\\\\u3000夜は渋谷のスクランブル交差点に行ってみるとええで。人の多さにびっくりすると思うけど、これぞ東京や!ご飯もええ感じの居酒屋とかカフェがぎょうさんあるさかい、好きなとこ選んでな。\\\\\\\\n\\\\\\\\n**3日目:お台場と買い物** \\\\\\\\n- 【お台場】 \\\\\\\\n\\\\\\\\u3000お台場行ったら、レインボーブリッジ見たり、ヴィーナスフォートでショッピングしたり、海沿いでのんびりしたりできるで。ガンダムも見れるしな!\\\\\\\\n\\\\\\\\n- 【買い物】 \\\\\\\\n\\\\\\\\u3000東京駅周辺とか新宿で買い物するのもありやで。お土産買うたり、自分用にええもん探したりな。\\\\\\\\n\\\\\\\\n**4日目:帰り京都へ** \\\\\\\\n東京駅からまた新幹線乗って京都に帰るんやけど、帰りの新幹線では駅弁食べるのも楽しみやで。東京駅の駅弁は種類がようさんあるさかい、迷うぐらいや!\\\\\\\\n\\\\\\\\n---\\\\\\\\n\\\\\\\\nこんな感じのプランでどうやろ?まぁ、細かいとこは自分の好みに合わせて調整したらええと思うで!ええ旅行になることを祈っとるわ~!\\'}, \\'error\\': \\'\\', \\'elapsed_time\\': 8.108032, \\'total_tokens\\': 669, \\'total_steps\\': 3, \\'created_at\\': 1754332931, \\'finished_at\\': 1754332939}}\"', name='run_dify_workflow', id='1c54dc93-1c63-4d59-bdcd-74cdb034f550', tool_call_id='call_b3sbZHFfCd5ZiuufVBDrksGu')]}}\n",
67+
"--------------------\n",
68+
"Event: {'chat_with_tools': {'messages': [AIMessage(content='以下は京都から東京への旅行プランです。関西弁でまとめてみました!\\n\\n---\\n\\n### **1日目:京都出発**\\n朝早よから京都駅発って新幹線「のぞみ」に乗るのがおすすめやで!せやけど、ちょっと節約したいんやったら「ひかり」でもええ感じや。新幹線乗ると東京まで2時間半くらいで着くし、めっちゃ早いなぁ。\\n\\n---\\n\\n### **2日目:東京観光**\\n東京やったら観光スポットがぎょうさんあるさかい、ちょっと絞らなあかんわ。\\n\\n- **浅草** \\n まずは浅草や!雷門で写真撮って、仲見世通りでお土産買うたり、揚げまんじゅう食べたりしたらええと思うで。浅草寺もお参りして、運気アップや!\\n\\n- **スカイツリー** \\n 浅草から近いさかい、スカイツリーにも寄ったらええで。展望台から東京の景色を見渡せるし、ほんま感動するわ。\\n\\n- **夜は渋谷** \\n 夜は渋谷のスクランブル交差点に行ってみるとええで。人の多さにびっくりすると思うけど、これぞ東京や!ご飯もええ感じの居酒屋とかカフェがぎょうさんあるさかい、好きなとこ選んでな。\\n\\n---\\n\\n### **3日目:お台場と買い物**\\n- **お台場** \\n お台場行ったら、レインボーブリッジ見たり、ヴィーナスフォートでショッピングしたり、海沿いでのんびりしたりできるで。ガンダムも見れるしな!\\n\\n- **買い物** \\n 東京駅周辺とか新宿で買い物するのもありやで。お土産買うたり、自分用にええもん探したりな。\\n\\n---\\n\\n### **4日目:帰り京都へ**\\n東京駅からまた新幹線乗って京都に帰るんやけど、帰りの新幹線では駅弁食べるのも楽しみやで。東京駅の駅弁は種類がようさんあるさかい、迷うぐらいや!\\n\\n---\\n\\nこんな感じのプランでどうやろ?まぁ、細かいとこは自分の好みに合わせて調整したらええと思うで!ええ旅行になることを祈っとるわ~!', additional_kwargs={}, response_metadata={'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--0740b1eb-e395-413d-87a0-f37aa5ae4746-0')]}}\n"
69+
]
70+
}
71+
],
72+
"source": [
73+
"question = \"Dify のワークフローで京都から東京への旅行プランを作成してください。\"\n",
74+
"\n",
75+
"# Stream the agent's response to the question\n",
76+
"for event in agent.stream(\n",
77+
" input={\n",
78+
" \"messages\": [\n",
79+
" {\n",
80+
" \"role\": \"user\",\n",
81+
" \"content\": question,\n",
82+
" }\n",
83+
" ],\n",
84+
" }\n",
85+
"):\n",
86+
" print(\"-\" * 20)\n",
87+
" print(f\"Event: {event}\")"
88+
]
89+
},
90+
{
91+
"cell_type": "code",
92+
"execution_count": null,
93+
"id": "d38858e3",
94+
"metadata": {},
95+
"outputs": [],
96+
"source": []
97+
}
98+
],
99+
"metadata": {
100+
"kernelspec": {
101+
"display_name": ".venv",
102+
"language": "python",
103+
"name": "python3"
104+
},
105+
"language_info": {
106+
"codemirror_mode": {
107+
"name": "ipython",
108+
"version": 3
109+
},
110+
"file_extension": ".py",
111+
"mimetype": "text/x-python",
112+
"name": "python",
113+
"nbconvert_exporter": "python",
114+
"pygments_lexer": "ipython3",
115+
"version": "3.12.0"
116+
}
117+
},
118+
"nbformat": 4,
119+
"nbformat_minor": 5
120+
}

notebooks/templates.ipynb

Lines changed: 0 additions & 45 deletions
This file was deleted.

scripts/dify_operator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def run_workflow(
5454
ensure_ascii=False,
5555
)
5656
)
57-
logger.info(f"Input: {response['data']['outputs']['requirements']}, Output: {response['data']['outputs']['text']}")
57+
logger.info(f"Output: {response['data']['outputs']['text']}")
5858

5959

6060
if __name__ == "__main__":

0 commit comments

Comments
 (0)