add knowlege

This commit is contained in:
weizjajj
2024-06-17 16:06:47 +08:00
committed by Jerry Z H
parent ba905acfc3
commit 0fecf96d85
3 changed files with 24 additions and 9 deletions

View File

@@ -5,7 +5,7 @@
# @Author : wangchongshi
# @Email : wangchongshi.wcs@antgroup.com
# @FileName: knowledge.py
from typing import Optional, Dict, List, Any
from typing import Optional, Dict, List
from langchain_core.utils.json import parse_json_markdown
from langchain.tools import Tool as LangchainTool
@@ -94,7 +94,7 @@ class Knowledge(ComponentBase):
res.append(doc.text)
return "\n=========================================\n".join(res)
def as_langchain_tool(self) -> Any:
def as_langchain_tool(self) -> LangchainTool:
"""Convert the Knowledge object to a LangChain tool.
Returns:

View File

@@ -11,8 +11,11 @@ from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import Tool as LangchainTool
from langchain_core.runnables import RunnableConfig
from agentuniverse.agent.action.knowledge.knowledge import Knowledge
from agentuniverse.agent.action.knowledge.knowledge_manager import KnowledgeManager
from agentuniverse.agent.action.tool.tool import Tool
from agentuniverse.agent.action.tool.tool_manager import ToolManager
from agentuniverse.agent.agent import Agent
from agentuniverse.agent.agent_model import AgentModel
from agentuniverse.agent.input_object import InputObject
from agentuniverse.agent.memory.chat_memory import ChatMemory
@@ -78,6 +81,15 @@ class ReActPlanner(Planner):
for tool_name in tool_names:
tool: Tool = ToolManager().get_instance_obj(tool_name)
lc_tools.append(tool.as_langchain())
knowledge: list = action.get('knowledge') or list()
for knowledge_name in knowledge:
knowledge_tool: Knowledge = KnowledgeManager().get_instance_obj(knowledge_name)
lc_tools.append(knowledge_tool.as_langchain_tool())
agents: list = action.get('agent') or list()
for agent_name in agents:
agent_tool: Agent = AgentModel.load_by_name(agent_name)
lc_tools.append(agent_tool.as_langchain_tool())
return lc_tools
def handle_prompt(self, agent_model: AgentModel, planner_input: dict) -> Prompt:

View File

@@ -7,6 +7,8 @@
# @FileName: test_rag_agent.py
import unittest
from agentuniverse.agent.action.knowledge.knowledge import Knowledge
from agentuniverse.agent.action.knowledge.knowledge_manager import KnowledgeManager
from agentuniverse.agent.agent import Agent
from agentuniverse.agent.agent_manager import AgentManager
from agentuniverse.agent.output_object import OutputObject
@@ -23,13 +25,14 @@ class RagAgentTest(unittest.TestCase):
def test_rag_agent(self):
"""Test demo rag agent."""
instance: Agent = AgentManager().get_instance_obj('demo_rag_agent')
# output_object: OutputObject = instance.run(input='分析下巴菲特减持比亚迪的原因')
# res_info = f"\nRag agent execution result is :\n"
# res_info += output_object.get_data('output')
# print(res_info)
tool = instance.as_langchain_tool()
print(tool.description)
# instance: Agent = AgentManager().get_instance_obj('demo_rag_agent')
# # output_object: OutputObject = instance.run(input='分析下巴菲特减持比亚迪的原因')
# # res_info = f"\nRag agent execution result is :\n"
# # res_info += output_object.get_data('output')
# # print(res_info)
# tool = instance.as_langchain_tool()
knowledge: Knowledge = KnowledgeManager().get_instance_obj('demo_knowledge')
print(knowledge.as_langchain_tool().description)
if __name__ == '__main__':