Skip to content

congde/emotional_chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

141 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ๅฟƒ่ฏญๆƒ…ๆ„Ÿ้™ชไผดๆœบๅ™จไบบ ๐Ÿค–๐Ÿ’

ไธ€ไธชๅŸบไบŽ ้˜ฟ้‡Œไบ‘้€šไน‰ๅƒ้—ฎ(Qwen) + Agentๆžถๆž„ + RAG็Ÿฅ่ฏ†ๅบ“ + ๅ‘้‡ๆ•ฐๆฎๅบ“ ็š„ๆ™บ่ƒฝๆƒ…ๆ„Ÿๆ”ฏๆŒ่Šๅคฉๆœบๅ™จไบบ๏ผŒๅ…ทๆœ‰ๆƒ…ๆ„Ÿ่ฏ†ๅˆซใ€ๅ…ฑๆƒ…ๅ›žๅบ”ใ€ไธปๅŠจๆœๅŠกใ€้•ฟๆœŸ่ฎฐๅฟ†ๅ’Œๆ•ฐๆฎๅˆ†ๆž่ƒฝๅŠ›ใ€‚

ๅ‚่€ƒ้กน็›ฎ: emotional_chat

๐Ÿ†• ๆ›ดๆ–ฐ่ฏดๆ˜Ž v3.0.0:

  • โœ… ไปŽ OpenAI GPT ่ฟ็งป่‡ณ้˜ฟ้‡Œไบ‘้€šไน‰ๅƒ้—ฎ(Qwen)
  • โœ… ้›†ๆˆ Agent ๆ™บ่ƒฝๆ ธๅฟƒ๏ผˆไปŽ่ขซๅŠจๅ“ๅบ”ๅ‡็บงๅˆฐไธปๅŠจๆœๅŠก๏ผ‰
  • โœ… ้›†ๆˆ RAG ็Ÿฅ่ฏ†ๅบ“็ณป็ปŸ๏ผˆไธ“ไธšๅฟƒ็†ๅฅๅบท็Ÿฅ่ฏ†ๅขžๅผบ๏ผ‰
  • โœ… ๅˆ†ๅฑ‚ๆœๅŠกๆžถๆž„้‡ๆž„๏ผˆๆ›ดๅฅฝ็š„ๅฏ็ปดๆŠคๆ€งๅ’Œๆ‰ฉๅฑ•ๆ€ง๏ผ‰
  • โœ… Docker ๅฎนๅ™จๅŒ–ๆ”ฏๆŒ๏ผˆไธ€้”ฎ้ƒจ็ฝฒ๏ผ‰

๐Ÿ“‘ ็›ฎๅฝ•

โœจ ๅŠŸ่ƒฝ็‰น็‚น

ๆ ธๅฟƒๅŠŸ่ƒฝ

  • ๐ŸŽญ ๆƒ…ๆ„Ÿ่ฏ†ๅˆซ: ๆ™บ่ƒฝๅˆ†ๆž็”จๆˆทๆƒ…ๆ„Ÿ็Šถๆ€๏ผˆๅผ€ๅฟƒใ€้šพ่ฟ‡ใ€็„ฆ่™‘ใ€ๆ„คๆ€’็ญ‰๏ผ‰
  • ๐ŸŽฏ ๆ„ๅ›พ่ฏ†ๅˆซ: โœ… ๆททๅˆๅผๆ„ๅ›พ่ฏ†ๅˆซ็ณป็ปŸ๏ผŒๅ‡†็กฎ็†่งฃ็”จๆˆทๆ„ๅ›พ๏ผˆ6ๅคง็ฑปๅž‹๏ผ‰
  • ๐Ÿ’ ๅ…ฑๆƒ…ๅ›žๅบ”: ๆ นๆฎๆƒ…ๆ„Ÿ็Šถๆ€ๅ’Œๆ„ๅ›พ็”Ÿๆˆๆธฉๆš–ใ€็†่งฃ็š„ๅ›žๅบ”
  • ๐Ÿง  ้•ฟๆœŸ่ฎฐๅฟ†: โœ… Chroma ๅ‘้‡ๆ•ฐๆฎๅบ“๏ผŒๆ”ฏๆŒ่ทจไผš่ฏ่ฏญไน‰ๆฃ€็ดข
  • ๐Ÿ“š RAG็Ÿฅ่ฏ†ๅบ“: โœ… ้›†ๆˆไธ“ไธšๅฟƒ็†ๅฅๅบท็Ÿฅ่ฏ†ๅบ“๏ผŒๆไพ›็ง‘ๅญฆไพๆฎ็š„ๅปบ่ฎฎ
  • ๐Ÿค– Agentๆ™บ่ƒฝๆ ธๅฟƒ: โœ… ไปŽ่ขซๅŠจๅ“ๅบ”ๅ‡็บงๅˆฐไธปๅŠจๆœๅŠก๏ผŒๆ™บ่ƒฝไปปๅŠก่ง„ๅˆ’ๅ’Œๅทฅๅ…ท่ฐƒ็”จ
  • ๐ŸŽ™๏ธ ๅคšๆจกๆ€ไบคไบ’: ๐Ÿ†• ๆ”ฏๆŒ่ฏญ้Ÿณ่ฏ†ๅˆซใ€่ฏญ้Ÿณๅˆๆˆใ€ๅ›พๅƒ็†่งฃ๏ผŒ่žๅˆๆ–‡ๆœฌ/่ฏญ้Ÿณ/ๅ›พๅƒๆƒ…ๆ„Ÿ
  • ๐Ÿ—„๏ธ ๆ•ฐๆฎๆŒไน…ๅŒ–: MySQL + Redis ๅคšๅฑ‚ๅญ˜ๅ‚จๆžถๆž„
  • ๐Ÿ“Š ๆƒ…ๆ„Ÿ่ถ‹ๅŠฟๅˆ†ๆž: ๅˆ†ๆž็”จๆˆทๆƒ…ๆ„Ÿๅ˜ๅŒ–่ถ‹ๅŠฟๅ’Œๆจกๅผ
  • ๐Ÿ”„ ไธŠไธ‹ๆ–‡็†่งฃ: ๅŸบไบŽๅฏน่ฏๅކๅฒๅ’Œ็”จๆˆท็”ปๅƒๆไพ›่ฟž่ดฏ็š„ๅ›žๅบ”
  • ๐Ÿšจ ๅฑๆœบๆฃ€ๆต‹: ่‡ชๅŠจ่ฏ†ๅˆซๅฑๆœบๆƒ…ๅ†ต๏ผŒๆไพ›ไธ“ไธšๆฑ‚ๅŠฉ่ต„ๆบ

ๆŠ€ๆœฏ็‰นๆ€ง

  • ๐Ÿš€ ้ซ˜ๆ€ง่ƒฝๆžถๆž„: FastAPI + LangChain + ๅˆ†ๅฑ‚ๆœๅŠกๆžถๆž„
  • ๐ŸŽจ ็ŽฐไปฃๅŒ–็•Œ้ข: React 18 + Styled Components + ๆ‰“ๅญ—ๆœบๆ•ˆๆžœ
  • โŒจ๏ธ ๆ‰“ๅญ—ๆœบๆ•ˆๆžœ: ๆ™บ่ƒฝๆ‰“ๅญ—ๆœบๅŠจ็”ป๏ผŒๆ นๆฎๆƒ…็ปช่ฐƒๆ•ด้€Ÿๅบฆๅ’Œๅ…‰ๆ ‡้ขœ่‰ฒ
  • ๐ŸŽ™๏ธ ๅคšๆจกๆ€ๅค„็†: ๐Ÿ†• Whisper่ฏญ้Ÿณ่ฏ†ๅˆซ + gTTS่ฏญ้Ÿณๅˆๆˆ + DeepFaceไบบ่„ธๆƒ…็ปช่ฏ†ๅˆซ
  • ๐Ÿณ ๅฎนๅ™จๅŒ–้ƒจ็ฝฒ: Docker Compose ไธ€้”ฎ้ƒจ็ฝฒ
  • ๐Ÿ“ˆ ็›‘ๆŽงไฝ“็ณป: Prometheus + Grafana ๅฎŒๆ•ด็›‘ๆŽง
  • ๐Ÿ”’ ๅฎ‰ๅ…จ่ฟ‡ๆปค: ่‡ชๅŠจๆฃ€ๆต‹้ซ˜้ฃŽ้™ฉ่ฏๆฑ‡ๅนถๆไพ›ไธ“ไธšๆฑ‚ๅŠฉไฟกๆฏ
  • ๐Ÿ‡จ๐Ÿ‡ณ ไธญๆ–‡ไผ˜ๅŒ–: ไฝฟ็”จ้€šไน‰ๅƒ้—ฎๆจกๅž‹๏ผŒๅฏนไธญๆ–‡็†่งฃๅ’Œ่กจ่พพๆ›ดๅŠ ่‡ช็„ถ
  • ๐Ÿ”„ ๆ•ฐๆฎๅบ“่ฟ็งป: Alembic ็ฎก็†ๆ•ฐๆฎๅบ“็‰ˆๆœฌ
  • ๐Ÿค ๆททๅˆๆžถๆž„: ่ง„ๅˆ™ๅผ•ๆ“Ž + ๆœบๅ™จๅญฆไน ๅˆ†็ฑปๅ™จๅŒ้‡ไฟ้šœ

๐ŸŒŸ ้€šไน‰ๅƒ้—ฎๆจกๅž‹ไผ˜ๅŠฟ

  • ๅ“่ถŠ็š„ไธญๆ–‡่ƒฝๅŠ›: ้’ˆๅฏนไธญๆ–‡ๅœบๆ™ฏๆทฑๅบฆไผ˜ๅŒ–๏ผŒ็†่งฃๅ’Œ่กจ่พพๆ›ด่‡ช็„ถ
  • ๆƒ…ๆ„Ÿๅ…ฑๆƒ…ๅ‡บ่‰ฒ: ๅœจๅฟƒ็†ๅฅๅบทๅœบๆ™ฏ่กจ็Žฐไผ˜ๅผ‚๏ผŒๅ›žๅคๆธฉๆš–็ป†่…ป
  • ็จณๅฎšๅฏ้ : ้˜ฟ้‡Œไบ‘ๅŸบ็ก€่ฎพๆ–ฝไฟ้šœ๏ผŒๆœๅŠก็จณๅฎšๆ€ง้ซ˜
  • ๆˆๆœฌไผ˜ๅŒ–: ็›ธๆฏ”ๅ›ฝๅค–ๆจกๅž‹๏ผŒๆ€งไปทๆฏ”ๆ›ด้ซ˜

๐Ÿค– Agentๆ™บ่ƒฝๆ ธๅฟƒ๏ผˆๆ ธๅฟƒๅŠŸ่ƒฝ๏ผ‰

็Šถๆ€: โœ… ๅทฒๅฎŒๆˆ้›†ๆˆ

ไปŽ"่ขซๅŠจๅ“ๅบ”"ๅ‡็บงๅˆฐ"ไธปๅŠจๆœๅŠก"็š„ๆ™บ่ƒฝๅฏน่ฏ็ณป็ปŸใ€‚

ๆ ธๅฟƒ็ป„ไปถ:

  • ๐Ÿง  Planner (่ง„ๅˆ’ๅ™จ): ๆ™บ่ƒฝไปปๅŠกๅˆ†่งฃๅ’Œ็ญ–็•ฅ้€‰ๆ‹ฉ
  • ๐Ÿ› ๏ธ Tool Caller (ๅทฅๅ…ท่ฐƒ็”จๅ™จ): 10+ ๅ†…็ฝฎๅทฅๅ…ท่‡ชๅŠจ่ฐƒ็”จ
  • ๐Ÿ’พ Memory Hub (่ฎฐๅฟ†ไธญๆžข): ้•ฟ็ŸญๆœŸ่ฎฐๅฟ†็ฎก็†ๅ’Œ็”จๆˆท็”ปๅƒ
  • ๐Ÿ”„ Reflector (ๅๆ€ๅ™จ): ไธปๅŠจๅ›ž่ฎฟๅ’Œ็ญ–็•ฅไผ˜ๅŒ–
  • โš™๏ธ Agent Core (ๆ ธๅฟƒๆŽงๅˆถๅ™จ): ็ปŸ็ญนๅ่ฐƒๆ‰€ๆœ‰็ป„ไปถ

ๅทฅไฝœๅŽŸ็†:

็”จๆˆท่พ“ๅ…ฅ โ†’ Agent Core
            โ†“
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚   Planner   โ”‚ ๅˆ†ๆž็›ฎๆ ‡ใ€ๅˆ†่งฃไปปๅŠก
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ†“
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚  Memory Hub โ”‚ ๆฃ€็ดข่ฎฐๅฟ†ใ€ๆž„ๅปบ็”ปๅƒ
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ†“
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ Tool Caller โ”‚ ่ฐƒ็”จๅทฅๅ…ทใ€ๆ‰ง่กŒไปปๅŠก
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ†“
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚  Reflector  โ”‚ ่ฏ„ไผฐๆ•ˆๆžœใ€่ง„ๅˆ’ๅ›ž่ฎฟ
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ†“
      ๆ™บ่ƒฝๅ›žๅค็”Ÿๆˆ

่ฏฆ็ป†ๆ–‡ๆกฃ: ๆŸฅ็œ‹ AGENT_README.md

โŒจ๏ธ ๆ‰“ๅญ—ๆœบๆ•ˆๆžœ็ณป็ปŸ

็Šถๆ€: โœ… ๅทฒๅฎŒๆˆ้›†ๆˆ

ไธบAIๅ›žๅคๆทปๅŠ ไบ†ๆ™บ่ƒฝๆ‰“ๅญ—ๆœบๆ•ˆๆžœ๏ผŒ่ฎฉๅฏน่ฏๆ›ดๅŠ ็”ŸๅŠจๆœ‰่ถฃใ€‚

ๆ ธๅฟƒ็‰นๆ€ง:

  • ๐ŸŽญ ๆƒ…็ปชๅŒ–ๆ‰“ๅญ—: ๆ นๆฎAIๆƒ…็ปช่ฐƒๆ•ดๆ‰“ๅญ—้€Ÿๅบฆๅ’Œๅ…‰ๆ ‡้ขœ่‰ฒ
  • โšก ๆ™บ่ƒฝ้€Ÿๅบฆ: ๆ ‡็‚น็ฌฆๅทๅœ้กฟใ€ไธญๆ–‡ๅญ—็ฌฆไผ˜ๅŒ–ใ€็ฉบๆ ผๅฟซ้€Ÿ้€š่ฟ‡
  • ๐ŸŽฎ ไบคไบ’ๆŽงๅˆถ: ็‚นๅ‡ปๆš‚ๅœ/ๆขๅคใ€ๆš‚ๅœๆŒ‡็คบๅ™จ
  • ๐ŸŽจ ่ง†่ง‰ๅขžๅผบ: ้—ช็ƒๅ…‰ๆ ‡ใ€ๆƒ…็ปช่‰ฒๅฝฉใ€ๅŠจ็”ปๆ•ˆๆžœ

