弃用langgrpah更换deepagent
This commit is contained in:
23
src/server/deep_agent/agents/init_llm.py
Normal file
23
src/server/deep_agent/agents/init_llm.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from langchain_qwq import ChatQwen
|
||||
|
||||
from src.core.config import settings
|
||||
|
||||
llm = ChatQwen(
|
||||
model="qwen3.5-flash",
|
||||
max_tokens=3_000,
|
||||
timeout=None,
|
||||
max_retries=2,
|
||||
enable_thinking=False,
|
||||
api_key=settings.QWEN_API_KEY
|
||||
)
|
||||
|
||||
title_llm = ChatQwen(
|
||||
model="qwen-plus",
|
||||
max_tokens=3_000,
|
||||
timeout=None,
|
||||
max_retries=2,
|
||||
streaming=False,
|
||||
temperature=0.1,
|
||||
top_p=0.8,
|
||||
api_key=settings.QWEN_API_KEY
|
||||
)
|
||||
51
src/server/deep_agent/agents/main_agent.py
Normal file
51
src/server/deep_agent/agents/main_agent.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from pathlib import Path
|
||||
|
||||
from deepagents import create_deep_agent
|
||||
from deepagents.backends import FilesystemBackend
|
||||
from langchain.agents.middleware import SummarizationMiddleware
|
||||
from langgraph.checkpoint.mongodb import MongoDBSaver
|
||||
from langgraph.checkpoint.serde.jsonplus import JsonPlusSerializer
|
||||
from pymongo import MongoClient
|
||||
|
||||
from src.core.config import MONGO_URI
|
||||
from src.server.deep_agent.agents.painter import painter_subagent
|
||||
from src.server.deep_agent.agents.researcher import research_subagent
|
||||
from src.server.deep_agent.agents.user_profile import user_profile_subagent
|
||||
from src.server.deep_agent.init_prompt import build_system_prompt
|
||||
from src.server.deep_agent.tools.report_generator_tool import llm
|
||||
|
||||
TOOL_DIR = Path(__file__).resolve().parent
|
||||
PROJECT_ROOT = TOOL_DIR.parent
|
||||
client = MongoClient(MONGO_URI)
|
||||
checkpointer = MongoDBSaver(
|
||||
client=client["furniture_agent_db"],
|
||||
db_name="fida_agent_db",
|
||||
collection_name="fida_agent_collection",
|
||||
serde=JsonPlusSerializer(pickle_fallback=True), # ← 關鍵這一行
|
||||
)
|
||||
subagents = [
|
||||
painter_subagent,
|
||||
research_subagent,
|
||||
user_profile_subagent
|
||||
]
|
||||
|
||||
|
||||
def build_main_agent(use_report):
|
||||
main_agent = create_deep_agent(
|
||||
model=llm,
|
||||
system_prompt=build_system_prompt(use_report=use_report),
|
||||
subagents=subagents,
|
||||
checkpointer=checkpointer,
|
||||
backend=FilesystemBackend(
|
||||
root_dir=str(PROJECT_ROOT / "agent_workspace"),
|
||||
virtual_mode=False, # 重要:關掉虛擬模式 → 真的寫硬碟
|
||||
),
|
||||
middleware=[
|
||||
SummarizationMiddleware(
|
||||
model=llm,
|
||||
trigger=("tokens", 3000),
|
||||
keep=("messages", 100),
|
||||
),
|
||||
],
|
||||
)
|
||||
return main_agent
|
||||
22
src/server/deep_agent/agents/painter.py
Normal file
22
src/server/deep_agent/agents/painter.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from langchain.agents.middleware import wrap_tool_call
|
||||
|
||||
from src.server.deep_agent.agents.init_llm import llm
|
||||
from src.server.deep_agent.init_prompt import build_painter_prompt
|
||||
from src.server.deep_agent.tools.generate_furniture_sketch import generate_furniture
|
||||
|
||||
|
||||
@wrap_tool_call
|
||||
async def log_tool_calls(request, handler):
|
||||
"""Intercept and log every tool call - demonstrates cross-cutting concern."""
|
||||
print(request)
|
||||
return handler(request)
|
||||
|
||||
|
||||
painter_subagent = {
|
||||
"name": "painter_subagent",
|
||||
"description": "理解用户意图,使用prompt,调用generate_furniture工具生成家具sketch草图.",
|
||||
"system_prompt": build_painter_prompt(),
|
||||
"tools": [generate_furniture],
|
||||
"model": llm,
|
||||
# "middleware": [log_tool_calls],
|
||||
}
|
||||
21
src/server/deep_agent/agents/researcher.py
Normal file
21
src/server/deep_agent/agents/researcher.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from src.server.deep_agent.agents.init_llm import llm
|
||||
from src.server.deep_agent.init_prompt import build_researcher_prompt
|
||||
from src.server.deep_agent.tools.crawl_tool import crawl4ai_batch
|
||||
from src.server.deep_agent.tools.report_generator_tool import report_generator
|
||||
from src.server.deep_agent.tools.research_tool import topic_research
|
||||
from src.server.deep_agent.tools.structured_retrieval_tool import structured_retrieval
|
||||
from src.server.deep_agent.tools.user_persona_tool import query_report_profile
|
||||
|
||||
research_subagent = {
|
||||
"name": "research-agent",
|
||||
"description": "通过网络搜索对家具设计开展深度研究并整合结论",
|
||||
"system_prompt": build_researcher_prompt(),
|
||||
"tools": [
|
||||
query_report_profile,
|
||||
topic_research,
|
||||
crawl4ai_batch,
|
||||
structured_retrieval,
|
||||
report_generator
|
||||
],
|
||||
"model": llm
|
||||
}
|
||||
15
src/server/deep_agent/agents/user_profile.py
Normal file
15
src/server/deep_agent/agents/user_profile.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from src.server.deep_agent.agents.init_llm import llm
|
||||
from src.server.deep_agent.init_prompt import build_user_persona_prompt
|
||||
from src.server.deep_agent.tools.user_persona_tool import query_report_profile, update_report_profile, check_profile_complete
|
||||
|
||||
user_profile_subagent = {
|
||||
"name": "user_profile_subagent",
|
||||
"description": "收集用户报告画像并存储到MongoDB",
|
||||
"system_prompt": build_user_persona_prompt(),
|
||||
"model": llm,
|
||||
"tools": [
|
||||
query_report_profile,
|
||||
update_report_profile,
|
||||
check_profile_complete,
|
||||
],
|
||||
}
|
||||
Reference in New Issue
Block a user