当前位置: 首页 > news >正文

AI Agent系列(三) -Agent实现

AI Agent系列【三】

  • 一、CAMEL
  • 二、Deep seek的API调用
    • 1. Deepseek的AI相关信息如下
    • 2. 调用对话 API
  • 三、基于Camel和DeepSeek的AI Agent
    • 1. 问答机器人
    • 2. 角色扮演-汽车市场分析


一、CAMEL

CAMEL(Communicative Agents for “Mind” Exploration of Large Language Model Society)是开源多智能体框架,旨在探索大规模语言模型社会中智能体的协作与扩展规律。

CAMEL通过角色扮演与标准化流程,解决了单智能体在复杂任务中的局限性,其开源特性与模块化设计使其成为多智能体研究的标杆工具。开发者可通过GitHub仓库快速上手,参与社区共建智能体未来。
GitHub地址:https://github.com/camel-ai/camel

二、Deep seek的API调用

DeepSeek API 使用与 OpenAI 兼容的 API 格式,通过修改配置,您可以使用 OpenAI SDK 来访问 DeepSeek API,或使用与 OpenAI API 兼容的软件。

1. Deepseek的AI相关信息如下

  • 出于与 OpenAI 兼容考虑,可以将 base_url 设置为 https://api.deepseek.com/v1 来使用,但注意,此处 v1 与模型版本无关。
  • deepseek-chat 模型已全面升级为 DeepSeek-V3,接口不变。 通过指定 model=‘deepseek-chat’ 即可调用 DeepSeek-V3。
  • deepseek-reasoner 是 DeepSeek 最新推出的推理模型DeepSeek-R1。通过指定 model=‘deepseek-reasoner’,即可调用 DeepSeek-R1。

2. 调用对话 API

在创建 API key 之后,你可以使用以下样例脚本的来访问 DeepSeek API。样例为非流式输出,您可以将 stream 设置为 true 来使用流式输出。

# Please install OpenAI SDK first: `pip3 install openai`

from openai import OpenAI

client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "Hello"},
    ],
    stream=False
)

print(response.choices[0].message.content)

三、基于Camel和DeepSeek的AI Agent

1. 问答机器人

通过一个简单的问答机器人的搭建,我们即可理解基于智能体的大语言模型的应用。我们只需要通过安装camel-ai的库即可实现对camel的应用。

pip install camel-ai

如下是对应的代码实现。

from camel.agents import ChatAgent
from camel.models import ModelFactory
from camel.types import ModelPlatformType
 

model = ModelFactory.create(
    model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,
    model_type="deepseek-chat",
    url="https://api.deepseek.com",
    api_key='<DeepSeek API Key>'
)
 
agent = ChatAgent(
    model=model,
    output_language='中文'
)
 
response = agent.step("你好,介绍一下你自己?")
print(response.msgs[0].content)

代码执行后的输出结果如下:
在这里插入图片描述

2. 角色扮演-汽车市场分析

通过调用Camel的角色扮演模块,设置任务目标、AI助手角色名以及用户角色,智能体即可自行进行对话思考生成机器人。

  • 设置任务目标

    task_prompt = “为汽车销售开发一个汽车市场预测机器人”

  • 设置AI助手的角色名

    assistant_role_name=“Python 程序员”

  • 设置用户角色名

    user_role_name=“汽车市场分析员”

通过camel框架下的AI代理机器人的代码实现如下:

from colorama import Fore #终端文本颜色库
 
from camel.societies import RolePlaying #Camel核心模块 角色扮演
from camel.utils import print_text_animated 
from camel.models import ModelFactory 
from camel.types import ModelPlatformType 
 
from dotenv import load_dotenv
 
import os
 
load_dotenv(dotenv_path='.env')
 
model = ModelFactory.create(
    model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,
    model_type="deepseek-chat",
    url='https://api.deepseek.com',
    api_key='sk-1300fa6937ca443c807d07819df8a817'
)
 