ๆƒ…็ปชๅŒ–้…็ฝฎ:

๐Ÿ˜ข ๆ‚ฒไผคๆƒ…็ปช: 40ms้€Ÿๅบฆ + ่“่‰ฒๅ…‰ๆ ‡ (#74b9ff)
๐Ÿ˜  ๆ„คๆ€’ๆƒ…็ปช: 20ms้€Ÿๅบฆ + ็บข่‰ฒๅ…‰ๆ ‡ (#ff7675)  
๐Ÿ˜Š ๅผ€ๅฟƒๆƒ…็ปช: 25ms้€Ÿๅบฆ + ็ปฟ่‰ฒๅ…‰ๆ ‡ (#00b894)
๐Ÿ˜ ไธญๆ€งๆƒ…็ปช: 30ms้€Ÿๅบฆ + ้ป‘่‰ฒๅ…‰ๆ ‡ (#333)

ๆŠ€ๆœฏๅฎž็Žฐ:

  • React็ป„ไปถๅŒ–่ฎพ่ฎก
  • ๅŠจๆ€้€Ÿๅบฆ่ฎก็ฎ—็ฎ—ๆณ•
  • ๆƒ…็ปช็Šถๆ€ๆ˜ ๅฐ„
  • ็”จๆˆทไบคไบ’ๆŽงๅˆถ

๐ŸŽฏ ๆ„ๅ›พ่ฏ†ๅˆซ็ณป็ปŸ

็Šถๆ€: โœ… ๅทฒๅฎŒๆˆ้›†ๆˆ

้‡‡็”จ"่ง„ๅˆ™+ๆจกๅž‹"็š„ๆททๅˆๆžถๆž„๏ผŒๅ‡†็กฎ่ฏ†ๅˆซ็”จๆˆทๆ„ๅ›พ๏ผŒไธบๅฏน่ฏ็”Ÿๆˆๆไพ›ๅ…ณ้”ฎไพๆฎใ€‚

ๆ ธๅฟƒ็‰นๆ€ง:

  • ๐Ÿ” ๆททๅˆ่ฏ†ๅˆซ: ่ง„ๅˆ™ๅผ•ๆ“Ž๏ผˆๅฟซ้€Ÿ๏ผ‰+ MLๅˆ†็ฑปๅ™จ๏ผˆๅ‡†็กฎ๏ผ‰
  • ๐Ÿšจ ๅฑๆœบไผ˜ๅ…ˆ: ไผ˜ๅ…ˆๆฃ€ๆต‹ๅฑๆœบๆƒ…ๅ†ต๏ผŒ็กฎไฟๅฎ‰ๅ…จ็ฌฌไธ€
  • ๐Ÿ’ก ๆ™บ่ƒฝPrompt: ๆ นๆฎๆ„ๅ›พ่‡ชๅŠจๆž„ๅปบ้’ˆๅฏนๆ€ง็š„ๅ“ๅบ”็ญ–็•ฅ
  • โšก ้ซ˜ๆ•ˆๅค„็†: ๅ…ณ้”ฎ่ฏๅฟซ้€ŸๅŒน้…๏ผŒๆฏซ็ง’็บงๅ“ๅบ”

6ๅคงๆ„ๅ›พ็ฑปๅž‹:

ๆ„ๅ›พ ่ฏดๆ˜Ž ็คบไพ‹
emotion ๆƒ…ๆ„Ÿ่กจ่พพ "ๆˆ‘ๅฅฝ้šพ่ฟ‡"ใ€"ไปŠๅคฉๅฟƒๆƒ…ไธๅฅฝ"
advice ๅฏปๆฑ‚ๅปบ่ฎฎ "ๆ€ŽไนˆๅŠž๏ผŸ"ใ€"ไฝ ๆœ‰ไป€ไนˆๅปบ่ฎฎ"
conversation ๆ™ฎ้€šๅฏน่ฏ "ไปŠๅคฉๅคฉๆฐ”ไธ้”™"
function ๅŠŸ่ƒฝ่ฏทๆฑ‚ "ๆ้†’ๆˆ‘ๅƒ่ฏ"
crisis ๅฑๆœบๅนฒ้ข„ "ไธๆƒณๆดปไบ†" โš ๏ธ
chat ้—ฒ่Š "ไฝ ๅฅฝ"ใ€"ๅœจๅ—"

ๆต‹่ฏ•ๆ„ๅ›พ่ฏ†ๅˆซ:

# ่ฟ่กŒๆต‹่ฏ•ๅฅ—ไปถ
python3 test_intent_module.py

# ๆต‹่ฏ•APIๆŽฅๅฃ
curl -X POST http://localhost:8000/intent/analyze \
  -H "Content-Type: application/json" \
  -d '{"text": "ๆˆ‘่ฏฅๆ€ŽไนˆๅŠž๏ผŸ", "user_id": "test_user"}'

่ฏฆ็ป†ๆ–‡ๆกฃ: ๆŸฅ็œ‹ docs/ๆ„ๅ›พ่ฏ†ๅˆซๆจกๅ—่ฏดๆ˜Ž.md

๐Ÿ“š RAG็Ÿฅ่ฏ†ๅบ“็ณป็ปŸ

็Šถๆ€: โœ… ๅทฒๅฎŒๆˆ้›†ๆˆ

้›†ๆˆไธ“ไธšๅฟƒ็†ๅฅๅบท็Ÿฅ่ฏ†ๅบ“๏ผŒๆไพ›ๆœ‰็ง‘ๅญฆไพๆฎ็š„ๅปบ่ฎฎใ€‚

็‰นๆ€ง:

  • ๐Ÿ“– ็Ÿฅ่ฏ†ๅŠ ่ฝฝ: ๆ”ฏๆŒ PDFใ€ๆ–‡ๆœฌ็ญ‰ๅคš็งๆ ผๅผ
  • ๐Ÿ” ่ฏญไน‰ๆฃ€็ดข: ๅŸบไบŽๅ‘้‡็›ธไผผๅบฆๆฃ€็ดข็›ธๅ…ณ็Ÿฅ่ฏ†
  • ๐Ÿ’ก ๆ™บ่ƒฝๅขžๅผบ: ่‡ชๅŠจๅˆคๆ–ญไฝ•ๆ—ถไฝฟ็”จ็Ÿฅ่ฏ†ๅบ“
  • ๐ŸŽฏ ็ฒพๅ‡†ๅŒน้…: 6ๅคง็ฑปๅฟƒ็†ๅฅๅบท็Ÿฅ่ฏ†ๅˆ†็ฑป

็Ÿฅ่ฏ†็ฑปๅˆซ:

  1. ่ฎค็Ÿฅ่กŒไธบ็–—ๆณ•๏ผˆCBT๏ผ‰
  2. ๆญฃๅฟตๅ‡ๅŽ‹ๆŠ€ๆœฏ๏ผˆMBSR๏ผ‰
  3. ็งฏๆžๅฟƒ็†ๅญฆ
  4. ็„ฆ่™‘ๅบ”ๅฏน็ญ–็•ฅ
  5. ็ก็œ ๆ”นๅ–„ๆ–นๆณ•
  6. ๆƒ…็ปช่ฐƒ่Š‚ๆŠ€ๅทง

ๅˆๅง‹ๅŒ–็Ÿฅ่ฏ†ๅบ“:

# ๅˆๅง‹ๅŒ–ๅ†…็ฝฎ็Ÿฅ่ฏ†
make rag-init

# ๆˆ–็›ดๆŽฅ่ฟ่กŒ
python init_rag_knowledge.py

่ฏฆ็ป†ๆ–‡ๆกฃ: ๆŸฅ็œ‹ docs/RAGๅฎžๆ–ฝๆญฅ้ชค.md

๐Ÿง  ่ฎฐๅฟ†็ณป็ปŸ

ๅคšๅฑ‚่ฎฐๅฟ†ๆžถๆž„:

็ŸญๆœŸ่ฎฐๅฟ† (MySQL)    +    ้•ฟๆœŸ่ฎฐๅฟ† (Chromaๅ‘้‡ๆ•ฐๆฎๅบ“)
ๅฝ“ๅ‰ไผš่ฏๅฏน่ฏ              ่ทจไผš่ฏ่ฏญไน‰็›ธไผผๅฏน่ฏ
      โ†“                        โ†“
            ไธŠไธ‹ๆ–‡่žๅˆ
                 โ†“
            ็”จๆˆท็”ปๅƒ
                 โ†“
          ๆ™บ่ƒฝๅ›žๅค็”Ÿๆˆ

็‰นๆ€ง:

  • ๐Ÿ” ่ฏญไน‰ๆฃ€็ดข: ๅŸบไบŽ่ฏญไน‰็›ธไผผๅบฆๆฃ€็ดขๅކๅฒๅฏน่ฏ
  • ๐ŸŒ ่ทจไผš่ฏ่ฎฐๅฟ†: ไธ้™ไบŽๅฝ“ๅ‰ไผš่ฏ๏ผŒๅฏ่ฎฟ้—ฎๆ‰€ๆœ‰ๅކๅฒๅฏน่ฏ
  • ๐Ÿ‘ค ็”จๆˆท็”ปๅƒ: ่‡ชๅŠจๆž„ๅปบ็”จๆˆทๆ€งๆ ผ็‰นๅพๅ’Œๅๅฅฝ
  • ๐Ÿ˜Š ๆƒ…ๆ„Ÿๆจกๅผๅญฆไน : ๅญฆไน ็”จๆˆท็š„ๆƒ…ๆ„Ÿ่กจ่พพๆจกๅผ

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

๐Ÿ’ก ๆ็คบ: ๅฎŒๆ•ด่ฏฆ็ป†็š„ๅฎ‰่ฃ…ๆŒ‡ๅ—่ฏทๆŸฅ็œ‹ ๅฟซ้€Ÿๅผ€ๅง‹่ฏฆ็ป†ๆŒ‡ๅ—

๐ŸŽ MacBook ็”จๆˆท: ๆŸฅ็œ‹ไธ“้—จ็š„ MacBook ้…็ฝฎๆŒ‡ๅ— ๆˆ–่ฟ่กŒๅฟซ้€Ÿ้…็ฝฎ่„šๆœฌ ./setup_macbook.sh

ๅฟซ้€ŸๅฏๅŠจ๏ผˆ3ๆญฅ๏ผ‰

# 1. ๅฎ‰่ฃ…ไพ่ต–
make install

# 2. ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“
make db-upgrade

# 3. ๅฏๅŠจๆœๅŠก
make run              # ๅŽ็ซฏๆœๅŠก
cd frontend && npm start  # ๅ‰็ซฏๆœๅŠก๏ผˆๆ–ฐ็ปˆ็ซฏ๏ผ‰

่ฎฟ้—ฎๅœฐๅ€

Docker ไธ€้”ฎ้ƒจ็ฝฒ

# ้…็ฝฎ็Žฏๅขƒๅ˜้‡
cp config.env.example config.env
nano config.env

# ๅฏๅŠจๆ‰€ๆœ‰ๆœๅŠก
docker-compose up -d

๐ŸŽ MacBook ็”จๆˆทๅฟซ้€Ÿ้…็ฝฎ

ๅฏนไบŽ macOS ็”จๆˆท๏ผŒๆˆ‘ไปฌๆไพ›ไบ†ไธ“้—จ็š„้…็ฝฎๆŒ‡ๅ—ๅ’Œ่„šๆœฌ๏ผš

ๆ–นๅผไธ€๏ผšไฝฟ็”จ่‡ชๅŠจ้…็ฝฎ่„šๆœฌ๏ผˆๆŽจ่๏ผ‰

# ่ฟ่กŒ่‡ชๅŠจ้…็ฝฎ่„šๆœฌ
./setup_macbook.sh

ๆ–นๅผไบŒ๏ผšๆ‰‹ๅŠจ้…็ฝฎ

# 1. ๅฎ‰่ฃ… Homebrew๏ผˆๅฆ‚ๆžœๆœชๅฎ‰่ฃ…๏ผ‰
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 2. ๅฎ‰่ฃ…็ณป็ปŸไพ่ต–
brew install python@3.10 mysql node cmake

# 3. ๅˆ›ๅปบ่™šๆ‹Ÿ็Žฏๅขƒ
python3 -m venv venv
source venv/bin/activate

# 4. ๅฎ‰่ฃ… Python ไพ่ต–
pip install -r requirements.txt

# 5. ้…็ฝฎ็Žฏๅขƒๅ˜้‡
cp config.env.example config.env
nano config.env

# ๅŽ็ปญๆญฅ้ชคไธŽ Linux ็›ธๅŒ

๐Ÿ“– ่ฏฆ็ป†ๆ–‡ๆกฃ: ๆŸฅ็œ‹ MacBook ้…็ฝฎๆŒ‡ๅ— ่Žทๅ–ๅฎŒๆ•ด็š„ macOS ๅฎ‰่ฃ…่ฏดๆ˜Žใ€ๅธธ่ง้—ฎ้ข˜่งฃๅ†ณๆ–นๆกˆๅ’Œๆ€ง่ƒฝไผ˜ๅŒ–ๅปบ่ฎฎใ€‚


ๅฟซ้€Ÿๅผ€ๅง‹่ฏฆ็ป†ๆŒ‡ๅ—

1. ็Žฏๅขƒๅ‡†ๅค‡

1.1 ๅฎ‰่ฃ…็ณป็ปŸไพ่ต–

# CentOS/RHEL/Alibaba Cloud Linux
sudo yum install -y cmake gcc gcc-c++ make

# Ubuntu/Debian
sudo apt update && sudo apt install -y cmake gcc g++ make build-essential

1.2 ๅฎ‰่ฃ…Pythonไพ่ต–

cd /home/workSpace/emotional_chat

# ๆฃ€ๆŸฅPython็‰ˆๆœฌ
python3 --version

# ๅฎ‰่ฃ…ไพ่ต–๏ผˆPython 3.10+๏ผ‰
pip3 install --user -r requirements.txt
# ๆˆ– python3.10 -m pip install --user -r requirements.txt

cd frontend && npm install && cd ..

1.3 ้…็ฝฎ็Žฏๅขƒๅ˜้‡

cp config.env.example config.env
nano config.env  # ้…็ฝฎAPIๅฏ†้’ฅๅ’Œๆ•ฐๆฎๅบ“ไฟกๆฏ

ๅฟ…้œ€้…็ฝฎ้กน:

  • LLM_API_KEY ๆˆ– DASHSCOPE_API_KEY: ้˜ฟ้‡Œไบ‘้€šไน‰ๅƒ้—ฎAPIๅฏ†้’ฅ
  • MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD: MySQLๆ•ฐๆฎๅบ“้…็ฝฎ

๐Ÿ“ ่Žทๅ–API Key: ่ฎฟ้—ฎ ้˜ฟ้‡Œไบ‘ DashScope ๅˆ›ๅปบAPI Key

1.4 ๅฎ‰่ฃ…MySQL

# Ubuntu/Debian
sudo apt install mysql-server mysql-client
sudo systemctl start mysql

# CentOS/RHEL
sudo yum install mysql-server mysql
sudo systemctl start mysql

2. ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“

# ๅˆ›ๅปบๆ•ฐๆฎๅบ“
mysql -u root -p -e "CREATE DATABASE emotional_chat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# ่ฟ่กŒๆ•ฐๆฎๅบ“่ฟ็งป
make db-upgrade

# ๅˆๅง‹ๅŒ–RAG็Ÿฅ่ฏ†ๅบ“๏ผˆๆŽจ่๏ผ‰
make rag-init

3. ๅฏๅŠจๆœๅŠก

ๅŽ็ซฏๆœๅŠก:

python3 run_backend.py
# ๆˆ–ไฝฟ็”จ uvicorn๏ผˆไปŽ้กน็›ฎๆ น็›ฎๅฝ•๏ผ‰
python3 -m uvicorn backend.app:app --host 0.0.0.0 --port 8000 --reload

ๅ‰็ซฏๆœๅŠก๏ผˆๆ–ฐ็ปˆ็ซฏ๏ผ‰:

cd frontend
npm start

4. ้ชŒ่ฏๆœๅŠก

# ๅฅๅบทๆฃ€ๆŸฅ
curl http://localhost:8000/health

# ๆต‹่ฏ•่ŠๅคฉๆŽฅๅฃ
curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "ไฝ ๅฅฝ", "user_id": "test_user"}'

5. ๆ•…้šœๆŽ’้™ค

ๅธธ่ง้—ฎ้ข˜:

  • ็ซฏๅฃๅ†ฒ็ช: netstat -tulpn | grep :8000 ๆŸฅ็œ‹ๅ ็”จ
  • ไพ่ต–ๅฎ‰่ฃ…ๅคฑ่ดฅ: ็กฎไฟๅทฒๅฎ‰่ฃ… CMake ๅ’Œ็ผ–่ฏ‘ๅทฅๅ…ท
  • ๆ•ฐๆฎๅบ“่ฟžๆŽฅๅคฑ่ดฅ: ๆฃ€ๆŸฅ config.env ไธญ็š„ๆ•ฐๆฎๅบ“้…็ฝฎ

๐Ÿ“– ๆ›ดๅคšๅธฎๅŠฉ: ๆŸฅ็œ‹ ๅฎŒๆ•ดๅฎ‰่ฃ…ๆŒ‡ๅ— ๆˆ–ๆไบค Issue


๐Ÿ—๏ธ ็ณป็ปŸๆžถๆž„

ๆ€ปไฝ“ๆžถๆž„ๅ›พ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   ๅ‰็ซฏๅฑ‚ (Frontend)                   โ”‚
โ”‚              React 18 + Styled Components            โ”‚
โ”‚                    ็ซฏๅฃ: 3000                         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚ HTTP/WebSocket
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    ่ทฏ็”ฑๅฑ‚ (Router)                    โ”‚
โ”‚    Chat | Memory | Feedback | Evaluation | RAG       โ”‚
โ”‚                    Agent Router                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   ๆœๅŠกๅฑ‚ (Service)                    โ”‚
โ”‚  ChatService | MemoryService | ContextService        โ”‚
โ”‚              AgentService (ๅฏ้€‰)                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                 ๆ ธๅฟƒๅฑ‚ (Core/Module)                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ Agent Core   โ”‚  โ”‚  RAG Module  โ”‚  โ”‚ LLM Moduleโ”‚  โ”‚
โ”‚  โ”‚ โ€ข Planner    โ”‚  โ”‚ โ€ข KB Manager โ”‚  โ”‚โ€ข Qwen API โ”‚  โ”‚
โ”‚  โ”‚ โ€ข Tool Callerโ”‚  โ”‚ โ€ข Retriever  โ”‚  โ”‚โ€ข LangChainโ”‚  โ”‚
โ”‚  โ”‚ โ€ข Memory Hub โ”‚  โ”‚ โ€ข Embedder   โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚  โ”‚ โ€ข Reflector  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                                    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                  ๆ•ฐๆฎๅฑ‚ (Data)                        โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”           โ”‚
โ”‚  โ”‚  MySQL   โ”‚  โ”‚ ChromaDB โ”‚  โ”‚  Redis   โ”‚           โ”‚
โ”‚  โ”‚ๅ…ณ็ณปๆ•ฐๆฎๅบ“ โ”‚  โ”‚ๅ‘้‡ๆ•ฐๆฎๅบ“โ”‚  โ”‚  ็ผ“ๅญ˜    โ”‚           โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๅˆ†ๅฑ‚ๆœๅŠกๆžถๆž„่ฏฆ่งฃ

1. ่ทฏ็”ฑๅฑ‚ (Router Layer)

่ดŸ่ดฃAPIๆŽฅๅฃๅฎšไน‰ๅ’Œ่ฏทๆฑ‚ๅˆ†ๅ‘

backend/routers/
โ”œโ”€โ”€ chat.py          - ่ŠๅคฉๆŽฅๅฃ
โ”œโ”€โ”€ memory.py        - ่ฎฐๅฟ†็ฎก็†ๆŽฅๅฃ
โ”œโ”€โ”€ feedback.py      - ็”จๆˆทๅ้ฆˆๆŽฅๅฃ
โ”œโ”€โ”€ evaluation.py    - ่ฏ„ไผฐ็ณป็ปŸๆŽฅๅฃ
โ””โ”€โ”€ agent.py         - Agentๆ™บ่ƒฝๆŽฅๅฃ

2. ๆœๅŠกๅฑ‚ (Service Layer)

ไธšๅŠก้€ป่พ‘ๅฐ่ฃ…ๅ’Œ็ผ–ๆŽ’

backend/services/
โ”œโ”€โ”€ chat_service.py      - ่ŠๅคฉๆœๅŠก
โ”œโ”€โ”€ memory_service.py    - ่ฎฐๅฟ†ๆœๅŠก
โ”œโ”€โ”€ context_service.py   - ไธŠไธ‹ๆ–‡ๆœๅŠก
โ””โ”€โ”€ agent_service.py     - AgentๆœๅŠก๏ผˆๅฏ้€‰๏ผ‰

3. ๆ ธๅฟƒๅฑ‚ (Core/Module Layer)

ๆ ธๅฟƒๅŠŸ่ƒฝๆจกๅ—

backend/modules/
โ”œโ”€โ”€ agent/          - Agentๆ™บ่ƒฝๆ ธๅฟƒ
โ”‚   โ”œโ”€โ”€ core/       - Agent Core, Planner, Tool Caller็ญ‰
โ”‚   โ”œโ”€โ”€ services/   - AgentๆœๅŠกๅฎž็Žฐ
โ”‚   โ””โ”€โ”€ routers/    - Agent่ทฏ็”ฑ
โ”œโ”€โ”€ rag/            - RAG็Ÿฅ่ฏ†ๅบ“็ณป็ปŸ
โ”‚   โ”œโ”€โ”€ core/       - ็Ÿฅ่ฏ†ๅบ“็ฎก็†ใ€ๆฃ€็ดข
โ”‚   โ”œโ”€โ”€ services/   - RAGๆœๅŠก
โ”‚   โ””โ”€โ”€ routers/    - RAG่ทฏ็”ฑ
โ””โ”€โ”€ llm/            - LLMๆจกๅž‹ๅฐ่ฃ…
    โ”œโ”€โ”€ core/       - LLMๆ ธๅฟƒๅŠŸ่ƒฝ
    โ”œโ”€โ”€ providers/  - LLMๆไพ›ๅ•†ๅฐ่ฃ…๏ผˆOpenAIใ€Anthropic็ญ‰๏ผ‰
    โ””โ”€โ”€ services/   - LLMๆœๅŠก

4. ๆ•ฐๆฎๅฑ‚ (Data Layer)

ๆ•ฐๆฎๅญ˜ๅ‚จๅ’Œ็ฎก็†

  • MySQL: ็”จๆˆทๆ•ฐๆฎใ€ๅฏน่ฏๅކๅฒใ€ๆƒ…ๆ„Ÿ่ฎฐๅฝ•
  • ChromaDB: ๅ‘้‡ๅญ˜ๅ‚จใ€่ฏญไน‰ๆฃ€็ดข
  • Redis: ็ผ“ๅญ˜ใ€ไผš่ฏ็Šถๆ€๏ผˆ็”Ÿไบง็Žฏๅขƒ๏ผ‰

๐Ÿ“– ่ฏฆ็ป†ๆžถๆž„ๆ–‡ๆกฃ: ๆŸฅ็œ‹็›ธๅ…ณๆจกๅ—ๆ–‡ๆกฃ

๐Ÿ› ๏ธ ๆŠ€ๆœฏๆ ˆ

ๅŽ็ซฏๆŠ€ๆœฏ

ๆ ธๅฟƒๆก†ๆžถ

  • Python 3.10+: ไธป่ฆๅผ€ๅ‘่ฏญ่จ€
    • ไฝฟ็”จ requirements.txt ๅฎ‰่ฃ…ไพ่ต–
  • FastAPI 0.83+: ็ŽฐไปฃๅŒ–็š„Webๆก†ๆžถ
  • LangChain 0.1+: ๅฏน่ฏๆต็ฎก็†ๅ’Œ่ฎฐๅฟ†็ฎก็†
  • Pydantic: ๆ•ฐๆฎ้ชŒ่ฏๅ’Œๅบๅˆ—ๅŒ–

AI & ๅคงๆจกๅž‹

  • ้˜ฟ้‡Œไบ‘้€šไน‰ๅƒ้—ฎ (Qwen Plus): ๅคง่ฏญ่จ€ๆจกๅž‹
  • LangChain-OpenAI: LLM้›†ๆˆ
  • Sentence Transformers: ๆ–‡ๆœฌๅตŒๅ…ฅๆจกๅž‹

ๆ•ฐๆฎๅญ˜ๅ‚จ

  • MySQL 8.0: ๅ…ณ็ณปๅž‹ๆ•ฐๆฎๅบ“๏ผˆ็”จๆˆทๆ•ฐๆฎใ€ๅฏน่ฏๅކๅฒ๏ผ‰
  • ChromaDB 0.4+: ๅ‘้‡ๆ•ฐๆฎๅบ“๏ผˆ่ฏญไน‰ๆฃ€็ดขใ€้•ฟๆœŸ่ฎฐๅฟ†๏ผ‰
  • Redis 7: ็ผ“ๅญ˜ๅ’Œไผš่ฏ็ฎก็†๏ผˆ็”Ÿไบง็Žฏๅขƒ๏ผ‰
  • SQLAlchemy 1.4+: ORMๆก†ๆžถ
  • Alembic: ๆ•ฐๆฎๅบ“่ฟ็งปๅทฅๅ…ท

ๆ–‡ๆกฃๅค„็†

  • PyPDF 3.17+: PDFๆ–‡ๆกฃ่งฃๆž
  • python-multipart: ๆ–‡ไปถไธŠไผ ๆ”ฏๆŒ

่ฟ็ปดๅทฅๅ…ท

  • Docker & Docker Compose: ๅฎนๅ™จๅŒ–้ƒจ็ฝฒ
  • Prometheus: ๆŒ‡ๆ ‡็›‘ๆŽง
  • Grafana: ๆ•ฐๆฎๅฏ่ง†ๅŒ–
  • Elasticsearch & Kibana: ๆ—ฅๅฟ—่šๅˆๅ’Œๅˆ†ๆž
  • Nginx: ๅๅ‘ไปฃ็†

ๅ‰็ซฏๆŠ€ๆœฏ

  • React 18: UIๆก†ๆžถ
  • Styled Components: CSS-in-JSๆ ทๅผๆ–นๆกˆ
  • Framer Motion: ๅŠจ็”ปๆ•ˆๆžœๅบ“
  • Axios: HTTPๅฎขๆˆท็ซฏ

ๅผ€ๅ‘ๅทฅๅ…ท

  • Makefile: ๅ‘ฝไปค่กŒๅทฅๅ…ท้›†ๆˆ
  • Python dotenv: ็Žฏๅขƒๅ˜้‡็ฎก็†
  • Logging: ็ป“ๆž„ๅŒ–ๆ—ฅๅฟ—็ณป็ปŸ

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

1. ็Žฏๅขƒๅ‡†ๅค‡

1.1 ๅฎ‰่ฃ…็ณป็ปŸไพ่ต–๏ผˆๅฟ…้œ€๏ผ‰

ๅฎ‰่ฃ… CMake ๅ’Œ็ผ–่ฏ‘ๅทฅๅ…ท

ๆŸไบ› Python ๅŒ…๏ผˆๅฆ‚ dlibใ€opencv-python๏ผ‰้œ€่ฆไปŽๆบ็ ็ผ–่ฏ‘๏ผŒๅ› ๆญค้œ€่ฆๅฎ‰่ฃ…็ผ–่ฏ‘ๅทฅๅ…ท๏ผš

# CentOS/RHEL/Alibaba Cloud Linux
sudo yum install -y cmake gcc gcc-c++ make

# Ubuntu/Debian
sudo apt update
sudo apt install -y cmake gcc g++ make build-essential

# ้ชŒ่ฏๅฎ‰่ฃ…
cmake --version
gcc --version

ๆณจๆ„๏ผš

  • dlib๏ผˆface-recognition ็š„ไพ่ต–๏ผ‰้œ€่ฆ CMake ็ผ–่ฏ‘๏ผŒ้ข„่ฎก็ผ–่ฏ‘ๆ—ถ้—ด 10-30 ๅˆ†้’Ÿ
  • opencv-python ไนŸ้œ€่ฆ็ผ–่ฏ‘๏ผŒ้ข„่ฎก็ผ–่ฏ‘ๆ—ถ้—ด 5-15 ๅˆ†้’Ÿ
  • ๅฆ‚ๆžœไธ้œ€่ฆไบบ่„ธ่ฏ†ๅˆซๅŠŸ่ƒฝ๏ผŒๅฏไปฅๆณจ้‡Šๆމ requirements.txt ไธญ็š„ face-recognition>=1.3.0

1.2 ๅฎ‰่ฃ…Pythonไพ่ต–

# ่ฟ›ๅ…ฅ้กน็›ฎ็›ฎๅฝ•
cd /home/emotional_chat

# ๆฃ€ๆŸฅPython็‰ˆๆœฌ
python3 --version

# ๅฎ‰่ฃ…ไพ่ต–๏ผˆPython 3.10+๏ผ‰
pip3 install --user -r requirements.txt

# ๆณจๆ„๏ผšๅฆ‚ๆžœ้‡ๅˆฐ dlib ็ผ–่ฏ‘ๅคฑ่ดฅ๏ผŒ่ฏท็กฎไฟๅทฒๅฎ‰่ฃ… CMake
# ๅฆ‚ๆžœ้‡ๅˆฐ็‰ˆๆœฌๅ†ฒ็ช๏ผŒ่ฏทๅ‚่€ƒๅฏนๅบ” requirements ๆ–‡ไปถไธญ็š„ๆณจ้‡Š่ฏดๆ˜Ž

# ๅฎ‰่ฃ…ๅ‰็ซฏไพ่ต–
cd frontend
npm install
cd ..

1.3 ้…็ฝฎ็Žฏๅขƒๅ˜้‡

# ๅคๅˆถ็Žฏๅขƒๅ˜้‡ๆจกๆฟ
cp config.env.example config.env

# ็ผ–่พ‘้…็ฝฎๆ–‡ไปถ
nano config.env

้…็ฝฎๅ†…ๅฎน๏ผš

# API้…็ฝฎ - ไฝฟ็”จ้˜ฟ้‡Œไบ‘้€šไน‰ๅƒ้—ฎ(Qwen)
LLM_API_KEY=your_qwen_api_key_here
# ๆˆ–่€…ไฝฟ็”จ DASHSCOPE_API_KEY (ๅ…ผๅฎนๆ—ง็‰ˆๆœฌ)
# DASHSCOPE_API_KEY=your_qwen_api_key_here
LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

# MySQLๆ•ฐๆฎๅบ“้…็ฝฎ
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=emotional_chat

# ๆจกๅž‹้…็ฝฎ - ไฝฟ็”จ้€šไน‰ๅƒ้—ฎ
DEFAULT_MODEL=qwen-plus
TEMPERATURE=0.7
MAX_TOKENS=1000

# ๆœๅŠกๅ™จ้…็ฝฎ
HOST=0.0.0.0
PORT=8000
DEBUG=true

่Žทๅ–้€šไน‰ๅƒ้—ฎ API Key๏ผš

  1. ่ฎฟ้—ฎ้˜ฟ้‡Œไบ‘ DashScope ๅนณๅฐ๏ผšhttps://dashscope.console.aliyun.com/
  2. ็™ปๅฝ•้˜ฟ้‡Œไบ‘่ดฆๅท
  3. ๅˆ›ๅปบ API Key
  4. ๅฐ† API Key ๅกซๅ…ฅ config.env ๆ–‡ไปถ

1.4 ๅฎ‰่ฃ…ๅ’Œ้…็ฝฎMySQL

# Ubuntu/Debian
sudo apt update
sudo apt install mysql-server mysql-client

# CentOS/RHEL
sudo yum install mysql-server mysql

# ๅฏๅŠจMySQLๆœๅŠก
sudo systemctl start mysql
sudo systemctl enable mysql

# ้…็ฝฎMySQL๏ผˆๅฏ้€‰๏ผ‰
sudo mysql_secure_installation

2. ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“

2.1 ๅˆ›ๅปบMySQLๆ•ฐๆฎๅบ“

# ็™ปๅฝ•MySQL
mysql -u root -p

# ๅˆ›ๅปบๆ•ฐๆฎๅบ“
CREATE DATABASE emotional_chat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# ้€€ๅ‡บMySQL
exit;

2.2 ่ฟ่กŒๆ•ฐๆฎๅบ“่ฟ็งป

# ๆ–นๆณ•1๏ผšไฝฟ็”จMakefile๏ผˆๆŽจ่๏ผ‰
make db-init          # ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“
make db-upgrade       # ๅ‡็บงๅˆฐๆœ€ๆ–ฐ็‰ˆๆœฌ

# ๆ–นๆณ•2๏ผšไฝฟ็”จAlembicๅ‘ฝไปค
alembic upgrade head  # ๅ‡็บงๅˆฐๆœ€ๆ–ฐ็‰ˆๆœฌ

# ๆŸฅ็œ‹ๆ•ฐๆฎๅบ“็Šถๆ€
make db-current       # ๆŸฅ็œ‹ๅฝ“ๅ‰็‰ˆๆœฌ
make db-history       # ๆŸฅ็œ‹่ฟ็งปๅކๅฒ

2.3 ๅˆๅง‹ๅŒ–RAG็Ÿฅ่ฏ†ๅบ“๏ผˆๅฏ้€‰ไฝ†ๆŽจ่๏ผ‰

# ไฝฟ็”จMakefile
make rag-init

# ๆˆ–็›ดๆŽฅ่ฟ่กŒ
python init_rag_knowledge.py

3. ๅฏๅŠจๆœๅŠก

3.1 ๅฏๅŠจๅŽ็ซฏๆœๅŠก

# ๆ–นๆณ•1๏ผšไฝฟ็”จๅฏๅŠจ่„šๆœฌ๏ผˆๆŽจ่๏ผŒ้ฟๅ…ๆ–‡ไปถ็›‘่ง†้™ๅˆถ้—ฎ้ข˜๏ผ‰
python3 run_backend.py

# ๆ–นๆณ•2๏ผš็›ดๆŽฅๅœจbackend็›ฎๅฝ•ๅฏๅŠจ
cd backend
python3 -m uvicorn backend.app:app --host 0.0.0.0 --port 8000 --reload

ๆณจๆ„๏ผšๅฏๅŠจ่„šๆœฌไผš่‡ชๅŠจๅˆ‡ๆขๅˆฐ backend ็›ฎๅฝ•่ฟ่กŒ๏ผŒ้ฟๅ… watchfiles ๆ‰ซๆ frontend/node_modules ๅฏผ่‡ด็š„ๆ–‡ไปถ็›‘่ง†้™ๅˆถ้—ฎ้ข˜ใ€‚

ๅŽ็ซฏๆœๅŠกๅฐ†ๅœจ http://localhost:8000 ๅฏๅŠจ๏ผŒAPIๆ–‡ๆกฃๅฏๅœจ http://localhost:8000/docs ๆŸฅ็œ‹ใ€‚

3.2 ๅฏๅŠจๅ‰็ซฏๆœๅŠก

# ๆ–ฐๅผ€ไธ€ไธช็ปˆ็ซฏ็ช—ๅฃ
cd /home/emotional_chat/frontend

# ๅฏๅŠจๅ‰็ซฏๆœๅŠก๏ผˆ็ซฏๅฃ3000๏ผ‰
npm start

ๅ‰็ซฏๅบ”็”จๅฐ†ๅœจ http://localhost:3000 ๅฏๅŠจใ€‚

4. ้ชŒ่ฏๆœๅŠก

ๆฃ€ๆŸฅๅŽ็ซฏๆœๅŠก

# ๅฅๅบทๆฃ€ๆŸฅ
curl http://localhost:8000/health
# ้ข„ๆœŸๅ“ๅบ”ๅŒ…ๅซ: version: "3.0.0", agent_enabled: true

# ๆŸฅ็œ‹็ณป็ปŸไฟกๆฏ๏ผˆไบ†่งฃๆžถๆž„๏ผ‰
curl http://localhost:8000/system/info

# ๆŸฅ็œ‹APIๆ น่ทฏๅพ„
curl http://localhost:8000/
# ้ข„ๆœŸๅ“ๅบ”ๅŒ…ๅซ: Agentๆ™บ่ƒฝๆ ธๅฟƒใ€RAG็Ÿฅ่ฏ†ๅบ“็ญ‰ๅŠŸ่ƒฝๅˆ—่กจ

# ๆต‹่ฏ•ๆ™ฎ้€š่ŠๅคฉๆŽฅๅฃ
curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "ไฝ ๅฅฝ๏ผŒๆˆ‘ไปŠๅคฉๅฟƒๆƒ…ๅพˆๅฅฝ๏ผ", "user_id": "test_user"}'

# ๆต‹่ฏ•AgentๆŽฅๅฃ๏ผˆๅฆ‚ๆžœๅฏ็”จ๏ผ‰
curl -X POST http://localhost:8000/agent/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "ๆˆ‘ๆœ€่ฟ‘็กไธๅฅฝ๏ผŒๆ€ŽไนˆๅŠž๏ผŸ", "user_id": "test_user"}'

# ๆŸฅ็œ‹APIๆ–‡ๆกฃ
open http://localhost:8000/docs  # ๆˆ–ๅœจๆต่งˆๅ™จไธญ่ฎฟ้—ฎ

ๆฃ€ๆŸฅๅ‰็ซฏๆœๅŠก

  • ๆ‰“ๅผ€ๆต่งˆๅ™จ่ฎฟ้—ฎ http://localhost:3000
  • ๅบ”่ฏฅ่ƒฝ็œ‹ๅˆฐ็ŽฐไปฃๅŒ–็š„่Šๅคฉ็•Œ้ข

ๆฃ€ๆŸฅๆ•ฐๆฎๅบ“่ฟžๆŽฅ

# ไฝฟ็”จMakefile
make db-check

# ๆŸฅ็œ‹่กจ็ป“ๆž„
mysql -u root -p emotional_chat -e "SHOW TABLES;"

ๆฃ€ๆŸฅRAG็Ÿฅ่ฏ†ๅบ“

# ๆต‹่ฏ•RAG็ณป็ปŸ
make rag-test

# ๆˆ–ๆŸฅ็œ‹็Ÿฅ่ฏ†ๅบ“็Šถๆ€
curl http://localhost:8000/rag/status

5. ไฝฟ็”จ่ฏดๆ˜Ž

  1. ๆ‰“ๅผ€ๆต่งˆๅ™จ่ฎฟ้—ฎ http://localhost:3000
  2. ๅœจ่พ“ๅ…ฅๆก†ไธญ่พ“ๅ…ฅไฝ ็š„ๆƒณๆณ•ๅ’Œๆ„Ÿๅ—
  3. ๆœบๅ™จไบบไผšๅˆ†ๆžไฝ ็š„ๆƒ…ๆ„Ÿๅนถ็ป™ๅ‡บๅ…ฑๆƒ…ๅ›žๅบ”
  4. ๆ”ฏๆŒๅคš่ฝฎๅฏน่ฏ๏ผŒๆœบๅ™จไบบไผš่ฎฐไฝๅฏน่ฏๅކๅฒ
  5. ๆŸฅ็œ‹APIๆ–‡ๆกฃ๏ผšhttp://localhost:8000/docs

6. ๆ•…้šœๆŽ’้™ค

ๅŽ็ซฏๅฏๅŠจๅคฑ่ดฅ

# ๆฃ€ๆŸฅPython็‰ˆๆœฌ
python3 --version

# ๆฃ€ๆŸฅไพ่ต–ๅฎ‰่ฃ…
pip3 list | grep fastapi

# ๆ‰‹ๅŠจๅฎ‰่ฃ…ไพ่ต–๏ผˆPython 3.10+๏ผ‰
python3 --version  # ๅ…ˆๆฃ€ๆŸฅ็‰ˆๆœฌ
pip3 install --user -r requirements.txt

# ๆฃ€ๆŸฅMySQL่ฟžๆŽฅ
python3 setup_database.py

ๅ‰็ซฏๅฏๅŠจๅคฑ่ดฅ

# ๆฃ€ๆŸฅNode.js็‰ˆๆœฌ
node --version
npm --version

# ๆธ…็†ๅนถ้‡ๆ–ฐๅฎ‰่ฃ…ไพ่ต–
cd frontend
rm -rf node_modules package-lock.json
npm install

็ซฏๅฃๅ†ฒ็ช

# ๆฃ€ๆŸฅ็ซฏๅฃๅ ็”จ
netstat -tulpn | grep :8000
netstat -tulpn | grep :3000

# ๆ€ๆญปๅ ็”จ็ซฏๅฃ็š„่ฟ›็จ‹
sudo kill -9 <PID>

๐ŸŽฏ ๅฟซ้€ŸๅฏๅŠจๆ€ป็ป“

ๆ–นๅผไธ€๏ผšไฝฟ็”จMakefile๏ผˆๆŽจ่๏ผ‰

# 1. ๅฎ‰่ฃ…ไพ่ต–
make install

# 2. ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“
make db-upgrade

# 3. ๅˆๅง‹ๅŒ–RAG็Ÿฅ่ฏ†ๅบ“๏ผˆๅฏ้€‰๏ผ‰
make rag-init

# 4. ๅฏๅŠจๅŽ็ซฏๆœๅŠก
make run

ๆ–นๅผไบŒ๏ผšไฝฟ็”จDocker Compose

# ไธ€้”ฎๅฏๅŠจๆ‰€ๆœ‰ๆœๅŠก๏ผˆๅŒ…ๅซ็›‘ๆŽงๆ ˆ๏ผ‰
docker-compose up -d

# ๆŸฅ็œ‹ๆœๅŠก็Šถๆ€
docker-compose ps

ๆ–นๅผไธ‰๏ผšไผ ็ปŸๆ–นๅผ

็ปˆ็ซฏ1 - ๅฏๅŠจๅŽ็ซฏ๏ผš

# ๅœจ้กน็›ฎๆ น็›ฎๅฝ•่ฟ่กŒ๏ผˆๆŽจ่๏ผ‰
python3 run_backend.py

# ๆˆ–่€…ไฝฟ็”จuvicorn
cd backend
python3 -m uvicorn backend.app:app --host 0.0.0.0 --port 8000 --reload

็ปˆ็ซฏ2 - ๅฏๅŠจๅ‰็ซฏ๏ผš

cd frontend
npm start

่ฎฟ้—ฎๅœฐๅ€

ๆต‹่ฏ•็ณป็ปŸ

# ๆต‹่ฏ•ๅŽ็ซฏๅฅๅบท็Šถๆ€
curl http://localhost:8000/health

# ๆŸฅ็œ‹็ณป็ปŸไฟกๆฏ
curl http://localhost:8000/

# ๆต‹่ฏ•ๆ™ฎ้€š่Šๅคฉ
curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "ไฝ ๅฅฝ", "user_id": "test_user"}'

# ๆต‹่ฏ•Agent่Šๅคฉ๏ผˆๆ™บ่ƒฝๆจกๅผ๏ผ‰
curl -X POST http://localhost:8000/agent/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "ๆˆ‘ๆœ€่ฟ‘ๅŽ‹ๅŠ›ๅพˆๅคง", "user_id": "test_user"}'

# ๆต‹่ฏ•RAG็Ÿฅ่ฏ†ๅบ“
curl -X POST http://localhost:8000/rag/search \
  -H "Content-Type: application/json" \
  -d '{"query": "ๅฆ‚ไฝ•ๅ‡ๅŽ‹", "top_k": 3}'

ๅธธ็”จMakefileๅ‘ฝไปค

make help         # ๆŸฅ็œ‹ๆ‰€ๆœ‰ๅฏ็”จๅ‘ฝไปค
make db-check     # ๆฃ€ๆŸฅๆ•ฐๆฎๅบ“่ฟžๆŽฅ
make db-current   # ๆŸฅ็œ‹ๅฝ“ๅ‰ๆ•ฐๆฎๅบ“็‰ˆๆœฌ
make rag-test     # ๆต‹่ฏ•RAG็ณป็ปŸ
make rag-demo     # RAGๆ•ˆๆžœๅฏนๆฏ”ๆผ”็คบ

๐Ÿ“ ้กน็›ฎ็ป“ๆž„

emotional_chat/
โ”œโ”€โ”€ backend/                          # ๅŽ็ซฏไปฃ็ ็›ฎๅฝ•
โ”‚   โ”œโ”€โ”€ __init__.py                  
โ”‚   โ”œโ”€โ”€ app.py                       # โœ… FastAPIๅบ”็”จๅทฅๅŽ‚๏ผˆไธปๅ…ฅๅฃ๏ผ‰
โ”‚   โ”œโ”€โ”€ main.py                      # ๆ—ง็‰ˆไธป็จ‹ๅบ๏ผˆๅ…ผๅฎนๆ€ง๏ผ‰
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ routers/                     # ่ทฏ็”ฑๅฑ‚ - APIๆŽฅๅฃๅฎšไน‰
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ chat.py                  # ่ŠๅคฉๆŽฅๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ enhanced_chat.py         # ๅขžๅผบ็‰ˆ่ŠๅคฉๆŽฅๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ streaming_chat.py        # ๆตๅผ่ŠๅคฉๆŽฅๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ memory.py                # ่ฎฐๅฟ†็ฎก็†ๆŽฅๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ feedback.py              # ๅ้ฆˆๆŽฅๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ evaluation.py            # ่ฏ„ไผฐๆŽฅๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ agent.py                 # Agentๆ™บ่ƒฝๆŽฅๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ emotion_analysis.py      # ๆƒ…ๆ„Ÿๅˆ†ๆžๆŽฅๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ performance.py           # ๆ€ง่ƒฝ็›‘ๆŽงๆŽฅๅฃ
โ”‚   โ”‚   โ””โ”€โ”€ personalization.py       # ไธชๆ€งๅŒ–้…็ฝฎๆŽฅๅฃ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ services/                    # ๆœๅŠกๅฑ‚ - ไธšๅŠก้€ป่พ‘
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ chat_service.py          # ่ŠๅคฉๆœๅŠก
โ”‚   โ”‚   โ”œโ”€โ”€ enhanced_chat_service.py # ๅขžๅผบ็‰ˆ่ŠๅคฉๆœๅŠก
โ”‚   โ”‚   โ”œโ”€โ”€ optimized_chat_service.py # ไผ˜ๅŒ–็‰ˆ่ŠๅคฉๆœๅŠก
โ”‚   โ”‚   โ”œโ”€โ”€ memory_service.py        # ่ฎฐๅฟ†ๆœๅŠก
โ”‚   โ”‚   โ”œโ”€โ”€ enhanced_memory_manager.py # ๅขžๅผบ็‰ˆ่ฎฐๅฟ†็ฎก็†
โ”‚   โ”‚   โ”œโ”€โ”€ context_service.py       # ไธŠไธ‹ๆ–‡ๆœๅŠก
โ”‚   โ”‚   โ”œโ”€โ”€ enhanced_context_assembler.py # ๅขžๅผบ็‰ˆไธŠไธ‹ๆ–‡็ป„่ฃ…
โ”‚   โ”‚   โ”œโ”€โ”€ agent_service.py         # AgentๆœๅŠก
โ”‚   โ”‚   โ”œโ”€โ”€ personalization_service.py # ไธชๆ€งๅŒ–ๆœๅŠก
โ”‚   โ”‚   โ”œโ”€โ”€ user_profile_builder.py  # ็”จๆˆท็”ปๅƒๆž„ๅปบ
โ”‚   โ”‚   โ”œโ”€โ”€ emotion_trend_analyzer.py # ๆƒ…ๆ„Ÿ่ถ‹ๅŠฟๅˆ†ๆž
โ”‚   โ”‚   โ”œโ”€โ”€ advanced_sentiment_analyzer.py # ้ซ˜็บงๆƒ…ๆ„Ÿๅˆ†ๆž
โ”‚   โ”‚   โ”œโ”€โ”€ proactive_recall_system.py # ไธปๅŠจๅ›ž่ฎฟ็ณป็ปŸ
โ”‚   โ”‚   โ”œโ”€โ”€ performance_optimizer.py # ๆ€ง่ƒฝไผ˜ๅŒ–ๅ™จ
โ”‚   โ”‚   โ””โ”€โ”€ prompt_composer.py       # Prompt็ป„ๅˆๅ™จ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ modules/                     # ๆจกๅ—ๅฑ‚ - ๆ ธๅฟƒๅŠŸ่ƒฝ
โ”‚   โ”‚   โ”œโ”€โ”€ agent/                   # โœ… Agentๆ™บ่ƒฝๆ ธๅฟƒๆจกๅ—
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ core/                # Agentๆ ธๅฟƒ็ป„ไปถ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ services/            # AgentๆœๅŠก
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ routers/             # Agent่ทฏ็”ฑ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ models/              # Agentๆ•ฐๆฎๆจกๅž‹
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ protocol/            # Agentๅ่ฎฎ
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ rag/                     # โœ… RAG็Ÿฅ่ฏ†ๅบ“็ณป็ปŸ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ core/                # RAGๆ ธๅฟƒ
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ knowledge_base.py   # ็Ÿฅ่ฏ†ๅบ“็ฎก็†
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ retriever.py        # ๆฃ€็ดขๅ™จ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ services/            # RAGๆœๅŠก
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ routers/             # RAG่ทฏ็”ฑ
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ models/              # RAGๆ•ฐๆฎๆจกๅž‹
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ llm/                     # LLMๆจกๅž‹ๅฐ่ฃ…
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ core/                # LLMๆ ธๅฟƒ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ providers/           # LLMๆไพ›ๅ•†ๅฐ่ฃ…
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ services/            # LLMๆœๅŠก
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ models/              # LLMๆ•ฐๆฎๆจกๅž‹
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ intent/                  # ๆ„ๅ›พ่ฏ†ๅˆซๆจกๅ—
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ core/                # ๆ„ๅ›พ่ฏ†ๅˆซๆ ธๅฟƒ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ services/            # ๆ„ๅ›พ่ฏ†ๅˆซๆœๅŠก
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ routers/             # ๆ„ๅ›พ่ฏ†ๅˆซ่ทฏ็”ฑ
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ models/              # ๆ„ๅ›พ่ฏ†ๅˆซๆ•ฐๆฎๆจกๅž‹
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ””โ”€โ”€ multimodal/              # ๅคšๆจกๆ€ๅค„็†ๆจกๅ—
โ”‚   โ”‚       โ”œโ”€โ”€ core/                # ๅคšๆจกๆ€ๆ ธๅฟƒ
โ”‚   โ”‚       โ””โ”€โ”€ services/            # ๅคšๆจกๆ€ๆœๅŠก
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ agent/                        # Agentๆ ธๅฟƒๅฎž็Žฐ๏ผˆ็‹ฌ็ซ‹ๆจกๅ—๏ผ‰
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ agent_core.py            # Agentๆ ธๅฟƒๆŽงๅˆถๅ™จ
โ”‚   โ”‚   โ”œโ”€โ”€ planner.py               # ไปปๅŠก่ง„ๅˆ’ๅ™จ
โ”‚   โ”‚   โ”œโ”€โ”€ tool_caller.py           # ๅทฅๅ…ท่ฐƒ็”จๅ™จ
โ”‚   โ”‚   โ”œโ”€โ”€ memory_hub.py            # ่ฎฐๅฟ†ไธญๆžข
โ”‚   โ”‚   โ”œโ”€โ”€ reflector.py             # ๅๆ€ไผ˜ๅŒ–ๅ™จ
โ”‚   โ”‚   โ”œโ”€โ”€ tools/                   # Agentๅทฅๅ…ท้›†
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ calendar_api.py      # ๆ—ฅๅކๅทฅๅ…ท
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ scheduler_service.py # ่ฐƒๅบฆๆœๅŠก
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ psychology_db.py     # ๅฟƒ็†ๅญฆๆ•ฐๆฎๅบ“
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ audio_player.py      # ้Ÿณ้ข‘ๆ’ญๆ”พๅ™จ
โ”‚   โ”‚   โ””โ”€โ”€ README.md                # Agentๆจกๅ—ๆ–‡ๆกฃ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ plugins/                      # ๆ’ไปถ็ณป็ปŸ
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ base_plugin.py           # ๆ’ไปถๅŸบ็ฑป
โ”‚   โ”‚   โ”œโ”€โ”€ plugin_manager.py        # ๆ’ไปถ็ฎก็†ๅ™จ
โ”‚   โ”‚   โ”œโ”€โ”€ weather_plugin.py        # ๅคฉๆฐ”ๆ’ไปถ
โ”‚   โ”‚   โ”œโ”€โ”€ news_plugin.py           # ๆ–ฐ้—ปๆ’ไปถ
โ”‚   โ”‚   โ””โ”€โ”€ README.md                # ๆ’ไปถ็ณป็ปŸๆ–‡ๆกฃ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ core/                         # ๆ ธๅฟƒๅทฅๅ…ทๅ’ŒๆŽฅๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ config.py                # ๆ ธๅฟƒ้…็ฝฎ
โ”‚   โ”‚   โ”œโ”€โ”€ interfaces.py            # ๆŽฅๅฃๅฎšไน‰
โ”‚   โ”‚   โ”œโ”€โ”€ exceptions.py            # ๅผ‚ๅธธๅฎšไน‰
โ”‚   โ”‚   โ”œโ”€โ”€ factories.py             # ๅทฅๅŽ‚ๆจกๅผ
โ”‚   โ”‚   โ”œโ”€โ”€ config/                  # ้…็ฝฎๅญ็›ฎๅฝ•
โ”‚   โ”‚   โ”œโ”€โ”€ exceptions/              # ๅผ‚ๅธธๅญ็›ฎๅฝ•
โ”‚   โ”‚   โ”œโ”€โ”€ interfaces/              # ๆŽฅๅฃๅญ็›ฎๅฝ•
โ”‚   โ”‚   โ””โ”€โ”€ utils/                   # ๅทฅๅ…ทๅ‡ฝๆ•ฐ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ config/                       # ้…็ฝฎๆ–‡ไปถ็›ฎๅฝ•
โ”‚   โ”‚   โ”œโ”€โ”€ emotion_strategy.yaml    # ๆƒ…ๆ„Ÿ็ญ–็•ฅ้…็ฝฎ
โ”‚   โ”‚   โ””โ”€โ”€ performance_config.py    # ๆ€ง่ƒฝ้…็ฝฎ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ middleware/                   # ไธญ้—ดไปถ
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ error_handler.py         # ้”™่ฏฏๅค„็†ไธญ้—ดไปถ
โ”‚   โ”‚   โ””โ”€โ”€ logging_middleware.py    # ๆ—ฅๅฟ—ไธญ้—ดไปถ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ schemas/                      # ๆ•ฐๆฎๆจกๅผๅฎšไน‰
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ chat_schemas.py          # ่Šๅคฉๆ•ฐๆฎๆจกๅผ
โ”‚   โ”‚   โ””โ”€โ”€ common_schemas.py        # ้€š็”จๆ•ฐๆฎๆจกๅผ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ utils/                        # ๅทฅๅ…ทๅ‡ฝๆ•ฐ
โ”‚   โ”‚   โ””โ”€โ”€ sentiment_classifier.py  # ๆƒ…ๆ„Ÿๅˆ†็ฑปๅ™จ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ validators/                   # ๆ•ฐๆฎ้ชŒ่ฏๅ™จ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ tests/                        # ๆต‹่ฏ•็›ฎๅฝ•
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ unit/                    # ๅ•ๅ…ƒๆต‹่ฏ•
โ”‚   โ”‚   โ”œโ”€โ”€ integration/             # ้›†ๆˆๆต‹่ฏ•
โ”‚   โ”‚   โ”œโ”€โ”€ e2e/                     # ็ซฏๅˆฐ็ซฏๆต‹่ฏ•
โ”‚   โ”‚   โ””โ”€โ”€ fixtures/                # ๆต‹่ฏ• fixtures
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ migrations/                   # ๆ•ฐๆฎๅบ“่ฟ็งป๏ผˆAlembic๏ผ‰
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ database.py                   # ๆ•ฐๆฎๅบ“ๆจกๅž‹๏ผˆSQLAlchemy๏ผ‰
โ”‚   โ”œโ”€โ”€ models.py                     # Pydanticๆ•ฐๆฎๆจกๅž‹
โ”‚   โ”œโ”€โ”€ dependencies.py               # FastAPIไพ่ต–ๆณจๅ…ฅ
โ”‚   โ”œโ”€โ”€ logging_config.py             # ๆ—ฅๅฟ—้…็ฝฎ
โ”‚   โ”œโ”€โ”€ emotion_analyzer.py           # ๆƒ…ๆ„Ÿๅˆ†ๆžๅ™จ
โ”‚   โ”œโ”€โ”€ vector_store.py               # ๅ‘้‡ๆ•ฐๆฎๅบ“ๆ“ไฝœ
โ”‚   โ”œโ”€โ”€ memory_manager.py             # ่ฎฐๅฟ†็ฎก็†ๅ™จ
โ”‚   โ”œโ”€โ”€ memory_extractor.py          # ่ฎฐๅฟ†ๆๅ–ๅ™จ
โ”‚   โ”œโ”€โ”€ context_assembler.py         # ไธŠไธ‹ๆ–‡็ป„่ฃ…ๅ™จ
โ”‚   โ”œโ”€โ”€ evaluation_engine.py          # ่ฏ„ไผฐๅผ•ๆ“Ž
โ”‚   โ”œโ”€โ”€ feedback_analyzer.py          # ๅ้ฆˆๅˆ†ๆžๅ™จ
โ”‚   โ”œโ”€โ”€ multimodal_services.py        # ๅคšๆจกๆ€ๆœๅŠก
โ”‚   โ”œโ”€โ”€ prompt_optimizer.py           # Promptไผ˜ๅŒ–ๅ™จ
โ”‚   โ””โ”€โ”€ xinyu_prompt.py               # ๅฟƒ่ฏญPromptๆจกๆฟ
โ”‚
โ”œโ”€โ”€ frontend/                         # ๅ‰็ซฏไปฃ็ ็›ฎๅฝ•
โ”‚   โ”œโ”€โ”€ public/                      
โ”‚   โ”‚   โ””โ”€โ”€ index.html               
โ”‚   โ”œโ”€โ”€ src/                         
โ”‚   โ”‚   โ”œโ”€โ”€ App.js                   # Reactไธป็ป„ไปถ
โ”‚   โ”‚   โ”œโ”€โ”€ index.js                 # ๅ…ฅๅฃๆ–‡ไปถ
โ”‚   โ”‚   โ”œโ”€โ”€ index.css                # ๅ…จๅฑ€ๆ ทๅผ
โ”‚   โ”‚   โ”œโ”€โ”€ components/              # ็ป„ไปถ็›ฎๅฝ•
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ TypewriterText.js    # ๆ‰“ๅญ—ๆœบๆ•ˆๆžœ็ป„ไปถ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ChatContainer.js     # ่Šๅคฉๅฎนๅ™จ็ป„ไปถ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ FeedbackModal.js     # ๅ้ฆˆๆจกๆ€ๆก†
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ MultimodalInput.js   # ๅคšๆจกๆ€่พ“ๅ…ฅ็ป„ไปถ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ PersonalizationPanel.js # ไธชๆ€งๅŒ–้ขๆฟ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Sidebar.js           # ไพง่พนๆ ็ป„ไปถ
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ StyleComparison.js   # ๆ ทๅผๅฏนๆฏ”็ป„ไปถ
โ”‚   โ”‚   โ”œโ”€โ”€ services/                # ๆœๅŠกๅฑ‚
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ChatAPI.js           # API่ฐƒ็”จๅฐ่ฃ…
โ”‚   โ”‚   โ”œโ”€โ”€ hooks/                   # React Hooks
โ”‚   โ”‚   โ”œโ”€โ”€ utils/                   # ๅทฅๅ…ทๅ‡ฝๆ•ฐ
โ”‚   โ”‚   โ”œโ”€โ”€ styles/                  # ๆ ทๅผๆ–‡ไปถ
โ”‚   โ”‚   โ””โ”€โ”€ constants/                # ๅธธ้‡ๅฎšไน‰
โ”‚   โ”œโ”€โ”€ package.json                 
โ”‚   โ””โ”€โ”€ package-lock.json            
โ”‚
โ”œโ”€โ”€ alembic/                          # ๆ•ฐๆฎๅบ“่ฟ็งป
โ”‚   โ”œโ”€โ”€ versions/                    # ่ฟ็งป่„šๆœฌ
โ”‚   โ”œโ”€โ”€ env.py                       # Alembic็Žฏๅขƒ
โ”‚   โ””โ”€โ”€ alembic.ini                  # Alembic้…็ฝฎ
โ”‚
โ”œโ”€โ”€ docs/                             # ๆ–‡ๆกฃ็›ฎๅฝ•
โ”‚   โ”œโ”€โ”€ RAGๅฎžๆ–ฝๆญฅ้ชค.md               # RAG็ณป็ปŸๆ–‡ๆกฃ
โ”‚   โ”œโ”€โ”€ ่ฎฐๅฟ†็ณป็ปŸๆžถๆž„.md              # ่ฎฐๅฟ†็ณป็ปŸๆ–‡ๆกฃ
โ”‚   โ”œโ”€โ”€ ๆ„ๅ›พ่ฏ†ๅˆซๆจกๅ—่ฏดๆ˜Ž.md          # ๆ„ๅ›พ่ฏ†ๅˆซๆ–‡ๆกฃ
โ”‚   โ”œโ”€โ”€ ๅขžๅผบ็‰ˆ่พ“ๅ…ฅๅค„็†ๅ™จไฝฟ็”จๆŒ‡ๅ—.md  # ่พ“ๅ…ฅๅค„็†ๅ™จๆ–‡ๆกฃ
โ”‚   โ”œโ”€โ”€ ็”Ÿไบง้ƒจ็ฝฒๆŒ‡ๅ—.md              # ็”Ÿไบง้ƒจ็ฝฒๆ–‡ๆกฃ
โ”‚   โ”œโ”€โ”€ APIๆŽฅๅฃๆ–‡ๆกฃ.md               # APIๆŽฅๅฃๆ–‡ๆกฃ
โ”‚   โ”œโ”€โ”€ plugin_system_guide.md       # ๆ’ไปถ็ณป็ปŸๆŒ‡ๅ—
โ”‚   โ”œโ”€โ”€ performance_optimization_guide.md # ๆ€ง่ƒฝไผ˜ๅŒ–ๆŒ‡ๅ—
โ”‚   โ”œโ”€โ”€ ไธชๆ€งๅŒ–้…็ฝฎๅŠŸ่ƒฝๆ–‡ๆกฃ.md        # ไธชๆ€งๅŒ–้…็ฝฎๆ–‡ๆกฃ
โ”‚   โ””โ”€โ”€ ...                          # ๆ›ดๅคšๆ–‡ๆกฃ
โ”‚
โ”œโ”€โ”€ examples/                         # ็คบไพ‹ไปฃ็ 
โ”‚   โ”œโ”€โ”€ intent_recognition_demo.py   # ๆ„ๅ›พ่ฏ†ๅˆซ็คบไพ‹
โ”‚   โ”œโ”€โ”€ performance_optimization_example.py # ๆ€ง่ƒฝไผ˜ๅŒ–็คบไพ‹
โ”‚   โ””โ”€โ”€ response_generation_example.py # ๅ“ๅบ”็”Ÿๆˆ็คบไพ‹
โ”‚
โ”œโ”€โ”€ knowledge_base/                   # ็Ÿฅ่ฏ†ๅบ“ๆ–‡ไปถๅญ˜ๅ‚จ
โ”‚
โ”œโ”€โ”€ chroma_db/                        # ChromaDBๅ‘้‡ๆ•ฐๆฎๅบ“ๅญ˜ๅ‚จ
โ”œโ”€โ”€ uploads/                          # ๆ–‡ไปถไธŠไผ ็›ฎๅฝ•
โ”œโ”€โ”€ log/                              # ๆ—ฅๅฟ—็›ฎๅฝ•
โ”‚
โ”œโ”€โ”€ config.py                         # ๅ…จๅฑ€้…็ฝฎ
โ”œโ”€โ”€ config.env                        # ็Žฏๅขƒๅ˜้‡้…็ฝฎ โš ๏ธ ๅŒ…ๅซๅฏ†้’ฅ
โ”œโ”€โ”€ config.env.example                # ็Žฏๅขƒๅ˜้‡ๆจกๆฟ
โ”œโ”€โ”€ env_example.txt                   # ๆ—ง็‰ˆ็Žฏๅขƒๅ˜้‡ๆจกๆฟ๏ผˆๅทฒๅผƒ็”จ๏ผ‰
โ”œโ”€โ”€ run_backend.py                    # ๅŽ็ซฏๅฏๅŠจ่„šๆœฌ
โ”œโ”€โ”€ simple_backend.py                 # ็ฎ€ๅŒ–็‰ˆๅŽ็ซฏ๏ผˆๆต‹่ฏ•็”จ๏ผ‰
โ”œโ”€โ”€ db_manager.py                     # ๆ•ฐๆฎๅบ“็ฎก็†ๅทฅๅ…ท
โ”œโ”€โ”€ init_rag_knowledge.py            # RAG็Ÿฅ่ฏ†ๅบ“ๅˆๅง‹ๅŒ–
โ”œโ”€โ”€ quick_start.py                    # ๅฟซ้€ŸๅฏๅŠจ่„šๆœฌ
โ”œโ”€โ”€ demo_agent.py                     # Agentๆผ”็คบ่„šๆœฌ
โ”œโ”€โ”€ test_agent.py                     # Agentๆต‹่ฏ•่„šๆœฌ
โ”œโ”€โ”€ test_sentiment_offline.py         # ็ฆป็บฟๆƒ…ๆ„Ÿๆต‹่ฏ•
โ”œโ”€โ”€ test_weather_plugin.py            # ๅคฉๆฐ”ๆ’ไปถๆต‹่ฏ•
โ”œโ”€โ”€ requirements.txt                  # Python 3.10+ ไพ่ต–
โ”œโ”€โ”€ Makefile                          # ๅ‘ฝไปค่กŒๅทฅๅ…ท
โ”œโ”€โ”€ Dockerfile                        # Docker้•œๅƒๆž„ๅปบ
โ”œโ”€โ”€ docker-compose.yml               # Dockerๅฎนๅ™จ็ผ–ๆŽ’
โ”œโ”€โ”€ alembic.ini                      # Alembic้…็ฝฎ
โ”œโ”€โ”€ AGENT_README.md                  # Agentๆจกๅ—ๆ–‡ๆกฃ
โ”œโ”€โ”€ PYTHON310_INSTALL.md             # Python 3.10 ๅฎ‰่ฃ…ๆŒ‡ๅ—
โ”œโ”€โ”€ LICENSE                           
โ””โ”€โ”€ README.md                         # ้กน็›ฎๆ–‡ๆกฃ๏ผˆๆœฌๆ–‡ไปถ๏ผ‰

ๆ ธๅฟƒๆ–‡ไปถ่ฏดๆ˜Ž

๐Ÿ”ฅ ๅบ”็”จๅ…ฅๅฃ

ๆ–‡ไปถ ็”จ้€” ่ฏดๆ˜Ž
backend/app.py โœ… ๅบ”็”จๅทฅๅŽ‚ FastAPIๅบ”็”จๅˆ›ๅปบๅ’Œ้…็ฝฎ๏ผˆv3.0๏ผ‰
backend/main.py ๆ—ง็‰ˆๅ…ฅๅฃ ๅ…ผๅฎนๆ€งไฟ็•™
run_backend.py ๅฏๅŠจ่„šๆœฌ ๆŽจ่็š„ๅฏๅŠจๆ–นๅผ

๐Ÿ“Š ๆžถๆž„ๅฑ‚็บง

ๅฑ‚็บง ็›ฎๅฝ• ่ฏดๆ˜Ž
่ทฏ็”ฑๅฑ‚ backend/routers/ APIๆŽฅๅฃๅฎšไน‰ๅ’Œ่ฏทๆฑ‚ๅˆ†ๅ‘๏ผˆchat, agent, memory็ญ‰๏ผ‰
ๆœๅŠกๅฑ‚ backend/services/ ไธšๅŠก้€ป่พ‘ๅฐ่ฃ…ๅ’Œ็ผ–ๆŽ’๏ผˆchat_service, memory_service็ญ‰๏ผ‰
ๆจกๅ—ๅฑ‚ backend/modules/ Agentใ€RAGใ€LLMใ€Intentใ€Multimodalๆ ธๅฟƒๆจกๅ—
Agentๅฑ‚ backend/agent/ Agentๆ ธๅฟƒๅฎž็Žฐ๏ผˆ็‹ฌ็ซ‹ๆจกๅ—๏ผŒๅŒ…ๅซๅทฅๅ…ท้›†๏ผ‰
ๆ’ไปถๅฑ‚ backend/plugins/ ๆ’ไปถ็ณป็ปŸ๏ผˆweather, news็ญ‰ๆ‰ฉๅฑ•ๅŠŸ่ƒฝ๏ผ‰
ไธญ้—ดไปถๅฑ‚ backend/middleware/ ไธญ้—ดไปถ๏ผˆ้”™่ฏฏๅค„็†ใ€ๆ—ฅๅฟ—็ญ‰๏ผ‰
ๆ•ฐๆฎๅฑ‚ backend/database.py ๆ•ฐๆฎๆจกๅž‹ๅ’Œๆ•ฐๆฎๅบ“ๆ“ไฝœ

๐Ÿค– ๆ ธๅฟƒๆจกๅ—

ๆจกๅ— ่ทฏๅพ„ ่ฏดๆ˜Ž
Agentๆ ธๅฟƒ backend/modules/agent/ Agentๆจกๅ—ๅŒ–ๅฎž็Žฐ๏ผˆcore, services, routers๏ผ‰
Agentๅฎž็Žฐ backend/agent/ Agentๆ ธๅฟƒๅฎž็Žฐ๏ผˆagent_core, planner, tools็ญ‰๏ผ‰
RAG็ณป็ปŸ backend/modules/rag/ ็Ÿฅ่ฏ†ๅบ“็ฎก็†ๅ’Œๆฃ€็ดขๅขžๅผบ
LLMๅฐ่ฃ… backend/modules/llm/ ้€šไน‰ๅƒ้—ฎAPIๅฐ่ฃ…๏ผˆๆ”ฏๆŒๅคšๆไพ›ๅ•†๏ผ‰
ๆ„ๅ›พ่ฏ†ๅˆซ backend/modules/intent/ ๆททๅˆๅผๆ„ๅ›พ่ฏ†ๅˆซ็ณป็ปŸ
ๅคšๆจกๆ€ backend/modules/multimodal/ ๅคšๆจกๆ€ๅค„็†๏ผˆ่ฏญ้Ÿณใ€ๅ›พๅƒ็ญ‰๏ผ‰
ๆ’ไปถ็ณป็ปŸ backend/plugins/ ๅฏๆ‰ฉๅฑ•ๆ’ไปถๆžถๆž„๏ผˆweather, news็ญ‰๏ผ‰

๐Ÿ› ๏ธ ๅทฅๅ…ทๅ’Œ้…็ฝฎ

ๆ–‡ไปถ/็›ฎๅฝ• ่ฏดๆ˜Ž
config.env ็Žฏๅขƒๅ˜้‡๏ผˆAPIๅฏ†้’ฅใ€ๆ•ฐๆฎๅบ“้…็ฝฎ๏ผ‰โš ๏ธ ไธ่ฆๆไบค
backend/config/ ้…็ฝฎๆ–‡ไปถ็›ฎๅฝ•๏ผˆemotion_strategy.yaml็ญ‰๏ผ‰
Makefile ๅ‘ฝไปค่กŒๅทฅๅ…ท๏ผˆdb-init, rag-init็ญ‰๏ผ‰
docker-compose.yml Dockerๅฎนๅ™จ็ผ–ๆŽ’๏ผˆๅฎŒๆ•ด็›‘ๆŽงๆ ˆ๏ผ‰
alembic/ ๆ•ฐๆฎๅบ“็‰ˆๆœฌ็ฎก็†
backend/tests/ ๆต‹่ฏ•ๅฅ—ไปถ๏ผˆunit, integration, e2e๏ผ‰
backend/schemas/ ๆ•ฐๆฎๆจกๅผๅฎšไน‰๏ผˆPydantic models๏ผ‰
backend/utils/ ๅทฅๅ…ทๅ‡ฝๆ•ฐๅบ“
examples/ ็คบไพ‹ไปฃ็ ๅ’Œๆผ”็คบ

๐Ÿ“ก APIๆŽฅๅฃๆ–‡ๆกฃ

๐Ÿ“– ๅฎŒๆ•ดAPIๆ–‡ๆกฃ: ๆŸฅ็œ‹ docs/APIๆŽฅๅฃๆ–‡ๆกฃ.md - ๅŒ…ๅซๆ‰€ๆœ‰ๆŽฅๅฃ็š„่ฏฆ็ป†่ฏดๆ˜Žใ€่ฏทๆฑ‚ๅ‚ๆ•ฐใ€ๅ“ๅบ”็คบไพ‹ๅ’Œ้”™่ฏฏๅค„็†

ไธป่ฆๆŽฅๅฃๆฆ‚่งˆ

ๆŽฅๅฃ ๆ–นๆณ• ่ฏดๆ˜Ž
/ GET ็ณป็ปŸไฟกๆฏๅ’ŒๅŠŸ่ƒฝๅˆ—่กจ
/health GET ๅฅๅบทๆฃ€ๆŸฅ
/chat POST ๆ™ฎ้€š่ŠๅคฉๆŽฅๅฃ
/agent/chat POST Agentๆ™บ่ƒฝ่ŠๅคฉๆŽฅๅฃ
/sessions/{id}/history GET ่Žทๅ–ไผš่ฏๅކๅฒ
/rag/search POST RAG็Ÿฅ่ฏ†ๅบ“ๆฃ€็ดข
/agent/tools GET Agentๅฏ็”จๅทฅๅ…ทๅˆ—่กจ

ๅฟซ้€Ÿๆต‹่ฏ•

# ๅฅๅบทๆฃ€ๆŸฅ
curl http://localhost:8000/health

# ๆต‹่ฏ•่Šๅคฉ
curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "ไฝ ๅฅฝ", "user_id": "test_user"}'

