简介

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包,可以通过如下的命令进行安装

  1. pip install "dbgpt[agent]>=0.5.9rc0"

同时需要安装openai SDK,可以通过下面的命令进行安装

  1. pip install openai

编写一个计算Agent

大模型是Agent的”大脑”, 在本案例当中,我们使用OpenAI作为基础模型,当然你也可以使用DB-GPT中支持的任何一种模型,无论是本地部署模式,还是代理模式。 无论是单机部署,还是集群部署。

  1. import os
  2. from dbgpt.model.proxy import OpenAILLMClient
  3. llm_client = OpenAILLMClient(
  4. model_alias="gpt-3.5-turbo", # or other models, eg. "gpt-4o"
  5. api_base=os.getenv("OPENAI_API_BASE"),
  6. api_key=os.getenv("OPENAI_API_KEY"),
  7. )

然后,可以创建Agent的上下文和Memory

  1. from dbgpt.agent import AgentContext, AgentMemory
  2. # language="zh" for Chinese
  3. context: AgentContext = AgentContext(
  4. conv_id="test123", language="en", temperature=0.5, max_new_tokens=2048
  5. )
  6. # Create an agent memory, default memory is ShortTermMemory
  7. agent_memory: AgentMemory = AgentMemory()

Memory存储从环境中感知到的信息,并利用记录的记忆来促进后续的行动。默认的存储方式是ShortTermMemory 既短期记忆,仅仅保留最近k轮的对话记录。当然,也可以使用其他的记忆方式,比如长期记忆LongTermMemory、感知记忆 SensoryMemory或者混合记忆HybridMemory, 在后续的文档中,我们也会进行详细的介绍。

现在就可以编写完整的Agent助手了

  1. import asyncio
  2. from dbgpt.agent import LLMConfig, UserProxyAgent
  3. from dbgpt.agent.expand.code_assistant_agent import CodeAssistantAgent
  4. async def main():
  5. # Create a code assistant agent
  6. coder = (
  7. await CodeAssistantAgent()
  8. .bind(context)
  9. .bind(LLMConfig(llm_client=llm_client))
  10. .bind(agent_memory)
  11. .build()
  12. )
  13. # Create a user proxy agent
  14. user_proxy = await UserProxyAgent().bind(context).bind(agent_memory).build()
  15. # Initiate a chat with the user proxy agent
  16. await user_proxy.initiate_chat(
  17. recipient=coder,
  18. reviewer=user_proxy,
  19. message="Calculate the result of 321 * 123",
  20. )
  21. # Obtain conversation history messages between agents
  22. print(await agent_memory.gpts_memory.one_chat_completions("test123"))
  23. if __name__ == "__main__":
  24. asyncio.run(main())

运行代码,你可以看到如下的输出

  1. --------------------------------------------------------------------------------
  2. User (to Turing)-[]:
  3. "Calculate the result of 321 * 123"
  4. --------------------------------------------------------------------------------
  5. un_stream ai response: ```python
  6. # filename: calculate_multiplication.py
  7. result = 321 * 123
  8. 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


  1. [{"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

如下图所示,是代码运行的示意图。

快速开始 - 图1

在上述代码中,我们创建了一个代码助手智能体 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(智能体工作流编排)集成
  • 如何将智能体部署到生产环境