feat(agent): Release agent SDK (#1396)

This commit is contained in:
Fangyin Cheng
2024-04-10 22:44:53 +08:00
committed by GitHub
parent 37e7c0151b
commit df80bc2079
152 changed files with 5680 additions and 6114 deletions

File diff suppressed because one or more lines are too long

View File

@@ -2,162 +2,162 @@
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"id": "6de2e0bb",
"metadata": {},
"outputs": [],
"metadata": {
"ExecuteTime": {
"end_time": "2024-04-10T04:37:21.832993Z",
"start_time": "2024-04-10T04:37:21.828221Z"
}
},
"source": [
"\"\"\"Agents: auto plan agents example?\n",
"\n",
" Examples:\n",
"\n",
" Execute the following command in the terminal:\n",
" Set env params.\n",
" .. code-block:: shell\n",
"\n",
" export OPENAI_API_KEY=sk-xx\n",
" export OPENAI_API_BASE=https://xx:80/v1\n",
"\n",
" run example.\n",
" ..code-block:: shell\n",
" python examples/agents/auto_plan_agent_dialogue_example.py\n",
"\"\"\"\n",
"\n",
"import os\n",
"from dbgpt.agent.agents.user_proxy_agent import UserProxyAgent\n",
"from dbgpt.serve.agent.team.layout.team_awel_layout import AwelLayoutChatManger\n",
"from dbgpt.agent.agents.expand.plugin_assistant_agent import PluginAssistantAgent\n",
"from dbgpt.agent.agents.expand.summary_assistant_agent import SummaryAssistantAgent\n",
"import nest_asyncio\n",
"from dbgpt.agent import (\n",
" AgentContext,\n",
" AgentResource,\n",
" GptsMemory,\n",
" LLMConfig,\n",
" ResourceLoader,\n",
" ResourceType,\n",
" UserProxyAgent,\n",
")\n",
"from dbgpt.agent.expand.plugin_assistant_agent import PluginAssistantAgent\n",
"from dbgpt.agent.expand.summary_assistant_agent import SummaryAssistantAgent\n",
"from dbgpt.agent.plan import WrappedAWELLayoutManager\n",
"from dbgpt.agent.resource import PluginFileLoadClient\n",
"from dbgpt.configs.model_config import ROOT_PATH\n",
"from dbgpt.model.proxy import OpenAILLMClient\n",
"\n",
"from dbgpt.agent.agents.agent import AgentContext\n",
"from dbgpt.agent.memory.gpts_memory import GptsMemory\n",
"from dbgpt.core.interface.llm import ModelMetadata\n",
"\n",
"import asyncio\n",
"\n",
"from dbgpt.model import OpenAILLMClient"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "153c9e0e",
"metadata": {},
"nest_asyncio.apply()\n",
"test_plugin_dir = os.path.join(ROOT_PATH, \"examples/test_files/plugins\")"
],
"outputs": [],
"source": [
"current_dir = os.getcwd()\n",
"parent_dir = os.path.dirname(current_dir)\n",
"test_plugin_dir = os.path.join(parent_dir, \"test_files\")"
]
"execution_count": 11
},
{
"cell_type": "code",
"execution_count": 8,
"id": "437b9c40",
"metadata": {},
"metadata": {
"ExecuteTime": {
"end_time": "2024-04-10T04:37:27.592117Z",
"start_time": "2024-04-10T04:37:23.569538Z"
}
},
"source": [
"# os.environ['OPENAI_API_KEY']=\"sk-x\"\n",
"# os.environ['OPENAI_API_BASE']=\"https://proxy_url/v1\"\n",
"# os.environ['SEARCH_ENGINE']=\"baidu\"\n",
"# os.environ['BAIDU_COOKIE']=\"\"\"your baidu cookie\"\"\"\n",
"\n",
"llm_client = OpenAILLMClient(model_alias=\"gpt-3.5-turbo\")\n",
"context: AgentContext = AgentContext(conv_id=\"test456\", gpts_app_name=\"信息析助手\")\n",
"\n",
"default_memory = GptsMemory()\n",
"\n",
"resource_loader = ResourceLoader()\n",
"plugin_file_loader = PluginFileLoadClient()\n",
"resource_loader.register_resource_api(plugin_file_loader)\n",
"\n",
"plugin_resource = AgentResource(\n",
" type=ResourceType.Plugin,\n",
" name=\"test\",\n",
" value=test_plugin_dir,\n",
")\n",
"\n",
"tool_engineer = (\n",
" await PluginAssistantAgent()\n",
" .bind(context)\n",
" .bind(LLMConfig(llm_client=llm_client))\n",
" .bind(default_memory)\n",
" .bind([plugin_resource])\n",
" .bind(resource_loader)\n",
" .build()\n",
")\n",
"summarizer = (\n",
" await SummaryAssistantAgent()\n",
" .bind(context)\n",
" .bind(default_memory)\n",
" .bind(LLMConfig(llm_client=llm_client))\n",
" .build()\n",
")\n",
"\n",
"manager = (\n",
" await WrappedAWELLayoutManager()\n",
" .bind(context)\n",
" .bind(default_memory)\n",
" .bind(LLMConfig(llm_client=llm_client))\n",
" .build()\n",
")\n",
"manager.hire([tool_engineer, summarizer])\n",
"\n",
"user_proxy = await UserProxyAgent().bind(context).bind(default_memory).build()\n",
"\n",
"await user_proxy.initiate_chat(\n",
" recipient=manager,\n",
" reviewer=user_proxy,\n",
" message=\"查询成都今天天气\",\n",
" # message=\"查询今天的最新热点财经新闻\",\n",
")"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mUser\u001b[0m (to layout_manager)-[]:\n",
"\n",
"\"查询成都今天天气\"\n",
"\n",
"--------------------------------------------------------------------------------\n",
"\u001b[33mlayout_manager\u001b[0m (to ToolScientist)-[]:\n",
"\u001B[33mWrappedAWELLayoutManager\u001B[0m (to LuBan)-[]:\n",
"\n",
"\"查询成都今天天气\"\n",
"\n",
"--------------------------------------------------------------------------------\n",
"un_stream ai response: {\n",
" \"tool_name\": \"google_search\",\n",
" \"tool_name\": \"baidu_search\",\n",
" \"args\": {\n",
" \"query\": \"成都今天天气\"\n",
" },\n",
" \"thought\": \"I will use the google-search tool to search for the weather in Chengdu today.\"\n",
" \"thought\": \"I have selected the 'baidu_search' tool with the query parameter set to '成都今天天气' to search for the weather in Chengdu today.\"\n",
"}\n",
"{'query': '成都今天天气'}\n",
"_google_search:成都今天天气\n",
"\u001b[33mToolScientist\u001b[0m (to Summarizer)-[gpt-3.5-turbo]:\n",
"\n",
"\"{\\n \\\"tool_name\\\": \\\"google_search\\\",\\n \\\"args\\\": {\\n \\\"query\\\": \\\"成都今天天气\\\"\\n },\\n \\\"thought\\\": \\\"I will use the google-search tool to search for the weather in Chengdu today.\\\"\\n}\"\n",
"\u001b[32m>>>>>>>>ToolScientist Review info: \n",
" Pass.None\u001b[0m\n",
"\u001b[34m>>>>>>>>ToolScientist Action report: \n",
"execution succeeded,\n",
"Error: Please configure GOOGLE_API_KEY and GOOGLE_API_CX in .env first!\u001b[0m\n",
"\n",
"--------------------------------------------------------------------------------\n",
"un_stream ai response: The User's Question: 查询成都今天天气\n",
"\u001B[33mLuBan\u001B[0m (to Aristotle)-[gpt-3.5-turbo]:\n",
"\n",
"今天成都的天气预报是晴天最高温度约为28摄氏度最低温度约为16摄氏度。\n",
"\u001b[33mSummarizer\u001b[0m (to layout_manager)-[gpt-3.5-turbo]:\n",
"\n",
"\"The User's Question: 查询成都今天天气\\n\\n今天成都的天气预报是晴天最高温度约为28摄氏度最低温度约为16摄氏度。\"\n",
"\u001b[32m>>>>>>>>Summarizer Review info: \n",
" Pass.None\u001b[0m\n",
"\u001b[34m>>>>>>>>Summarizer Action report: \n",
"\"{\\n \\\"tool_name\\\": \\\"baidu_search\\\",\\n \\\"args\\\": {\\n \\\"query\\\": \\\"成都今天天气\\\"\\n },\\n \\\"thought\\\": \\\"I have selected the 'baidu_search' tool with the query parameter set to '成都今天天气' to search for the weather in Chengdu today.\\\"\\n}\"\n",
"\u001B[32m>>>>>>>>LuBan Review info: \n",
"Pass(None)\u001B[0m\n",
"\u001B[34m>>>>>>>>LuBan Action report: \n",
"execution succeeded,\n",
"The User's Question: 查询成都今天天气\n",
"\n",
"今天成都天气预报是晴天最高温度约为28摄氏度最低温度约为16摄氏度。\u001b[0m\n",
"### [...天气预报一周_成都天气预报7天、15天、40天天查询_中国...](http://www.baidu.com/link?url=nSNTTnrxEUFL7oMRAYqg98BfeXkWtwHUaYN7WrTjaxBpSy0blKc4jIZ9m34mP97fFARfXJStjbRoBN6U0s0BDq) \n",
" \n",
"### [成都天气_成都天气预报一周_成都天气预报15天](http://www.baidu.com/link?url=Fmp4cnf8Cqqd8N06PpAe3Mn6Esp5q39Scfsnfr7ALxqB5XfoWu9-wY5UjS4n-95Y) \n",
" \n",
"### [【成都天气】成都天气预报,蓝天,蓝天预报,雾霾,雾霾消散,...](http://www.baidu.com/link?url=BQF3cexr1Z6hqkdOjRO2pq8YnOuruBV8nBFY0LE7FJJl8_TCcO806skK-aWkmC8UAZ23K-v3SvoXO58Ayze7Da) \n",
" \n",
"### [...天气预报一周_成都天气预报7天、15天、40天天查询_中国...](http://www.baidu.com/link?url=rt26_NNSBBWHLr0rAX2RPUbBhVjfr4m3Cd21RG7MOe4gsirRquQyp5fMLbSfeU1iC2b1ZhNVjUzlex39iYN_wq) \n",
" \n",
"### [【成都天气预报15天_成都天气预报15天查询】-中国天气网](http://www.baidu.com/link?url=vnZ3GlUxqllZ7Lenc94cImrur2AixgD6dkSOxfNc63PTewisg-RXg3sKzLpBEuPgCWXLr9VnR9gsSZetfPA_94HdTG0It_uAvZpLdUiGmY_) \n",
" \n",
"\u001B[0m\n",
"\n",
"--------------------------------------------------------------------------------\n",
"\u001b[33mlayout_manager\u001b[0m (to User)-[None]:\n",
"un_stream ai response: Did not find the information you want.\n",
"\n",
"--------------------------------------------------------------------------------\n",
"\u001B[33mWrappedAWELLayoutManager\u001B[0m (to User)-[]:\n",
"\n",
"\"查询成都今天天气\"\n",
"\u001b[32m>>>>>>>>layout_manager Review info: \n",
" Pass.None\u001b[0m\n",
"\u001b[34m>>>>>>>>layout_manager Action report: \n",
"\u001B[32m>>>>>>>>WrappedAWELLayoutManager Review info: \n",
"Pass(None)\u001B[0m\n",
"\u001B[34m>>>>>>>>WrappedAWELLayoutManager Action report: \n",
"execution succeeded,\n",
"The User's Question: 查询成都今天天气\n",
"\n",
"今天成都的天气预报是晴天最高温度约为28摄氏度最低温度约为16摄氏度。\u001b[0m\n",
"Did not find the information you want.\u001B[0m\n",
"\n",
"--------------------------------------------------------------------------------\n"
]
}
],
"source": [
"os.environ['OPENAI_API_KEY']=\"sk-x\"\n",
"os.environ['OPENAI_API_BASE']=\"https://proxy_url/v1\"\n",
"os.environ['BAIDU_COOKIE']=\"\"\"your baidu cookie\"\"\"\n",
"\n",
"llm_client = OpenAILLMClient()\n",
"context: AgentContext = AgentContext(conv_id=\"test456\", llm_provider=llm_client)\n",
"context.llm_models = [ModelMetadata(model=\"gpt-3.5-turbo\")]\n",
"context.gpts_name = \"信息析助手\"\n",
"\n",
"default_memory = GptsMemory()\n",
"manager = AwelLayoutChatManger(\n",
" agent_context=context,\n",
" memory=default_memory,\n",
")\n",
"\n",
"### agents\n",
"tool_enginer = PluginAssistantAgent(\n",
" agent_context=context,\n",
" memory=default_memory,\n",
" plugin_path=test_plugin_dir,\n",
")\n",
"summarizer = SummaryAssistantAgent(\n",
" agent_context=context,\n",
" memory=default_memory,\n",
")\n",
"\n",
"manager.hire([tool_enginer, summarizer])\n",
"\n",
"user_proxy = UserProxyAgent(memory=default_memory, agent_context=context)\n",
"\n",
"\n",
"await user_proxy.a_initiate_chat(\n",
" recipient=manager,\n",
" reviewer=user_proxy,\n",
" message=\"查询成都今天天气\",\n",
")\n",
"\n"
]
"execution_count": 12
},
{
"cell_type": "code",