ไบคไบ’ๅผๆ–‡ๆกฃ

่ฎฟ้—ฎ http://localhost:8000/docs ๆŸฅ็œ‹ๅฎŒๆ•ด็š„ Swagger UI ไบคไบ’ๅผๆ–‡ๆกฃ๏ผŒๆ”ฏๆŒๅœจ็บฟๆต‹่ฏ•ๆ‰€ๆœ‰ๆŽฅๅฃใ€‚

๐ŸŽฏ ๆ ธๅฟƒๅŠŸ่ƒฝๅฎž็Žฐ

1. Agentๆ™บ่ƒฝๆ ธๅฟƒ

ๅทฅไฝœๆต็จ‹:

็”จๆˆท่พ“ๅ…ฅ
  โ†“
Planner ๅˆ†ๆž็›ฎๆ ‡ โ†’ ๅˆถๅฎš็ญ–็•ฅ
  โ†“
Memory Hub ๆฃ€็ดข่ฎฐๅฟ† โ†’ ๆž„ๅปบ็”ปๅƒ
  โ†“
Tool Caller ๆ‰ง่กŒๅทฅๅ…ท โ†’ ่Žทๅ–่ต„ๆบ
  โ†“
็”Ÿๆˆๅ›žๅค + ๆƒ…ๆ„Ÿๅˆ†ๆž
  โ†“
