Langroid项目:使用OpenAI Assistants API实现多智能体编程

Langroid项目:使用OpenAI Assistants API实现多智能体编程

langroid Harness LLMs with Multi-Agent Programming langroid 项目地址: https://gitcode.com/gh_mirrors/la/langroid

概述

OpenAI的Assistants API为构建LLM应用提供了多项便利功能,包括管理对话状态、持久化线程和助手、工具调用等。Langroid项目中的OpenAIAssistant类将这些助手作为基本构建块,支持多智能体协作完成任务。

环境准备

安装依赖

首先需要安装Langroid库:

!pip install -q --upgrade langroid

导入必要模块

from pydantic import BaseModel
import json
import os
from langroid.agent.openai_assistant import (
    OpenAIAssistantConfig,
    OpenAIAssistant,
    AssistantTool,
)
from langroid.agent.chat_agent import ChatAgent, ChatAgentConfig
from langroid.agent.task import Task
from langroid.agent.tool_message import ToolMessage
from langroid.language_models.openai_gpt import OpenAIGPTConfig, OpenAIChatModel

设置API密钥

import os
from getpass import getpass
os.environ['OPENAI_API_KEY'] = getpass('输入您的GPT4-Turbo API密钥:')

基础示例

示例1:基本聊天功能

cfg = OpenAIAssistantConfig(
    llm=OpenAIGPTConfig(chat_model=OpenAIChatModel.GPT4_TURBO)
)
agent = OpenAIAssistant(cfg)

response = agent.llm_response("3的平方是多少?")
response = agent.llm_response("那5呢?")  # 保持对话状态

示例2:将智能体封装为任务

task = Task(
    agent,
    system_message="用户会给你一个词,返回它的反义词,如果不知道就说DO-NOT-KNOW。要简洁!",
    single_round=True
)
result = task.run("ignorant")

高级功能示例

示例3:代码解释器工具

agent.add_assistant_tools([AssistantTool(type="code_interpreter")])
task = Task(agent, interactive=False, single_round=True)
result = task.run("如果从1,2开始,第10个斐波那契数是多少?")

示例4:检索工具

import requests
file_url = "https://example.com/lease.txt"
response = requests.get(file_url)
with open('lease.txt', 'wb') as file:
    file.write(response.content)

agent = OpenAIAssistant(cfg)
agent.add_assistant_tools([AssistantTool(type="retrieval")])
agent.add_assistant_files(["lease.txt"])
response = agent.llm_response("租赁合同的开始日期是什么时候?")

示例5:自定义函数调用

class SquareTool(ToolMessage):
    request = "square"
    purpose = "计算数字<num>的平方"
    num: int

    def handle(self) -> str:
        return str(self.num ** 2)

cfg = OpenAIAssistantConfig(
    llm=OpenAIGPTConfig(chat_model=OpenAIChatModel.GPT4_TURBO),
    name="数字专家",
)
agent = OpenAIAssistant(cfg)
agent.enable_message(SquareTool)
task = Task(
    agent,
    system_message="用户会让你计算一个数的平方。你不知道怎么做,所以会使用square函数来找到答案。得到答案后说DONE并显示结果。",
    interactive=False,
)
response = task.run("5的平方是多少?")

综合示例:双智能体租赁信息提取系统

定义数据结构

class LeasePeriod(BaseModel):
    start_date: str
    end_date: str

class LeaseFinancials(BaseModel):
    monthly_rent: str
    deposit: str

class Lease(BaseModel):
    period: LeasePeriod
    financials: LeaseFinancials
    address: str

定义工具消息

class LeaseMessage(ToolMessage):
    request: str = "lease_info"
    purpose: str = "收集商业租赁信息"
    terms: Lease

    def handle(self):
        print(f"完成! 成功提取租赁信息:{self.terms}")
        return json.dumps(self.terms.dict())

创建检索智能体

retriever_cfg = OpenAIAssistantConfig(
    name="租赁检索器",
    llm=OpenAIGPTConfig(chat_model=OpenAIChatModel.GPT4_TURBO),
    system_message="根据提供的文档回答问题",
)
retriever_agent = OpenAIAssistant(retriever_cfg)
retriever_agent.add_assistant_tools([AssistantTool(type="retrieval")])
retriever_agent.add_assistant_files(["lease.txt"])
retriever_task = Task(
    retriever_agent,
    llm_delegate=False,
    single_round=True,
)

创建提取智能体

extractor_cfg = OpenAIAssistantConfig(
    name="租赁提取器",
    llm=OpenAIGPTConfig(chat_model=OpenAIChatModel.GPT4_TURBO),
    system_message="你需要从一份你没有访问权限的租赁合同中收集信息。你需要通过提问来获取这些信息。一次只问一两个问题!",
)
extractor_agent = OpenAIAssistant(extractor_cfg)
extractor_agent.enable_message(LeaseMessage, include_defaults=False)

extractor_task = Task(
    extractor_agent,
    llm_delegate=True,
    single_round=False,
)

运行双智能体系统

extractor_task.add_sub_task(retriever_task)
extractor_task.run()

总结

Langroid的OpenAIAssistant类提供了:

  1. 一个简单易用的OpenAI Assistants API接口
  2. 无缝实现智能体间协作的能力

通过从基础示例到复杂双智能体系统的逐步演示,我们展示了如何利用Langroid构建强大的多智能体LLM应用。

langroid Harness LLMs with Multi-Agent Programming langroid 项目地址: https://gitcode.com/gh_mirrors/la/langroid

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邹卿雅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值