【课件资料】AutoGen接入DeepSeek V3
公开课内容节选自《大模型与Agent开发》完整版付费课程!
公开课时间有限,若想深度学习大模型技术,欢迎大家报名由我主讲的《大模型与Agent开发实战课》 :
《大模型与Agent开发实战课》 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!
公开课直播特惠,全年最低价!低至 5 折 !扫码咨询课程信息哦👇
我们通过一个对话示例来理解各个参数的作用及意义。这里我们接入DeepSeek v3 模型测试。
- DeepSeek v3账号注册与API获取
DeepSeek官网:https://www.deepseek.com/
新用户注册即赠送10元额度,约500万token额度(如果发现没有赠送额度,那就是官方停止了活动。)
对比GPT4o价格,约降低90%以上:输入价格为GPT4o的6%,输出价格为GPT4o的3%。
而且其API调用不限速:
最关键的是,调用风格和OpenAI完全一致:Function calling、Json Output等功能完全相同:
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过滤选择的模型,这里我们使用deepseek 的 deepseek-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参数必须指定的两个参数是recipient和message,前者表示消息的接收者,也就是要与谁对话,后者表示对话的初始消息,即多轮对话提出的问题。同时,需要注意的是:在这种双智能体或多智能体对话场景中,必须考虑对话的终止条件,否则会导致对话陷入无休止的循环。 最简单的一个参数是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开发实战课》 :
《大模型与Agent开发实战课》 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!
公开课直播特惠,全年最低价!低至 5 折 !扫码咨询课程信息哦👇