Reflector ่ฏ„ไผฐๆ•ˆๆžœ โ†’ ่ง„ๅˆ’ๅ›ž่ฎฟ

ๆ ธๅฟƒ่ƒฝๅŠ›:

  • โœ… ๆ™บ่ƒฝไปปๅŠกๅˆ†่งฃๅ’Œ่ง„ๅˆ’
  • โœ… 10+ ๅทฅๅ…ท่‡ชๅŠจ่ฐƒ็”จ
  • โœ… ้•ฟ็ŸญๆœŸ่ฎฐๅฟ†็ฎก็†
  • โœ… ็”จๆˆท็”ปๅƒๆž„ๅปบ
  • โœ… ไธปๅŠจๅ›ž่ฎฟๅ…ณๆ€€
  • โœ… ็ญ–็•ฅๅๆ€ไผ˜ๅŒ–

2. RAG็Ÿฅ่ฏ†ๅขžๅผบ

ๆฃ€็ดขๆต็จ‹:

็”จๆˆท้—ฎ้ข˜
  โ†“
้—ฎ้ข˜ๅˆ†ๆž โ†’ ๅˆคๆ–ญๆ˜ฏๅฆ้œ€่ฆ็Ÿฅ่ฏ†ๅบ“
  โ†“
ๅ‘้‡ๆฃ€็ดข โ†’ ๆŸฅๆ‰พ็›ธๅ…ณ็Ÿฅ่ฏ†
  โ†“