def main(model=model, chat_turn_limit=50) -> None:
    task_prompt = "为汽车开发一个市场分析机器人"#设置任务目标
    role_play_session = RolePlaying(
        assistant_role_name="Python 程序员",#设置AI助手角色名
        assistant_agent_kwargs=dict(model=model),
        user_role_name="汽车市场分析员",#设置用户角色名,在roleplay中,user用于指导AI助手完成任务
        user_agent_kwargs=dict(model=model),
        task_prompt=task_prompt,
        with_task_specify=True,
        task_specify_agent_kwargs=dict(model=model),
        output_language='中文'#设置输出语言
    )
 
    print(
        Fore.GREEN
        + f"AI 助手系统消息:\n{role_play_session.assistant_sys_msg}\n"
    )
    print(
        Fore.BLUE + f"AI 用户系统消息:\n{role_play_session.user_sys_msg}\n"
    )
 
    print(Fore.YELLOW + f"原始任务提示:\n{task_prompt}\n")
    print(
        Fore.CYAN
        + "指定的任务提示:"
        + f"\n{role_play_session.specified_task_prompt}\n"
    )
    print(Fore.RED + f"最终任务提示:\n{role_play_session.task_prompt}\n")
 
    n = 0
    input_msg = role_play_session.init_chat()
    while n < chat_turn_limit:
        n += 1
        assistant_response, user_response = role_play_session.step(input_msg)
 
        if assistant_response.terminated:
            print(
                Fore.GREEN
                + (
                    "AI 助手已终止。原因: "
                    f"{assistant_response.info['termination_reasons']}."
                )
            )
            break
        if user_response.terminated:
            print(
                Fore.GREEN
                + (
                    "AI 用户已终止。"
                    f"原因: {user_response.info['termination_reasons']}."
                )
            )
            break
 
        print_text_animated(
            Fore.BLUE + f"AI 用户:\n\n{user_response.msg.content}\n"
        )
        print_text_animated(
            Fore.GREEN + "AI 助手:\n\n"
            f"{assistant_response.msg.content}\n"
        )
 
        if "CAMEL_TASK_DONE" in user_response.msg.content:
            break
 
        input_msg = assistant_response.msg
 
if __name__ == "__main__":
    main()

执行后输出结果如下:
在这里插入图片描述

相关文章:

  • 云原生服务网格:微服务通信的智能中
  • vue3-computed计算属性和reactive响应式系统结合使用
  • 01、Hive从入门到放弃,第一章:简单入门与安装
  • 引入其他 YML 配置源 —— Spring Boot 中的 `import` 功能
  • Leetcode-146.LRU缓存
  • Oracle RAC环境下自动清理归档日志实战指南
  • vscode更新后: 适用于 Linux 的 Windows 子系统必须更新到最新版本才能继续。可通过运行 “wsl.exe --update” 进行更新
  • 【从零开始学习计算机科学】操作系统(九)大容量存储器
  • Fast DDS Security--仿问控制
  • 《OpenCV》—— dlib(换脸操作)
  • Figma桌面客户端安装与协作设计入门指南(附官方下载链接)
  • 《React 属性与状态江湖:从验证到表单受控的实战探险》
  • Apache Hudi 性能测试报告
  • MVCC的理解(Multi-Version Concurrency Control,多版本并发控制)
  • 蓝桥杯备考:排队顺序(链表)
  • Spring Boot 整合 Redis
  • Python数据分析之数据可视化
  • 数据结构——堆
  • 使用异或完成两个整数的交换
  • 如何使用 CSS 实现黑色遮罩效果
  • 《歌手》回归,人均技术流,00后整顿职场
  • 孟夏韵评《无序的学科》丨误读与重构的文化漂流
  • 高瓴、景林旗下公司美股持仓揭晓:双双增持中概股
  • 高途一季度净利润同比增长1108%: “与吴彦祖一起学英语”短时间内就实现了盈利
  • 河南信阳:对违规吃喝问题不遮丑不护短,露头就打、反复敲打
  • 辽宁盘山县一乡镇幼儿园四名老师被指多次殴打一女童,均被行拘