Type something to search...
释放多智能体AI的力量:使用Neon、Langchain、Autogen和Azure Openai构建数据驱动的解决方案!

释放多智能体AI的力量:使用Neon、Langchain、Autogen和Azure Openai构建数据驱动的解决方案!

多智能体人工智能解决方案:Neon、Langchain、AutoGen 和 Azure OpenAI

让人工智能为您的数据服务

人工智能代理正在成为数据管理的积极参与者。如今,您可以简单地与您的数据对话,而不是编写 SQL 查询:

“显示我所有当前在运的货物。”

或者更好的是,人工智能代理可以对您的数据进行操作:

“为 Marc 创建一个新的货物并将其状态更新为已离开发货地。”

听起来很有前景?是的!在这篇文章中,我们将探讨如何构建一个简单的多代理人工智能解决方案,不仅可以检索数据,还可以使用 Azure OpenAI、LangChain、AutoGen 和 Neon 无服务器 Postgres 执行操作。

您可以在 GitHub 仓库 上找到运行示例项目的逐步说明。

什么是多智能体人工智能?

多智能体人工智能是多个智能体的集合,它们协同工作以完成任务。每个智能体都有特定的角色,并相互沟通以共享信息和协调行动。

不同的人工智能智能体可能根据其角色需要不同级别的访问权限。如果所有智能体都能访问每个表格,它们将处理不必要的数据,并引入数据冲突。我们希望每个智能体在其领域内工作,保持数据的清晰和准确。在我们的案例中,运输管理软件使用多智能体人工智能,不同的智能体以结构化的方式处理运输、客户和产品数据。例如,我们需要管理:

  1. 客户和产品信息 — 谁在购买?他们在购买什么?
  2. 运输和物流 — 运输在哪里?它们的状态是什么?

而不是将所有内容混合到一个大型数据库中(这可能变得复杂和缓慢)。这两个数据集服务于不同的目的:

  • CRM 数据库跟踪客户及其订单。
  • 运输数据库跟踪交付细节和物流。

使用的技术

我们结合了四种技术来构建示例:

第一步:定义AI代理及其角色

我们将为每个AI代理分配一个具有特定目的的角色。例如:

  • ShipmentAgent → 处理与运输相关的查询和操作。
  • CRMAgent → 管理客户和产品相关的数据。
  • SchemaAgent → 检索和共享架构信息。
## agents.py
import autogen
from app.database import crm_db, shipment_db
from app.schema_functions import (
    get_schema_info,
    add_customer,
    send_shipment,
)
from langchain_openai import AzureChatOpenAI
from langchain_experimental.sql import SQLDatabaseChain
from app.config import AZURE_OPENAI_KEY, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_DEPLOYMENT

...

shipment_agent = autogen.ConversableAgent(
    name="ShipmentAgent",
    llm_config=llm_config,
    description="Manage shipments in the main database.",
    system_message=(...),
)

crm_agent = autogen.ConversableAgent(
    name="CRMAgent",
    llm_config=llm_config,
    description="Manages customer and product information in the second database.",
    system_message=(...),
)

schema_agent = autogen.ConversableAgent(
    name="SchemaAgent",
    llm_config=llm_config,
    description="Understands and shares database schema information.",
    system_message=(...),
)

第2步:将代理连接到数据库

每个代理必须能够与Neon 数据库交互,以获取或更新信息。为此,我们使用 LangChain SQLDatabaseChain,它允许代理在数据库上执行 SQL 查询。

## agents.py

...

## Initialize the database chains
shipment_chain = SQLDatabaseChain(llm=azure_llm, database=shipment_db, verbose=True)
crm_chain = SQLDatabaseChain(llm=azure_llm, database=crm_db, verbose=True)

## Query functions for each database
def query_shipment(query):
    return shipment_chain.invoke(query)

def query_crm(query):
    return crm_chain.invoke(query)

第3步:为每个AI代理分配操作

每个代理都有其可以执行的特定功能。例如,ShipmentAgent 应能够调用 send_shipment 函数,而 CRMAgent 应能够调用 add_customer 函数。

## agents.py

...

## Register functions with the agents
shipment_agent.register_function(
    function_map={"query_shipment": query_shipment, "send_shipment": send_shipment}
)

crm_agent.register_function(
    function_map={"query_crm": query_crm, "add_customer": add_customer}
)