็Ÿฅ่ฏ†่žๅˆ โ†’ ๅขžๅผบprompt
  โ†“
็”Ÿๆˆๅ›žๅค๏ผˆๅŸบไบŽ็Ÿฅ่ฏ† + ๅ…ฑๆƒ…๏ผ‰

็‰น็‚น:

  • โœ… 6ๅคง็ฑปไธ“ไธšๅฟƒ็†ๅฅๅบท็Ÿฅ่ฏ†
  • โœ… ่ฏญไน‰็›ธไผผๅบฆๆฃ€็ดข
  • โœ… ่‡ชๅŠจๅˆคๆ–ญ็Ÿฅ่ฏ†ๅขžๅผบๆ—ถๆœบ
  • โœ… ๆ”ฏๆŒPDF็ญ‰ๅคš็งๆ ผๅผๅฏผๅ…ฅ

3. ๆƒ…ๆ„Ÿๅˆ†ๆž็ณป็ปŸ

ๅˆ†ๆž็ปดๅบฆ:

  • ๆƒ…ๆ„Ÿ็ฑปๅž‹๏ผšๅผ€ๅฟƒใ€้šพ่ฟ‡ใ€็„ฆ่™‘ใ€ๆ„คๆ€’ใ€ๅนณ้™็ญ‰
  • ๆƒ…ๆ„Ÿๅผบๅบฆ๏ผš0-10ๅˆ†้‡ๅŒ–่ฏ„ไผฐ
  • ๅ…ณ้”ฎ่ฏๆๅ–๏ผš่ฏ†ๅˆซๆƒ…็ปช่งฆๅ‘่ฏ
  • ่ถ‹ๅŠฟๅˆ†ๆž๏ผš่ทจไผš่ฏๆƒ…ๆ„Ÿๅ˜ๅŒ–่ฟฝ่ธช

