DylanonWic commited on
Commit
9fa71e3
1 Parent(s): a02d6ac

Upload 17 files

Browse files
Files changed (3) hide show
  1. app.py +1 -1
  2. chatbot_multiagent.ipynb +49 -51
  3. chatbot_multiagent.py +3 -3
app.py CHANGED
@@ -14,6 +14,6 @@ def slow_echo_chat(message, history):
14
 
15
 
16
  # gr.ChatInterface(chat).launch()
17
- interface = gr.ChatInterface(slow_echo_chat)
18
 
19
  interface.launch()
 
14
 
15
 
16
  # gr.ChatInterface(chat).launch()
17
+ interface = gr.ChatInterface(chat)
18
 
19
  interface.launch()
chatbot_multiagent.ipynb CHANGED
@@ -2,7 +2,7 @@
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
- "execution_count": 1,
6
  "metadata": {},
7
  "outputs": [],
8
  "source": [
@@ -15,20 +15,9 @@
15
  },
16
  {
17
  "cell_type": "code",
18
- "execution_count": 2,
19
  "metadata": {},
20
- "outputs": [
21
- {
22
- "name": "stderr",
23
- "output_type": "stream",
24
- "text": [
25
- "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:141: LangChainDeprecationWarning: The class `ChatOpenAI` was deprecated in LangChain 0.0.10 and will be removed in 0.3.0. An updated version of the class exists in the langchain-openai package and should be used instead. To use it run `pip install -U langchain-openai` and import as `from langchain_openai import ChatOpenAI`.\n",
26
- " warn_deprecated(\n",
27
- "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:141: LangChainDeprecationWarning: The function `format_tool_to_openai_function` was deprecated in LangChain 0.1.16 and will be removed in 1.0. Use langchain_core.utils.function_calling.convert_to_openai_function() instead.\n",
28
- " warn_deprecated(\n"
29
- ]
30
- }
31
- ],
32
  "source": [
33
  "from langchain_core.messages import HumanMessage\n",
34
  "import operator\n",
@@ -91,7 +80,7 @@
91
  "## tools and LLM\n",
92
  "\n",
93
  "retriever_tool = Tool(\n",
94
- " name=\"Retriever\",\n",
95
  " func=retriever.get_relevant_documents,\n",
96
  " description=\"Use this tool to retrieve information about population, community and household expenditures.\"\n",
97
  ")\n",
@@ -210,7 +199,7 @@
210
  "workflow.add_conditional_edges(\n",
211
  " \"data collector\",\n",
212
  " router,\n",
213
- " {\"continue\": \"reporter\", \"call_tool\": \"call_tool\", \"__end__\": END}\n",
214
  ")\n",
215
  "\n",
216
  "workflow.add_conditional_edges(\n",
@@ -234,7 +223,7 @@
234
  },
235
  {
236
  "cell_type": "code",
237
- "execution_count": 3,
238
  "metadata": {},
239
  "outputs": [],
240
  "source": [
@@ -249,58 +238,65 @@
249
  },
250
  {
251
  "cell_type": "code",
252
- "execution_count": 4,
253
  "metadata": {},
254
  "outputs": [
255
  {
256
  "name": "stdout",
257
  "output_type": "stream",
258
  "text": [
259
- "{'analyst': {'messages': [AIMessage(content='To analyze the feasibility of opening a restaurant near Lumpini Center in Lat Phrao, we need to gather specific data regarding the area. Here are the key insights and data requirements for the analysis:\\n\\n1. **Competitor Analysis**:\\n - Identify existing restaurants and food establishments in the vicinity of Lumpini Center.\\n - Analyze their types of cuisine, pricing, and customer reviews to understand the competitive landscape.\\n\\n2. **Market Opportunities**:\\n - Gather demographic information about the local community, including population size, age distribution, and household income levels.\\n - Assess household expenditures on dining and food services in the area to gauge potential customer spending power.\\n\\n3. **Location Insights**:\\n - Understand the foot traffic and accessibility of the location, including nearby public transport options and parking facilities.\\n\\nI will now proceed to gather information about nearby restaurants and the demographic profile of the Lat Phrao district.', response_metadata={'token_usage': {'completion_tokens': 180, 'prompt_tokens': 268, 'total_tokens': 448}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, name='analyst', id='run-ea328852-34e3-4b22-be8a-13a2483eeb6c-0')], 'sender': 'analyst'}}\n",
260
- "----\n",
261
- "{'data collector': {'messages': [AIMessage(content=\"I will start by identifying nearby restaurants around Lumpini Center in Lat Phrao. This will help us understand the competitive landscape. Let's gather that information now.\", response_metadata={'token_usage': {'completion_tokens': 31, 'prompt_tokens': 420, 'total_tokens': 451}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, name='data collector', id='run-7c940868-75aa-49d1-9d6d-6e2337fb5af7-0')], 'sender': 'data collector'}}\n",
262
  "----\n",
263
- "{'reporter': {'messages': [AIMessage(content='Using the nearby search tool, I will look for restaurants around Lumpini Center in Lat Phrao. Please hold on for a moment while I gather this information.', response_metadata={'token_usage': {'completion_tokens': 32, 'prompt_tokens': 460, 'total_tokens': 492}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, name='reporter', id='run-77f4de5f-c79e-41a1-8b09-1df3a52ab1ce-0')], 'sender': 'reporter'}}\n",
264
  "----\n",
265
- "{'data collector': {'messages': [AIMessage(content=\"I have gathered information about restaurants near Lumpini Center in Lat Phrao. Here are some of the notable establishments:\\n\\n1. **Sizzler** - A popular chain offering grilled dishes and salads.\\n2. **The Pizza Company** - Known for its pizza and Italian cuisine.\\n3. **KFC** - Fast food chain specializing in fried chicken.\\n4. **Chester's Grill** - Offers grilled chicken and fast food options.\\n5. **Mister Donut** - A donut shop that also serves coffee and light snacks.\\n\\nNext, I will gather demographic information about the Lat Phrao district to provide insights into the local community and potential customer base. Please hold on.\", response_metadata={'token_usage': {'completion_tokens': 137, 'prompt_tokens': 491, 'total_tokens': 628}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, name='data collector', id='run-a8551dba-92e1-4160-b7b4-3c4f00a2b8ef-0')], 'sender': 'data collector'}}\n",
266
  "----\n",
267
- "{'reporter': {'messages': [AIMessage(content='I will now search for demographic information about the Lat Phrao district to better understand the local community and potential customer base. Please hold on for a moment.', response_metadata={'token_usage': {'completion_tokens': 31, 'prompt_tokens': 637, 'total_tokens': 668}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_507c9469a1', 'finish_reason': 'stop', 'logprobs': None}, name='reporter', id='run-5e320990-0d22-41e3-be01-0d8906657957-0')], 'sender': 'reporter'}}\n",
268
  "----\n",
269
- "{'data collector': {'messages': [AIMessage(content='I will gather demographic data for the Lat Phrao district, focusing on population size, age distribution, and household income levels. Please hold on while I collect this information.', response_metadata={'token_usage': {'completion_tokens': 34, 'prompt_tokens': 667, 'total_tokens': 701}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, name='data collector', id='run-fe4733fd-15b3-4dc8-aabe-025fffe039ef-0')], 'sender': 'data collector'}}\n",
270
  "----\n",
271
- "{'reporter': {'messages': [AIMessage(content='I am unable to directly retrieve demographic data for the Lat Phrao district. However, I can provide a general overview based on typical characteristics of urban areas in Bangkok.\\n\\n### General Demographic Insights for Lat Phrao District:\\n1. **Population Size**: Lat Phrao is a densely populated area, with a mix of residential and commercial spaces.\\n2. **Age Distribution**: The population includes a significant number of young professionals and families, typically ranging from 20 to 40 years old.\\n3. **Household Income**: The average household income in urban Bangkok can vary, but many residents in Lat Phrao are likely to have a middle-income level, with disposable income for dining out.\\n\\n### Recommendations:\\n1. **Cuisine Selection**: Consider offering a diverse menu that caters to both local tastes and international cuisine, as the area has a mix of residents.\\n2. **Pricing Strategy**: Competitive pricing will be essential, given the presence of established chains and fast-food options.\\n3. **Marketing Approach**: Utilize social media and local advertising to attract young professionals and families, highlighting unique offerings or promotions.\\n\\n### Conclusion:\\nThe competitive landscape around Lumpini Center in Lat Phrao includes a mix of fast food and casual dining options. Understanding the local demographic will be crucial in positioning your restaurant effectively. \\n\\nIf you need more specific data or further analysis, please let me know!', response_metadata={'token_usage': {'completion_tokens': 278, 'prompt_tokens': 710, 'total_tokens': 988}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_507c9469a1', 'finish_reason': 'stop', 'logprobs': None}, name='reporter', id='run-515cfa75-e9b7-4912-b133-ed17dbfa463a-0')], 'sender': 'reporter'}}\n",
272
- "----\n",
273
- "{'data collector': {'messages': [AIMessage(content=\"FINAL ANSWER: I have gathered information about nearby restaurants around Lumpini Center in Lat Phrao, including popular chains like Sizzler, The Pizza Company, KFC, Chester's Grill, and Mister Donut. Additionally, the general demographic insights indicate a densely populated area with a significant number of young professionals and families, typically with middle-income levels. This information can help in strategizing the restaurant's offerings and marketing approach. If you need further details or specific data, please let me know!\", response_metadata={'token_usage': {'completion_tokens': 100, 'prompt_tokens': 987, 'total_tokens': 1087}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, name='data collector', id='run-532ebc54-6ef0-4f3f-8a7e-3b9abd7a86bc-0')], 'sender': 'data collector'}}\n",
274
  "----\n"
275
  ]
276
  }
277
  ],
278
  "source": [
279
- "# content = \"วิเคราะห์ร้านอาหารแถวลุมพินี เซ็นเตอร์ ลาดพร้าว\"\n",
280
- "\n",
281
- "# graph = workflow.compile()\n",
282
- "\n",
283
- "# events = graph.stream(\n",
284
- "# {\n",
285
- "# \"messages\": [\n",
286
- "# HumanMessage(\n",
287
- "# content\n",
288
- "# )\n",
289
- "# ],\n",
290
- "# },\n",
291
- "# # Maximum number of steps to take in the graph\n",
292
- "# {\"recursion_limit\": 10},\n",
293
- "# )\n",
294
- "# for s in events:\n",
295
- "# print(s)\n",
296
- "# print(\"----\")"
297
  ]
298
  },
299
  {
300
  "cell_type": "code",
301
- "execution_count": 5,
302
  "metadata": {},
303
- "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
304
  "source": [
305
  "def submitUserMessage(user_input: str) -> str:\n",
306
  " graph = workflow.compile()\n",
@@ -309,12 +305,12 @@
309
  " {\n",
310
  " \"messages\": [\n",
311
  " HumanMessage(\n",
312
- " content=user_input\n",
313
  " )\n",
314
  " ],\n",
315
  " },\n",
316
  " # Maximum number of steps to take in the graph\n",
317
- " {\"recursion_limit\": 15},\n",
318
  " )\n",
319
  " \n",
320
  " events = [e for e in events]\n",
@@ -325,7 +321,9 @@
325
  " \n",
326
  " return response\n",
327
  "\n",
328
- "#submitUserMessage(\"วิเคราะห์การเปิดร้านกาแฟใกล้มาบุญครอง\")"
 
 
329
  ]
330
  }
331
  ],
 
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
+ "execution_count": 18,
6
  "metadata": {},
7
  "outputs": [],
8
  "source": [
 
15
  },
16
  {
17
  "cell_type": "code",
18
+ "execution_count": 19,
19
  "metadata": {},
20
+ "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
21
  "source": [
22
  "from langchain_core.messages import HumanMessage\n",
23
  "import operator\n",
 
80
  "## tools and LLM\n",
81
  "\n",
82
  "retriever_tool = Tool(\n",
83
+ " name=\"population, community and household expenditures\",\n",
84
  " func=retriever.get_relevant_documents,\n",
85
  " description=\"Use this tool to retrieve information about population, community and household expenditures.\"\n",
86
  ")\n",
 
199
  "workflow.add_conditional_edges(\n",
200
  " \"data collector\",\n",
201
  " router,\n",
202
+ " {\"call_tool\": \"call_tool\", \"continue\": \"reporter\", \"__end__\": END}\n",
203
  ")\n",
204
  "\n",
205
  "workflow.add_conditional_edges(\n",
 
223
  },
224
  {
225
  "cell_type": "code",
226
+ "execution_count": 20,
227
  "metadata": {},
228
  "outputs": [],
229
  "source": [
 
238
  },
239
  {
240
  "cell_type": "code",
241
+ "execution_count": 21,
242
  "metadata": {},
243
  "outputs": [
244
  {
245
  "name": "stdout",
246
  "output_type": "stream",
247
  "text": [
248
+ "{'analyst': {'messages': [AIMessage(content='ในการวิเคราะห์ร้านอาหารแถวลุมพินี เซ็นเตอร์ ลาดพร้าว เราจะเน้นไปที่ข้อมูลที่สำคัญสำหรับการวิเคราะห์ ความเหมาะสม และโอกาสทางการตลาด ซึ่งข้อมูลที่จำเป็นประกอบไปด้วย:\\n\\n1. **ข้อมูลเกี่ยวกับพื้นที่ใก���้เคียง**:\\n - แผนที่และสถานที่ที่ใกล้เคียง เช่น ร้านอาหารที่มีอยู่ในพื้นที่, คอมเพล็กซ์การค้า, สถานที่ทำงาน เป็นต้น\\n\\n2. **ข้อมูลเกี่ยวกับการแข่งขัน**:\\n - ประเภทของร้านอาหารที่มีอยู่ในพื้นที่ เช่น ร้านอาหารไทย, ร้านอาหารนานาชาติ, ฟาสต์ฟู้ด, ฯลฯ\\n - จำนวนร้านอาหารแข่งขันที่อยู่ใกล้ และระดับการให้บริการของแต่ละร้าน\\n\\n3. **ข้อมูลประชากรในเขตนั้น**:\\n - ข้อมูลจำนวนประชากร, อายุ, เพศ และลักษณะทางเศรษฐกิจของประชาชนในพื้นที่\\n\\n4. **ข้อมูลการใช้จ่ายของครัวเรือน**:\\n - รายละเอียดเกี่ยวกับการใช้จ่ายเฉลี่ยของครัวเรือนในหมวดอาหาร และออกไปทานอาหารนอกบ้านในเขตนั้น\\n \\nเพื่อที่จะได้ข้อมูลเหล่านี้ เราจำเป็นต้องค้นหาข้อมูลจากแหล่งข้อมูลที่เหมาะสม โดยจะช่วยให้คุณสามารถวิเคราะห์ความเป็นไปได้ในการเปิดร้านอาหารได้อย่างมีประสิทธิภาพ ติดต่อฉันหากต้องการข้อมูลเพิ่มเติมหรือขั้นตอนถัดไปในการรับข้อมูลเหล่านี้!', response_metadata={'token_usage': {'completion_tokens': 338, 'prompt_tokens': 273, 'total_tokens': 611}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_507c9469a1', 'finish_reason': 'stop', 'logprobs': None}, name='analyst', id='run-d6fd295e-039a-4341-9503-36432e4fa011-0')], 'sender': 'analyst'}}\n",
 
 
249
  "----\n",
250
+ "{'data collector': {'messages': [AIMessage(content='ให้ฉันค้นหาข้อมูลที่เกี่ยวข้องกับพื้นที่ใกล้เคียงลุมพินี เซ็นเตอร์ ลาดพร้าว เพื่อสร้างภาพรวมของร้านอาหารที่มีอยู่ที่นั่น รวมถึงข้อมูลประชากรและการใช้จ่ายของครัวเรือนในเขตนี้ด้วย\\n\\nเริ่มต้นด้วยการค้นหาสถานที่และร้านอาหารที่อยู่ใกล้เคียง ลุมพินี เซ็นเตอร์ ลาดพร้าว!', response_metadata={'token_usage': {'completion_tokens': 97, 'prompt_tokens': 560, 'total_tokens': 657}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, name='data collector', id='run-578d83e5-59ff-4a4b-a120-1f69cf161dd9-0')], 'sender': 'data collector'}}\n",
251
  "----\n",
252
+ "{'reporter': {'messages': [AIMessage(content='กำลังค้นหาสถานที่และร้านอาหารที่อยู่ใกล้ลุมพินี เซ็นเตอร์ ลาดพร้าว! กรุณารอสักครู่...', response_metadata={'token_usage': {'completion_tokens': 36, 'prompt_tokens': 689, 'total_tokens': 725}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, name='reporter', id='run-07551b19-93b9-4b3c-a6ce-e6fc8ae0e598-0')], 'sender': 'reporter'}}\n",
253
  "----\n",
254
+ "{'data collector': {'messages': [AIMessage(content='ค้นพบพื้นที่ใกล้ลุมพินี เซ็นเตอร์ ลาดพร้าว และร้านอาหารที่อยู่ในบริเวณใกล้เคียง เพื่อให้คุณได้ภาพรวมที่ชัดเจนเกี่ยวกับสถานที่ดูแลตำแหน่ง:\\n\\n1. **ลุมพินี เซ็นเตอร์** ตั้งอยู่ในพื้นที่ลาดพร้าวที่เป็นศูนย์กลางการค้า เพิ่มความสะดวกสบายในการเข้าถึง\\n2. **ร้านอาหารที่อยู่ใกล้เคียง** ได้แก่:\\n - ร้านอาหารไทย\\n - ร้านอาหารนานาชาติ\\n - ฟาสต์ฟู้ด\\n - คาเฟ่\\n\\nตอนนี้จะมีการสำรวจข้อมูลประชากรในพื้นที่นั้น และการใช้จ่ายของครัวเรือน ต่อไป!', response_metadata={'token_usage': {'completion_tokens': 166, 'prompt_tokens': 701, 'total_tokens': 867}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, name='data collector', id='run-6b8e4c96-ba2c-409c-a001-cfe502c7f90b-0')], 'sender': 'data collector'}}\n",
255
  "----\n",
256
+ "{'reporter': {'messages': [AIMessage(content='ขออภัยที่ไม่สามารถเข้าถึงข้อมูลประชากรและการใช้จ่ายของครัวเรือนในเขตลุมพินี เซ็นเตอร์ ลาดพร้าวได้ในขณะนี้ อย่างไรก็ตาม ฉันจะสรุปข้อมูลที่มีเพื่อให้คุณได้รับภาพรวมสำหรับร้านอาหารในพื้นที่นี้:\\n\\n### รายงานเบื้องต้น: การวิเคราะห์ร้านอาหารที่ลุมพินี เซ็นเตอร์ ลาดพร้าว\\n\\n#### ข้อมูลสถานที่:\\n- **ลุมพินี เซ็นเตอร์** ตั้งอยู่ในเขตที่มีความหนาแน่นของประชากร และเป็นจุดที่มีการค้าขายที่สูง ทำให้มีศักยภาพในการดึงดูดลูกค้า\\n\\n#### ร้านอาหารที่โดดเด่นในพื้นที่:\\n- มีร้านอาหารหลากหลายประเภท เช่น ร้านอาหารไทยที่ให้บริการอาหารท้องถิ่น, ร้านอาหารนานาชาติซึ่งเหมาะกับนักท่องเที่ยวและคนทำงานในแถวนี้\\n\\n#### ข้อแนะนำ:\\n1. **แตกต่าง:** สร้างจุดขายที่แตกต่างจากคู่แข่ง เช่น การนำเสนอเมนูที่ไม่ซ้ำใคร หรือการใช้วัตถุดิบจากท้องถิ่น\\n2. **การตลาด**: ใช้สื่อออนไลน์ในการโปรโมท เพื่อเข้าถึงเนื้อหาและการเข้าถึงได้ที่ง่ายดาย \\n3. **บริการลูกค้า**: มอบประสบการณ์การบริการที่ดีเยี่ยม เพื่อสร้างความสัมพันธ์ที่ดีและดึงดูดลูกค้ากลับมา\\n\\nหากต้องการข้อมูลเพิ่มเติมหรือมีคำถามใด ๆ สามารถสอบถามเพิ่มเติมได้ค่ะ!', response_metadata={'token_usage': {'completion_tokens': 358, 'prompt_tokens': 899, 'total_tokens': 1257}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, name='reporter', id='run-17168f52-255a-4dbc-8374-17e52acc0ae7-0')], 'sender': 'reporter'}}\n",
257
  "----\n",
258
+ "{'data collector': {'messages': [AIMessage(content='FINAL ANSWER: ฉันได้ทำการรวบรวมข้อมูลเบื้องต้นเกี่ยวกับร้านอาหารในพื้นที่ลุมพินี เซ็นเตอร์ ลาดพร้าว รวมถึงร้านอาหารที่มีอยู่และข้อแนะนำสำหรับการวิเคราะห์ทางการตลาด หากต้องการข้อมูลเพิ่มเติมในส่วนอื่น สามารถสอบถามได้ค่ะ!', response_metadata={'token_usage': {'completion_tokens': 69, 'prompt_tokens': 1233, 'total_tokens': 1302}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, name='data collector', id='run-83cd7939-6c59-48c2-80ac-21a9f917cca4-0')], 'sender': 'data collector'}}\n",
 
 
259
  "----\n"
260
  ]
261
  }
262
  ],
263
  "source": [
264
+ "content = \"วิเคราะห์ร้านอาหารแถวลุมพินี เซ็นเตอร์ ลาดพร้าว\"\n",
265
+ "\n",
266
+ "graph = workflow.compile()\n",
267
+ "\n",
268
+ "events = graph.stream(\n",
269
+ " {\n",
270
+ " \"messages\": [\n",
271
+ " HumanMessage(\n",
272
+ " content\n",
273
+ " )\n",
274
+ " ],\n",
275
+ " },\n",
276
+ " # Maximum number of steps to take in the graph\n",
277
+ " {\"recursion_limit\": 10},\n",
278
+ ")\n",
279
+ "for s in events:\n",
280
+ " print(s)\n",
281
+ " print(\"----\")"
282
  ]
283
  },
284
  {
285
  "cell_type": "code",
286
+ "execution_count": 23,
287
  "metadata": {},
288
+ "outputs": [
289
+ {
290
+ "data": {
291
+ "text/plain": [
292
+ "'The analysis framework for restaurant opportunities near Lumphini Center in Lat Phrao has been outlined, including aspects of competitive analysis, demographic insights, consumer behavior, and expenditure data considerations. To move forward, gather relevant data from local sources, and understand preferences to inform your restaurant concept effectively. If further assistance is needed, please feel free to ask!'"
293
+ ]
294
+ },
295
+ "execution_count": 23,
296
+ "metadata": {},
297
+ "output_type": "execute_result"
298
+ }
299
+ ],
300
  "source": [
301
  "def submitUserMessage(user_input: str) -> str:\n",
302
  " graph = workflow.compile()\n",
 
305
  " {\n",
306
  " \"messages\": [\n",
307
  " HumanMessage(\n",
308
+ " content\n",
309
  " )\n",
310
  " ],\n",
311
  " },\n",
312
  " # Maximum number of steps to take in the graph\n",
313
+ " {\"recursion_limit\": 10},\n",
314
  " )\n",
315
  " \n",
316
  " events = [e for e in events]\n",
 
321
  " \n",
322
  " return response\n",
323
  "\n",
324
+ "\n",
325
+ "content = \"วิเคราะห์ร้านอาหารแถวลุมพินี เซ็นเตอร์ ลาดพร้าว\"\n",
326
+ "submitUserMessage(content)"
327
  ]
328
  }
329
  ],
chatbot_multiagent.py CHANGED
@@ -67,7 +67,7 @@ retriever = vectorstore.as_retriever()
67
  ## tools and LLM
68
 
69
  retriever_tool = Tool(
70
- name="Retriever",
71
  func=retriever.get_relevant_documents,
72
  description="Use this tool to retrieve information about population, community and household expenditures."
73
  )
@@ -186,7 +186,7 @@ workflow.add_conditional_edges(
186
  workflow.add_conditional_edges(
187
  "data collector",
188
  router,
189
- {"continue": "reporter", "call_tool": "call_tool", "__end__": END}
190
  )
191
 
192
  workflow.add_conditional_edges(
@@ -256,7 +256,7 @@ def submitUserMessage(user_input: str) -> str:
256
 
257
  response = list(events[-1].values())[0]["messages"][0]
258
  response = response.content
259
- response = response.replace("FINAL ANSWER: ", "")
260
 
261
  return response
262
 
 
67
  ## tools and LLM
68
 
69
  retriever_tool = Tool(
70
+ name="population, community and household expenditures",
71
  func=retriever.get_relevant_documents,
72
  description="Use this tool to retrieve information about population, community and household expenditures."
73
  )
 
186
  workflow.add_conditional_edges(
187
  "data collector",
188
  router,
189
+ {"call_tool": "call_tool", "continue": "reporter", "__end__": END}
190
  )
191
 
192
  workflow.add_conditional_edges(
 
256
 
257
  response = list(events[-1].values())[0]["messages"][0]
258
  response = response.content
259
+ response = response.replace("FINAL ANSWER", "")
260
 
261
  return response
262