schema_agent.register_function(
    function_map={
        "get_schema_info": get_schema_info,
        "get_shared_schema_info": get_shared_schema_info,
    }
)

第 4 步:管理 AI 对话与协作

这些代理使用 AutoGen 进行协作,这是微软推出的一个开源框架,支持多代理的编排与协调。AutoGen 允许 AI 代理:

  • 通过传递消息共享知识。
  • 基于结构化工作流做出决策。
  • 采取现实世界的行动,如插入数据或调用存储过程。

对于那些喜欢低代码方式构建 Agentic 工作流的用户,Autogen 提供了一个 工作室

如果我们将这三个代理组合在一起,流程如下:

  1. 用户提问:“当前有哪些产品在运输中?”Langchain 将基于文本的用户请求转换为结构化的数据库查询。
  2. ShipmentAgent 查询 Neon Shipment 数据库并返回结果。
  3. 用户请求一个行动:“为 Marc 创建一个新货物。”
  4. CRMAgent 将 Marc 添加为客户,ShipmentAgent 创建货物。
## agents.py

...

## Create a user proxy agent
user_proxy = autogen.UserProxyAgent(
    name="User_proxy",
    system_message="A human admin.",
    code_execution_config={
        "last_n_messages": 4,
        "work_dir": "groupchat",
        "use_docker": False,
    },
    human_input_mode="ALWAYS",  # Using this mode to give input to agents
)

## Set up the group chat and manager
groupchat = autogen.GroupChat(
    agents=[user_proxy, schema_agent, shipment_agent, crm_agent],
    messages=[],
    max_round=30,  # Maximum number of rounds in the conversation
)

manager = autogen.GroupChatManager(groupchat=groupchat)

其他示例查询

与您的数据聊天

  • “Alice Johnson 是客户吗?”

AI辅助的数据库管理

  • “我需要一个存储过程来删除客户。你能生成一个吗?”

AI驱动的操作

  • “为 Marc 创建一批 1 台笔记本电脑和 1 部智能手机,并将其状态更新为从纽约出发到洛杉矶。”

为什么选择Neon用于AI代理?

AI生成的查询可能强大但不可预测。Neon的分支功能允许我们在单独的数据库分支上测试AI生成的查询。如果AI代理生成了不正确的SQL查询,损害将限制在其分支内,而不会影响主生产数据库。这意味着我们可以在将更改合并到生产环境并上线之前进行实验、执行质量保证和验证数据。

通常情况下,AI代理可能会使用只在几分钟内使用的数据库,然后变得不活跃。使用Neon,这不是问题——您可以拥有数千个数据库,而不必为未使用的数据库支付费用。可以在需要时唤醒数据库。

您还可以为每个AI代理分配不同的角色,并使用Neon的行级安全性(RLS)控制它们对数据的访问。例如,CRM代理可以对客户和产品表具有读写访问权限,而运输代理则被限制在与运输相关的数据上。

准备好构建了吗?

查看 GitHub 仓库

Related Posts

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

AI 研究报告和论文写作 合并两个系统指令以获得两个模型的最佳效果 Perplexity AI 的 Deep Research 工具提供专家级的研究报告,而 OpenAI 的 ChatGPT-o3-mini-high 擅长推理。我发现你可以将它们结合起来生成令人难以置信的论文,这些论文比任何一个模型单独撰写的都要好。你只需要将这个一次性提示复制到 **

阅读更多
让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

Non members click here作为一名软件开发人员,多年来的一个发现总是让我感到惊讶,那就是人们还在 Excel

阅读更多
使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

10 个常见问题解答 本文是我推出的一个名为“10 个常见问题解答”的新系列的一部分。在本系列中,我旨在通过回答关于该主题的十个最常见问题来分解复杂的概念。我的目标是使用简单的语言和相关的类比,使这些想法易于理解。 图片来自 [Solen Feyissa](https://unsplash.com/@solenfeyissa?utm_source=medium&utm_medi

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

在AI军备竞赛中分辨事实与虚构 DeepSeek AI真的是它所宣传的游戏规则改变者,还是仅仅聪明的营销和战略炒作?👀 虽然一些人将其视为AI效率的革命性飞跃,但另一些人则认为它的成功建立在借用(甚至窃取的)创新和可疑的做法之上。传言称,DeepSeek的首席执行官在疫情期间像囤积卫生纸一样囤积Nvidia芯片——这只是冰山一角。 从其声称的550万美元培训预算到使用Open

阅读更多
Type something to search...