ๅฎž็Žฐๆ–นๅผ:

  • ไฝฟ็”จ้€šไน‰ๅƒ้—ฎ API ่ฟ›่กŒๆƒ…ๆ„Ÿ็†่งฃ
  • ็ป“ๅˆๅކๅฒๆ•ฐๆฎ่ฟ›่กŒๆƒ…ๆ„Ÿๆจกๅผๅญฆไน 
  • ่‡ชๅŠจ่ฎฐๅฝ•ๆƒ…ๆ„Ÿๅˆ†ๆž็ป“ๆžœๅˆฐๆ•ฐๆฎๅบ“

4. ่ฎฐๅฟ†็ณป็ปŸ

ไธ‰ๅฑ‚่ฎฐๅฟ†ๆžถๆž„:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ็ŸญๆœŸ่ฎฐๅฟ† (Working Memory)       โ”‚
โ”‚  ๅฝ“ๅ‰ไผš่ฏไธŠไธ‹ๆ–‡๏ผˆๆœ€่ฟ‘5-10ๆก๏ผ‰     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ้•ฟๆœŸ่ฎฐๅฟ† (Long-term Memory)     โ”‚
โ”‚  ChromaDBๅ‘้‡ๅญ˜ๅ‚จ๏ผˆๆ‰€ๆœ‰ๅކๅฒ๏ผ‰     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ็”จๆˆท็”ปๅƒ (User Profile)         โ”‚
โ”‚  ๆ€งๆ ผ็‰นๅพใ€ๅๅฅฝใ€ๆƒ…ๆ„ŸๅŸบ็บฟ         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๅŠŸ่ƒฝ:

  • โœ… ่‡ชๅŠจ่ฎฐๅฟ†ๆๅ–ๅ’Œๅญ˜ๅ‚จ
  • โœ… ่ฏญไน‰็›ธไผผๅบฆๆฃ€็ดข
  • โœ… ่ทจไผš่ฏ่ฎฐๅฟ†่ฎฟ้—ฎ
  • โœ… ็”จๆˆท็”ปๅƒ่‡ชๅŠจๆž„ๅปบ

