-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathagent.py
More file actions
112 lines (93 loc) · 3.64 KB
/
agent.py
File metadata and controls
112 lines (93 loc) · 3.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# # from deepagents import create_deep_agent
# # from langchain.chat_models import init_chat_model
# from configs.model_configs import MODEL_CONFIGS
# from utils.api import get_rag_api
# from langchain_community.llms import VLLMOpenAI
# # 指向本地vLLM服务端点
# llm = VLLMOpenAI(
# openai_api_key="EMPTY", # vLLM不需要key
# openai_api_base="http://localhost:54257/v1", # vLLM服务地址
# model_name=MODEL_CONFIGS.MODEL_DIR, # 与served-model-name一致
# max_tokens=4096,
# temperature=0.7,
# top_p=0.9
# )
# # llm = init_chat_model(
# # model="openai:qwen3-0.6B", # 和 vLLM 的 served-model-name 一致
# # model_provider="openai", # 关键点:用 openai 协议
# # base_url=f"{MODEL_CONFIGS.MODEL_BASE_URL}",
# # api_key="EMPTY", # 随便写,vLLM 不校验
# # temperature=0.7,
# # )
# # agent = create_deep_agent(
# # tools=[], # 可以为空 []
# # system_prompt="""
# # 你是一个专业的研究员。你的任务是对企业文档进行彻底的研究并撰写一份完整的报告。
# # 你可以使用以下工具:
# # - get_rag_api: 用于获取相关文档信息
# # 请确保:
# # 1. 验证信息的准确性
# # 2. 组织信息并撰写结构化的报告
# # """,
# # )
# from langchain.agents import AgentType, initialize_agent, Tool
# from langchain.tools import DuckDuckGoSearchRun, BaseTool
# from langchain.memory import ConversationBufferMemory
# # 示例工具1: 内部知识库检索 (需自行实现RAG)
# class InternalKBSearchTool(BaseTool):
# name = "Internal_KB_Search"
# description = "查询公司内部产品文档、技术手册、政策文件知识库"
# def _run(self, query: str) -> str:
# # 实现对接本地Milvus/Chroma+Embedding模型的检索逻辑
# return get_rag_api([query])
# # # 示例工具2: 业务系统查询API
# # class SalesDataQueryTool(BaseTool):
# # name = "Query_Sales_System"
# # description = "查询当前季度的销售数据、客户订单状态"
# # def _run(self, customer_id: str) -> str:
# # # 调用内部Sales系统的API (假设已存在)
# # return get_sales_data(customer_id)
# # 创建工具列表
# tools = [
# InternalKBSearchTool(),
# ]
# # 创建带记忆的Agent
# memory = ConversationBufferMemory(memory_key="chat_history")
# agent = initialize_agent(
# tools,
# llm, # 上一步配置的vLLM-Qwen模型
# agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION, # 适合多轮对话
# memory=memory,
# verbose=True# 打印详细执行过程
# )
from langchain.chat_models import init_chat_model
from configs.model_configs import MODEL_CONFIGS
llm = init_chat_model(
model=MODEL_CONFIGS.MODEL_DIR,
model_provider="openai",
base_url="http://localhost:54257/v1",
api_key="EMPTY",
temperature=0.7,
)
from langchain.tools import tool
@tool
def internal_kb_search(query: str) -> str:
"""
查询公司内部产品文档、技术手册、政策文件等知识库。
用于企业内部知识问答和研究任务。
"""
return get_rag_api([query])
from deepagents import create_deep_agent
agent = create_deep_agent(
model=llm,
tools=[internal_kb_search],
system_prompt="""
你是一个专业的企业研究员,主要基于公司内部知识库进行研究。
你可以使用以下工具:
- internal_kb_search:查询公司内部文档和知识库
工作要求:
1. 优先使用 internal_kb_search 获取事实信息
2. 验证信息一致性
3. 组织内容并撰写结构化回答
"""
)