跳到主要内容

【课件资料】AutoGen接入DeepSeek V3

公开课内容节选自《大模型与Agent开发》完整版付费课程!

公开课时间有限,若想深度学习大模型技术,欢迎大家报名由我主讲的《大模型与Agent开发实战课》

4a3bf26aef95abca48eafdec1f47397

《大模型与Agent开发实战课》 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!

公开课直播特惠,全年最低价!低至 5 折 !扫码咨询课程信息哦👇

1728478294264


  我们通过一个对话示例来理解各个参数的作用及意义。这里我们接入DeepSeek v3 模型测试。

  • DeepSeek v3账号注册与API获取

  DeepSeek官网:https://www.deepseek.com/

image-20250107155848673

  新用户注册即赠送10元额度,约500万token额度(如果发现没有赠送额度,那就是官方停止了活动。)

image-20250107155925049

  对比GPT4o价格,约降低90%以上:输入价格为GPT4o6%,输出价格为GPT4o3%

image-20250107160101536 image-20250107160418665

  而且其API调用不限速:

image-20250107160659366

  最关键的是,调用风格和OpenAI完全一致:Function callingJson Output等功能完全相同:

image-20250107161014344 image-20250107161058708
import os

from autogen import ConversableAgent

  定义可接入大模型的配置列表:

llm_config = {
"config_list": [
{
"model": "gpt-4o",
"api_key": os.environ.get("OPENAI_API_KEY"),
"tags": ["openai"]
},
{
"model": "qwen2.5:32b",
"base_url": "http://192.168.110.131:11434/v1/", # 注意:如果使用Ollama模型,请先启动模型服务,在替换为自己的实际访问地址
"price": [0.00, 0.00],
"tags": ["ollama"]
},
{
"model": "qwen2.5-coder:32b",
"base_url": "http://192.168.110.131:11434/v1/", # 注意:如果使用Ollama模型,请先启动模型服务,在替换为自己的实际访问地址
"price": [0.00, 0.00],
"tags": ["ollama-coder"]
},
{
"model": "deepseek-chat",
"api_key":"sk-7328ed07b5c647eb93c935e1c361c0da", # 这里替换成自己的key
"base_url": "https://api.deepseek.com",
"price": [0.00, 0.00],
"tags": ["deepseek"]
}
]
}

  通过tags过滤选择的模型,这里我们使用deepseekdeepseek-chat模型作为代理模型。

import autogen

# 过滤出包含 'ollama' 标签的模型配置
filter_model = {"tags": ["deepseek"]}

config_model = autogen.filter_config(
config_list=llm_config["config_list"],
filter_dict=filter_model)

  我们希望通过两个智能体(Agent 1 和 Agent 2)的对话,协作回答一个问题。因此定义出两个ConversableAgent实例。

# 定义了一个agent 1
agent1 = ConversableAgent(
"agent1",
llm_config={
"cache_seed": None, # 禁用缓存
"config_list": config_model}, # 这里使用 config_model
)

agent2 = ConversableAgent(
"agent2",
llm_config={
"cache_seed": None, # 禁用缓存
"config_list": config_model}, # 这里使用 config_model
)

1.1 message 参数解析

  initiate_chat参数必须指定的两个参数是recipientmessage,前者表示消息的接收者,也就是要与谁对话,后者表示对话的初始消息,即多轮对话提出的问题。同时,需要注意的是:在这种双智能体或多智能体对话场景中,必须考虑对话的终止条件,否则会导致对话陷入无休止的循环。 最简单的一个参数是max_turns,通过限制对话的最大轮数(turns)来控制对话的长度,每一轮对话包括一个发起者和一个响应者的完整交互。因此代码如下图所示:

# 启动一个对话
response = agent1.initiate_chat(
recipient=agent2,
message="什么是黑洞?你能用通俗的语言解释吗?",
max_turns=2
)

print(response) # 输出对话的响应

  其中,要发送给接收方的初始消息message必须提供,如果不提供,initiate_chat方法中定义的逻辑会调用 input() 来获取输入,比如:

# 启动一个对话
response = agent1.initiate_chat(
recipient=agent2,
max_turns=2
)

print(response) # 输出对话的响应

  除此以外,message如果是字典或者字符串,则可以直接作为初始消息使用,如果是字典,可以包含:

  • content: 消息内容,可以为 None。
  • tool_calls": 包含函数名称和参数的字典列表。
  • role": 消息的角色,可以是 "assistant", "user", 或 "function"。
  • name": 通常不需要,除非角色是 "function",用于指示函数名称。
  • context": 消息的上下文,将传递给 OpenAIWrapper.create。

公开课内容节选自《大模型与Agent开发》完整版付费课程!

公开课时间有限,若想深度学习大模型技术,欢迎大家报名由我主讲的《大模型与Agent开发实战课》

4a3bf26aef95abca48eafdec1f47397

《大模型与Agent开发实战课》 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!

公开课直播特惠,全年最低价!低至 5 折 !扫码咨询课程信息哦👇

1728478294264