5. ่ฏ„ไผฐๅ’Œๅ้ฆˆ็ณป็ปŸ

่‡ชๅŠจ่ฏ„ไผฐ:

  • ๅ›žๅค่ดจ้‡่ฏ„ไผฐ๏ผˆ1-5ๅˆ†๏ผ‰
  • ๅ…ฑๆƒ…ๅบฆ่ฏ„ไผฐ
  • ๅฎž็”จๆ€ง่ฏ„ไผฐ
  • ็”จๆˆทๆปกๆ„ๅบฆ้ข„ๆต‹

ๅ้ฆˆๆ”ถ้›†:

  • ็‚น่ตž/็‚น่ธฉ
  • ๆ–‡ๅญ—ๅ้ฆˆ
  • ้—ฎ้ข˜ๆ ‡ๆณจ
  • ๆ”น่ฟ›ๅปบ่ฎฎๆ”ถ้›†

๐Ÿ”ง APIๆŽฅๅฃ

่ŠๅคฉๆŽฅๅฃ

POST http://localhost:8000/chat
Content-Type: application/json

{
  "message": "็”จๆˆทๆถˆๆฏ",
  "session_id": "ไผš่ฏID๏ผˆๅฏ้€‰๏ผ‰",
  "user_id": "็”จๆˆทID๏ผˆๅฏ้€‰๏ผ‰"
}

ไผš่ฏๅކๅฒ

GET http://localhost:8000/sessions/{session_id}/history?limit=20

ไผš่ฏๆ‘˜่ฆ

GET http://localhost:8000/sessions/{session_id}/summary

๐ŸŽจ ็•Œ้ข้ข„่งˆ

้ฆ–้กต็•Œ้ข

้ฆ–้กต็•Œ้ข

็ŽฐไปฃๅŒ–็š„่Šๅคฉ็•Œ้ข่ฎพ่ฎก๏ผŒๅŒ…ๅซ๏ผš

  • ๐ŸŽญ ๆƒ…ๆ„Ÿๆ ‡็ญพๅฏ่ง†ๅŒ– - ๅฎžๆ—ถๆ˜พ็คบAI่ฏ†ๅˆซ็š„ๆƒ…ๆ„Ÿ็Šถๆ€
  • ๐Ÿ’ฌ ๅปบ่ฎฎๆŒ‰้’ฎๅฟซ้€Ÿๅ›žๅค - ๆ™บ่ƒฝๆŽจ่ๅ›žๅค้€‰้กน
  • โŒจ๏ธ ๆ‰“ๅญ—ๆœบๆ•ˆๆžœ - ๆ นๆฎๆƒ…็ปชๅŠจๆ€่ฐƒๆ•ดๆ‰“ๅญ—้€Ÿๅบฆๅ’Œๅ…‰ๆ ‡้ขœ่‰ฒ
  • ๐ŸŽจ ๆต็•…็š„ๅŠจ็”ปๆ•ˆๆžœ - Framer Motion ้ฉฑๅŠจ็š„ไบคไบ’ๅŠจ็”ป
  • ๐Ÿ“ฑ ๅ“ๅบ”ๅผ่ฎพ่ฎก - ๅฎŒ็พŽๆ”ฏๆŒ็งปๅŠจ็ซฏ่ฎฟ้—ฎ
  • ๐Ÿ”„ ไผš่ฏ็ฎก็† - ๆ”ฏๆŒๅคšไผš่ฏๅˆ‡ๆขๅ’Œๅކๅฒ่ฎฐๅฝ•

AIๅฝข่ฑกๅฎšๅˆถ

AIๅฝข่ฑกๅฎšๅˆถ

ไธชๆ€งๅŒ–AIๅฝข่ฑกๅฎšๅˆถๅŠŸ่ƒฝ๏ผŒๆ”ฏๆŒ๏ผš

  • ๐Ÿค– AIๆ€งๆ ผ่ฎพ็ฝฎ - ้€‰ๆ‹ฉๆธฉๆŸ”ใ€ๆดปๆณผใ€ไธ“ไธš็ญ‰ไธๅŒๆ€งๆ ผ้ฃŽๆ ผ
  • ๐Ÿ’ฌ ๅฏน่ฏ้ฃŽๆ ผ - ่ฐƒๆ•ดๅ›žๅค้•ฟๅบฆใ€่ฏญๆฐ”ๅ’Œ่กจ่พพๆ–นๅผ
  • โšก ๅ“ๅบ”้€Ÿๅบฆ - ่‡ชๅฎšไน‰ๆ‰“ๅญ—ๆœบๆ•ˆๆžœ้€Ÿๅบฆ
  • ๐ŸŽจ ไธป้ข˜ๅฎšๅˆถ - ไธชๆ€งๅŒ–็•Œ้ขไธป้ข˜ๅ’Œ้…่‰ฒ
  • ๐Ÿ“ ๅๅฅฝ่ฎฐๅฟ† - ่‡ชๅŠจไฟๅญ˜็”จๆˆทๅๅฅฝ่ฎพ็ฝฎ

ไพง่พนๆ ๅŠŸ่ƒฝ

  • ๐Ÿ“œ ไผš่ฏๅކๅฒ - ๆŸฅ็œ‹ๅ’Œ็ฎก็†ๅކๅฒๅฏน่ฏ
  • โž• ๆ–ฐๅปบไผš่ฏ - ไธ€้”ฎๅผ€ๅฏๆ–ฐๅฏน่ฏ
  • โš™๏ธ ่ฎพ็ฝฎๅ…ฅๅฃ - ๅฟซ้€Ÿ่ฎฟ้—ฎไธชๆ€งๅŒ–่ฎพ็ฝฎ
  • ๐Ÿ“Š ๆƒ…ๆ„Ÿ่ถ‹ๅŠฟ - ๆŸฅ็œ‹ๆƒ…ๆ„Ÿๅ˜ๅŒ–็ปŸ่ฎก

๐Ÿ”ฎ ๆœชๆฅ่ง„ๅˆ’

่ฟ‘ๆœŸ่ฎกๅˆ’๏ผˆv3.1.0๏ผ‰

  • Agentๅทฅๅ…ทๅบ“ๆ‰ฉๅฑ•๏ผˆ20+ๅทฅๅ…ท๏ผ‰
  • ็œŸๅฎž็š„ๅฎšๆ—ถๅ›ž่ฎฟ็ณป็ปŸ๏ผˆAPScheduler๏ผ‰
  • ็”จๆˆทๅๅฅฝๅญฆไน ๅ’Œไธชๆ€งๅŒ–ๆŽจ่
  • ๅคšๆจกๆ€ๆ”ฏๆŒ๏ผˆๅ›พ็‰‡็†่งฃ๏ผ‰
  • ่ฏญ้Ÿณ่ฝฌๆ–‡ๅญ—้›†ๆˆ
  • ๆ€ง่ƒฝไผ˜ๅŒ–ๅ’Œ็ผ“ๅญ˜็ญ–็•ฅ

ไธญๆœŸ่ฎกๅˆ’๏ผˆv3.5.0๏ผ‰

  • ๅคš่ฏญ่จ€ๆ”ฏๆŒ๏ผˆ่‹ฑ่ฏญใ€ๆ—ฅ่ฏญ๏ผ‰
  • ไธ“ไธšๅ’จ่ฏขๅธˆๅฏนๆŽฅ็ณป็ปŸ
  • A/Bๆต‹่ฏ•ๆก†ๆžถ
  • ้ซ˜็บงๆƒ…ๆ„Ÿ่ถ‹ๅŠฟๅˆ†ๆžๅ’Œ้ข„ๆต‹
  • ็พค็ป„่Šๅคฉๆ”ฏๆŒ
  • ็งปๅŠจ็ซฏ้€‚้…ไผ˜ๅŒ–

