简介
DB-GPT提供了一套数据Agent开发的能力,可以开发非常复杂的生产级数据智能体应用。 详细介绍
快速开始
DB-GPT采用了非常灵活的分层设计,Agent部分可以作为一个独立的模块单独使用。
- Agent API: 通过Python代码构建Agent应用,只需要按转dbgpt Python包。
pip install "dbgpt[agent]"
- 应用层API:通过DB-GPT项目来构建Agent,同时可以使用其他模块的能力。
当你需要单独使用Agent API时,可以通过Agent模块提供的API能力,通过少量的代码快速构建智能体应用,同时也很容易将其部署到生产环境。
安装
首先,需要安装dbgpt
包,可以通过如下的命令进行安装
pip install "dbgpt[agent]>=0.5.9rc0"
同时需要安装openai
SDK,可以通过下面的命令进行安装
pip install openai
编写一个计算Agent
大模型是Agent的”大脑”, 在本案例当中,我们使用OpenAI作为基础模型,当然你也可以使用DB-GPT中支持的任何一种模型,无论是本地部署模式,还是代理模式。 无论是单机部署,还是集群部署。
import os
from dbgpt.model.proxy import OpenAILLMClient
llm_client = OpenAILLMClient(
model_alias="gpt-3.5-turbo", # or other models, eg. "gpt-4o"
api_base=os.getenv("OPENAI_API_BASE"),
api_key=os.getenv("OPENAI_API_KEY"),
)
然后,可以创建Agent的上下文和Memory
from dbgpt.agent import AgentContext, AgentMemory
# language="zh" for Chinese
context: AgentContext = AgentContext(
conv_id="test123", language="en", temperature=0.5, max_new_tokens=2048
)
# Create an agent memory, default memory is ShortTermMemory
agent_memory: AgentMemory = AgentMemory()
Memory存储从环境中感知到的信息,并利用记录的记忆来促进后续的行动。默认的存储方式是ShortTermMemory
既短期记忆,仅仅保留最近k轮的对话记录。当然,也可以使用其他的记忆方式,比如长期记忆LongTermMemory
、感知记忆 SensoryMemory
或者混合记忆HybridMemory
, 在后续的文档中,我们也会进行详细的介绍。
现在就可以编写完整的Agent助手了
import asyncio
from dbgpt.agent import LLMConfig, UserProxyAgent
from dbgpt.agent.expand.code_assistant_agent import CodeAssistantAgent
async def main():
# Create a code assistant agent
coder = (
await CodeAssistantAgent()
.bind(context)
.bind(LLMConfig(llm_client=llm_client))
.bind(agent_memory)
.build()
)
# Create a user proxy agent
user_proxy = await UserProxyAgent().bind(context).bind(agent_memory).build()
# Initiate a chat with the user proxy agent
await user_proxy.initiate_chat(
recipient=coder,
reviewer=user_proxy,
message="Calculate the result of 321 * 123",
)
# Obtain conversation history messages between agents
print(await agent_memory.gpts_memory.one_chat_completions("test123"))
if __name__ == "__main__":
asyncio.run(main())
运行代码,你可以看到如下的输出
--------------------------------------------------------------------------------
User (to Turing)-[]:
"Calculate the result of 321 * 123"
--------------------------------------------------------------------------------
un_stream ai response: ```python
# filename: calculate_multiplication.py
result = 321 * 123
print(result)
EXECUTING CODE BLOCK 0 (inferred language is python)… execute_code was called without specifying a value for use_docker. Since the python docker package is not available, code will be run natively. Note: this fallback behavior is subject to change un_stream ai response: True
Turing (to User)-[gpt-3.5-turbo]:
“python\n# filename: calculate_multiplication.py\n\nresult = 321 * 123\nprint(result)\n
“
Turing Review info: Pass(None) Turing Action report: execution succeeded,
39483
[{"name": "Calculate the result of 321 * 123", "num": 1, "status": "complete", "agent": "Human", "markdown": "```agent-messages\n[{\"sender\": \"CodeEngineer\", \"receiver\": \"Human\", \"model\": \"gpt-3.5-turbo\", \"markdown\": \"```vis-code\\n{\\\"exit_success\\\": true, \\\"language\\\": \\\"python\\\", \\\"code\\\": [[\\\"python\\\", \\\"# filename: calculate_multiplication.py\\\\n\\\\nresult = 321 * 123\\\\nprint(result)\\\"]], \\\"log\\\": \\\"\\\\n39483\\\\n\\\"}\\n```\"}]\n```"}]
```
在DB-GPT当中,为了实现更高的性能,绝大多数接口都是异步的。因此,我们以异步的方式编写构建所有代码。在开发中,您可以使用asyncio.run(main())
来运行Agent
如下图所示,是代码运行的示意图。
在上述代码中,我们创建了一个代码助手智能体 CodeAssistantAgent
和一个UserProxyAgent
智能体,其中UserProxyAgent是一个用户代理智能体,它是一个管理Agent,可以发起与其他智能体的对话,并且可以查看其他智能体的反馈。
CodeAssistantAgent
是一个代码助手智能体,可以生成代码来解决实际的用户问题,在本Case中,它会生成Python代码来计算 321 * 123
的结果,然后代码会通过CodeAction
进行执行,最后审核通过后,结果会返回给用户。
最后,我们打印了智能体之间的对话记录。
What’s Next
- 如何在DB-GPT智能体中,使用工具
- 如何通过DB-GPT智能体连接数据源
- 如何使用DB-GPT智能体的计划模块
- 如何使用DB-GPT智能体的记忆模块
- 如何自定义一个DB-GPT智能体
- 如何将DB-GPT智能体与AWEL(智能体工作流编排)集成
- 如何将智能体部署到生产环境