้•ฟๆœŸ่ฎกๅˆ’๏ผˆv4.0.0๏ผ‰

  • ่”้‚ฆๅญฆไน ไฟๆŠค้š็ง
  • ๆœฌๅœฐๅŒ–้ƒจ็ฝฒๆ–นๆกˆ
  • ็งปๅŠจ็ซฏๅŽŸ็”ŸApp
  • ๆ™บ่ƒฝๅฏ็ฉฟๆˆด่ฎพๅค‡้›†ๆˆ
  • ๅฟƒ็†ๅฅๅบท็”Ÿๆ€็ณป็ปŸ
  • ๅผ€ๆ”พAPIๅนณๅฐ

๐Ÿ“ ็‰ˆๆœฌๅކๅฒ

v3.0.0 (2025-10-16) - ๅฝ“ๅ‰็‰ˆๆœฌ

  • โœ… Agentๆ™บ่ƒฝๆ ธๅฟƒ็ณป็ปŸ
  • โœ… RAG็Ÿฅ่ฏ†ๅบ“้›†ๆˆ
  • โœ… ๅˆ†ๅฑ‚ๆœๅŠกๆžถๆž„้‡ๆž„
  • โœ… Dockerๅฎนๅ™จๅŒ–้ƒจ็ฝฒ
  • โœ… ๅฎŒๆ•ด็›‘ๆŽงไฝ“็ณป
  • โœ… ๆ•ฐๆฎๅบ“่ฟ็งป็ฎก็†๏ผˆAlembic๏ผ‰
  • โœ… ่ฎฐๅฟ†็ณป็ปŸๅ‡็บง
  • โœ… ่‡ชๅŠจ่ฏ„ไผฐ็ณป็ปŸ
  • โœ… ๆ‰“ๅญ—ๆœบๆ•ˆๆžœ็ณป็ปŸ๏ผˆๆƒ…็ปชๅŒ–ๆ‰“ๅญ—ๅŠจ็”ป๏ผ‰

v2.0.0 (2025-10-10)

  • โœ… ไปŽOpenAI่ฟ็งปๅˆฐ้˜ฟ้‡Œไบ‘้€šไน‰ๅƒ้—ฎ
  • โœ… ChromaDBๅ‘้‡ๆ•ฐๆฎๅบ“้›†ๆˆ
  • โœ… LangChain่ฎฐๅฟ†็ฎก็†
  • โœ… ๆƒ…ๆ„Ÿๅˆ†ๆžไผ˜ๅŒ–
  • โœ… Reactๅ‰็ซฏ็•Œ้ข

v1.0.0 (2025-10-01)

  • โœ… ๅŸบ็ก€่ŠๅคฉๅŠŸ่ƒฝ
  • โœ… MySQLๆ•ฐๆฎๆŒไน…ๅŒ–
  • โœ… ๆƒ…ๆ„Ÿ่ฏ†ๅˆซ
  • โœ… ็ฎ€ๅ•็š„ไธŠไธ‹ๆ–‡็ฎก็†

๐Ÿš€ ็”Ÿไบง้ƒจ็ฝฒ

๐Ÿ“ฆ ๅฎŒๆ•ด้ƒจ็ฝฒๆŒ‡ๅ—๏ผšdocs/็”Ÿไบง้ƒจ็ฝฒๆŒ‡ๅ—.md - ไปŽๅผ€ๅ‘็Žฏๅขƒๅˆฐ็”Ÿไบง็Žฏๅขƒ็š„ๅฎŒๆ•ด้ƒจ็ฝฒๆ–นๆกˆ

้กน็›ฎๆไพ›ๅฎŒๆ•ด็š„็”Ÿไบง็บง้ƒจ็ฝฒๆ–นๆกˆ๏ผŒๆ”ฏๆŒๅคš็ง้ƒจ็ฝฒๆ–นๅผ๏ผš

ๅฟซ้€Ÿๅผ€ๅง‹

Docker Compose ้ƒจ็ฝฒ๏ผˆๆŽจ่๏ผ‰๏ผš

# 1. ้…็ฝฎ็Žฏๅขƒๅ˜้‡
cp config.env.example config.env
nano config.env

# 2. ๅฏๅŠจๆœๅŠก
docker-compose up -d

# 3. ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“ๅ’Œ็Ÿฅ่ฏ†ๅบ“
docker-compose exec backend make db-upgrade
docker-compose exec backend make rag-init

# 4. ้ชŒ่ฏ้ƒจ็ฝฒ
curl http://localhost:8000/health

ไผ ็ปŸ้ƒจ็ฝฒ๏ผš

# 1. ๅฎ‰่ฃ…ไพ่ต–๏ผˆPython 3.10+๏ผ‰
python --version  # ๅ…ˆๆฃ€ๆŸฅ็‰ˆๆœฌ
pip install -r requirements.txt

# 2. ้…็ฝฎ็Žฏๅขƒ
cp config.env.example config.env
nano config.env

# 3. ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“
make db-upgrade

# 4. ๅˆๅง‹ๅŒ–็Ÿฅ่ฏ†ๅบ“
make rag-init

# 5. ๅฏๅŠจๆœๅŠก
python run_backend.py

้ƒจ็ฝฒๆฃ€ๆŸฅๆธ…ๅ•

  • ้…็ฝฎ็”Ÿไบง็Žฏๅขƒ็š„config.envๆ–‡ไปถ
  • ๆ›ดๆ–ฐCORSๅ…่ฎธ็š„ๅŸŸๅ๏ผˆไธ่ฆไฝฟ็”จ*๏ผ‰
  • ้…็ฝฎๅๅ‘ไปฃ็†๏ผˆNginx๏ผ‰
  • ๅฏ็”จHTTPS/SSL่ฏไนฆ
  • ้…็ฝฎๆ•ฐๆฎๅบ“ๅค‡ไปฝ็ญ–็•ฅ
  • ่ฎพ็ฝฎๆ—ฅๅฟ—่ฝฎ่ฝฌ
  • ้…็ฝฎ็›‘ๆŽงๅ’Œๅ‘Š่ญฆ
  • ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“๏ผˆmake db-upgrade๏ผ‰
  • ๅˆๅง‹ๅŒ–RAG็Ÿฅ่ฏ†ๅบ“๏ผˆmake rag-init๏ผ‰

้ƒจ็ฝฒๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    ็”จๆˆทๆต่งˆๅ™จ                            โ”‚
โ”‚               (่ฎฟ้—ฎ: http://your-domain.com)            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                  Nginx ๅๅ‘ไปฃ็†                          โ”‚
โ”‚              (็ซฏๅฃ: 80, 443)                            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
      โ”‚                          โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   ๅ‰็ซฏๆœๅŠก      โ”‚      โ”‚   ๅŽ็ซฏAPIๆœๅŠก      โ”‚
โ”‚  React 18      โ”‚      โ”‚  FastAPI + Python โ”‚
โ”‚  ็ซฏๅฃ: 3000    โ”‚      โ”‚  ็ซฏๅฃ: 8000       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                             โ”‚      โ”‚
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
              โ”‚              โ”‚      โ”‚              โ”‚
       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”
       โ”‚  MySQL      โ”‚ โ”‚  Redis  โ”‚ โ”‚   ChromaDB    โ”‚
       โ”‚  ๅ…ณ็ณปๆ•ฐๆฎๅบ“  โ”‚ โ”‚  ็ผ“ๅญ˜   โ”‚ โ”‚   ๅ‘้‡ๆ•ฐๆฎๅบ“  โ”‚
       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

็›‘ๆŽงๆ ˆ๏ผš
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Prometheus  โ”‚  Grafana    โ”‚  Elasticsearchโ”‚  Kibana  โ”‚
โ”‚  ๆŒ‡ๆ ‡้‡‡้›†   โ”‚  ๅฏ่ง†ๅŒ–     โ”‚  ๆ—ฅๅฟ—ๅญ˜ๅ‚จ    โ”‚  ๆ—ฅๅฟ—ๅˆ†ๆž โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๅฎŒๆ•ด้ƒจ็ฝฒๆ–‡ๆกฃ

่ฏฆ็ป†็š„็”Ÿไบง้ƒจ็ฝฒๆŒ‡ๅ—ๅŒ…ๅซ๏ผš

  • โœ… ้ƒจ็ฝฒๅ‰ๅ‡†ๅค‡๏ผš้…็ฝฎ็ฎก็†ใ€ไพ่ต–้”ๅฎšใ€ๅฏๅŠจ่„šๆœฌ
  • โœ… Dockerๅฎนๅ™จๅŒ–้ƒจ็ฝฒ๏ผš็Žฏๅขƒไธ€่‡ดๆ€งใ€็›‘ๆŽง้›†ๆˆใ€ๆ•ฐๆฎๆŒไน…ๅŒ–
  • โœ… ไบ‘ๆœๅŠกๅ™จ้ƒจ็ฝฒ๏ผšECS้…็ฝฎใ€Gunicorn้…็ฝฎใ€SystemdๆœๅŠก
  • โœ… HTTPSๅฎ‰ๅ…จๅŠ ๅ›บ๏ผšLet's Encrypt่ฏไนฆใ€Nginx้…็ฝฎ
  • โœ… ็›‘ๆŽงๅ’Œ็ปดๆŠค๏ผšPrometheusใ€Grafanaใ€ๆ—ฅๅฟ—็ฎก็†
  • โœ… ๆ•…้šœๆŽ’ๆŸฅ๏ผšๅธธ่ง้—ฎ้ข˜่งฃๅ†ณๆ–นๆกˆ

๐Ÿ‘‰ ๆŸฅ็œ‹ๅฎŒๆ•ดๆ–‡ๆกฃ๏ผšdocs/็”Ÿไบง้ƒจ็ฝฒๆŒ‡ๅ—.md

๐Ÿ“ ่ฎธๅฏ่ฏ

MIT License

๐Ÿ› ๏ธ Makefile ๅ‘ฝไปค้€ŸๆŸฅ

้กน็›ฎๆไพ›ไบ†ไพฟๆท็š„Makefileๅ‘ฝไปค๏ผŒ็ฎ€ๅŒ–ๅธธ็”จๆ“ไฝœ๏ผš

# ๆŸฅ็œ‹ๆ‰€ๆœ‰ๅฏ็”จๅ‘ฝไปค
make help

# ๅฎ‰่ฃ…ไพ่ต–
make install

# ๆ•ฐๆฎๅบ“็ฎก็†
make db-init          # ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“
make db-upgrade       # ๅ‡็บงๅˆฐๆœ€ๆ–ฐ็‰ˆๆœฌ
make db-downgrade     # ้™็บงไธ€ไธช็‰ˆๆœฌ
make db-current       # ๆŸฅ็œ‹ๅฝ“ๅ‰็‰ˆๆœฌ
make db-history       # ๆŸฅ็œ‹่ฟ็งปๅކๅฒ
make db-check         # ๆฃ€ๆŸฅๆ•ฐๆฎๅบ“่ฟžๆŽฅ

# RAG็Ÿฅ่ฏ†ๅบ“
make rag-init         # ๅˆๅง‹ๅŒ–็Ÿฅ่ฏ†ๅบ“
make rag-test         # ๆต‹่ฏ•RAG็ณป็ปŸ
make rag-demo         # RAGๆ•ˆๆžœๅฏนๆฏ”ๆผ”็คบ

# ่ฟ่กŒๆœๅŠก
make run              # ๅฏๅŠจๅŽ็ซฏๆœๅŠก

๐Ÿ“š ็›ธๅ…ณๆ–‡ๆกฃ

ๆ ธๅฟƒๆจกๅ—ๆ–‡ๆกฃ

ๅ‘้‡ๆ•ฐๆฎๅบ“ๆ•™็จ‹๏ผˆๆ–ฐๅขž๏ผ‰

APIๆ–‡ๆกฃ

๐Ÿค ่ดก็ŒฎๆŒ‡ๅ—

ๆฌข่ฟŽๆไบคIssueๅ’ŒPull Requestๆฅๆ”น่ฟ›่ฟ™ไธช้กน็›ฎ๏ผ

่ดก็Œฎๆ–นๅผ

  1. Fork ๆœฌ้กน็›ฎ
  2. ๅˆ›ๅปบ็‰นๆ€งๅˆ†ๆ”ฏ (git checkout -b feature/AmazingFeature)
  3. ๆไบคๆ›ดๆ”น (git commit -m 'Add some AmazingFeature')
  4. ๆŽจ้€ๅˆฐๅˆ†ๆ”ฏ (git push origin feature/AmazingFeature)
  5. ๅผ€ๅฏ Pull Request

ๅผ€ๅ‘่ง„่Œƒ

  • ้ตๅพชPEP 8 Pythonไปฃ็ ่ง„่Œƒ
  • ๆทปๅŠ ้€‚ๅฝ“็š„ๆณจ้‡Šๅ’Œๆ–‡ๆกฃๅญ—็ฌฆไธฒ
  • ็ผ–ๅ†™ๅ•ๅ…ƒๆต‹่ฏ•
  • ๆ›ดๆ–ฐ็›ธๅ…ณๆ–‡ๆกฃ

๐Ÿ™ ่‡ด่ฐข

  • emotional_chat - ๅŽŸๅง‹้กน็›ฎๅ‚่€ƒ
  • ้˜ฟ้‡Œไบ‘้€šไน‰ๅƒ้—ฎๅ›ข้˜Ÿ - ๆไพ›ไผ˜็ง€็š„ไธญๆ–‡ๅคง่ฏญ่จ€ๆจกๅž‹
  • LangChain็คพๅŒบ - ๆไพ›ๅผบๅคง็š„LLMๅบ”็”จๆก†ๆžถ
  • ๆ‰€ๆœ‰่ดก็Œฎ่€…ๅ’Œ็”จๆˆท็š„ๆ”ฏๆŒ

๐Ÿ“ž ่”็ณปๆ–นๅผ

ๅฆ‚ๆœ‰้—ฎ้ข˜ๆˆ–ๅปบ่ฎฎ๏ผŒๆฌข่ฟŽ้€š่ฟ‡ไปฅไธ‹ๆ–นๅผ่”็ณป๏ผš

  • ๆไบค GitHub Issue
  • ๅ‘้€้‚ฎไปถๅˆฐ้กน็›ฎ็ปดๆŠค่€… congdeyuan@gmail.com
  • ๅพฎไฟก๏ผšjx-yuancongde

๐Ÿ’ ่ฎฉAIๆ›ดๆœ‰ๆธฉๅบฆ๏ผŒ่ฎฉ้™ชไผดๆ›ดๆ‡‚ไฝ  ๐Ÿ’

ๅฟƒ่ฏญๆƒ…ๆ„Ÿ้™ชไผดๆœบๅ™จไบบ v3.0.0 - ไปŽ่ขซๅŠจๅ“ๅบ”ๅˆฐไธปๅŠจๆœๅŠก๏ผŒๆˆ‘ไปฌไธ€็›ดๅœจ่ฟ›ๅŒ–ใ€‚

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages