构建DeepSeek-V3多轮对话机器人及模型参数列表

构建DeepSeek-V3多轮对话机器人及模型参数列表

一、构建DeepSeek v3多轮对话机器人相关函数

  1. extract_url_and_text函数
    • 作用:从用户输入文本中提取URL和描述文本。利用正则表达式查找URL,若找到则提取URL并去除原文本中的URL部分得到描述文本;若未找到则返回原文本和None。此函数为未来DeepSeek v3支持多模态功能时处理图片URL输入做准备。
    • 示例代码
import re  # 导入re模块,用于正则表达式操作

def extract_url_and_text(input_text):
    url_pattern = re.compile(r'(https?://[^\s]+)')  # 编译正则表达式,用于匹配URL
    url_match = url_pattern.search(input_text)  # 在输入文本中搜索URL
    if url_match:  # 如果找到URL
        url = url_match.group(0)  # 获取匹配到的URL
        description = input_text.replace(url, '').strip()  # 从输入文本中移除URL并去除两端的空白字符
        return description, url  # 返回描述文本和URL
    else:  # 如果未找到URL
        return input_text, None  # 返回原输入文本和None
  1. create_message函数
    • 作用:将用户输入信息包装成符合要求的message格式。接收消息角色(如userassistantsystem)和消息内容(字符串或包含文本、图片链接的数组)作为参数,返回包含rolecontent的字典。
    • 示例代码
def create_message(role, content):
    return {
        "role": role,  # 消息角色,如user、assistant、system
        "content": content  # 消息内容,可以是文本或包含文本、图片链接的数组
    }
  1. process_user_input函数
    • 作用:判断用户输入是否包含URL。若包含,根据情况生成带图像链接的消息;若不包含,则生成普通文本消息。
    • 示例代码
def process_user_input(input_text):
    description, url = extract_url_and_text(input_text)  # 调用extract_url_and_text函数获取描述文本和URL
    if url:  # 如果存在URL
        if not description:  # 如果描述文本为空
            description = "请帮我分析这张图片的内容。"  # 设置默认描述文本
        return create_user_message_with_image(description, url)  # 创建包含文本和图像链接的用户消息
    else:  # 如果不存在URL
        return create_message("user", description)  # 创建普通文本的用户消息
  1. create_user_message_with_image函数
    • 作用:当用户输入同时包含文本和图片信息时,将文本和图片URL分别包装成不同的格式,组合成一个符合要求的用户消息message
    • 示例代码
def create_user_message_with_image(text, image_url):
    return {
        "role": "user",  # 消息角色为用户
        "content": [
            {"type": "text", "text": text},  # 消息内容中的文本部分
            {"type": "image_url", "image_url": {"url": image_url}}  # 消息内容中的图像链接部分
        ]
    }
  1. chat_with_DeepSeek函数
    • 作用:执行对DeepSeek模型的单次调用。接收实例化的OpenAI客户端和消息列表作为参数,使用deepseek-chat模型进行对话,返回模型生成的回复内容。
    • 示例代码
def chat_with_DeepSeek(client, messages):
    response = client.chat.completions.create(
        model="deepseek-chat",  # 使用deepseek-chat模型
        messages=messages  # 对话消息列表
    )
    return response.choices[0].message.content  # 返回模型生成的回复内容
  1. multi_round_chat函数
    • 作用:实现多轮对话的核心逻辑。初始化包含系统消息的消息列表,在循环中不断捕获用户输入,处理后添加到消息列表,调用模型获取回复并展示,再将回复添加到消息列表,当用户输入exit时退出对话。
    • 示例代码
from IPython.display import display, Markdown  # 从IPython.display模块导入display和Markdown,用于显示Markdown格式文本

def multi_round_chat():
    messages = []  # 初始化消息列表
    system_message = create_message("system", "You are a helpful assistant.")  # 创建系统消息
    messages.append(system_message)  # 将系统消息添加到消息列表
    while True:  # 无限循环,持续进行对话
        user_input = input("User: ")  # 获取用户输入
        user_message = process_user_input(user_input)  # 处理用户输入,生成用户消息
        messages.append(user_message)  # 将用户消息添加到消息列表
        assistant_reply = chat_with_DeepSeek(client, messages)  # 调用模型获取回复
        display(Markdown(f"Assistant: {assistant_reply}"))  # 显示模型的回复
        messages.append(create_message("assistant", assistant_reply))  # 将模型回复添加到消息列表
        if user_input.lower() == 'exit':  # 如果用户输入为exit
            print("对话结束。")  # 打印对话结束信息
            break  # 退出循环

二、DeepSeek v3模型参数列表

参数名 类型 必填/可选 默认值 说明
model string 必填 指定要使用的模型ID,例如deepseek-chatdeepseek-code
store boolean或null 可选 false 是否存储本次对话的输出,供模型精炼或评估产品使用
metadata object或null 可选 null 开发者自定义的标签和值,用于过滤仪表盘中的补全结果
frequency_penalty number或null 可选 0 数值在 -2.0到2.0之间,正值减少重复生成内容的可能性
logit_bias map 可选 null 调整某些特定tokens出现的可能性,值在 -100到100之间
logprobs boolean或null 可选 false 是否返回生成的每个token的对数概率
top_logprobs integer或null 可选 null 指定返回最有可能出现的前几个tokens及其概率,需开启logprobs
max_completion_tokens integer或null 可选 null 指定模型生成的最大token数,包括可见文本和推理tokens
n integer或null 可选 1 每个输入生成的对话补全选项数量,值越大,生成的回复越多
presence_penalty number或null 可选 0 数值在 -2.0到2.0之间,正值鼓励生成新的主题和内容
response_format object 可选 null 指定生成结果的格式,可以设置为json_schema确保结构化输出,或json_object用于JSON格式
seed integer或null 可选 null 保持生成的一致性,确保结构化输出,以确保每次生成相同的结果
service_tier string或null 可选 auto 指定服务延迟等级,适用于付费订阅用户,默认为auto
stop string / array / null 可选 null 最多指定4个序列,API遇到这些序列时会停止生成进一步的tokens
stream boolean或null 可选 false 是否启用流式响应,若启用,生成的tokens将逐步返回
stream_options object或null 可选 null 流式响应的选项,仅当stream为true时设置
temperature number或null 可选 1 控制生成输出的随机性,值越高生成的文本越随机。建议调整此值或top_p,而不是同时调整
top_p number或null 可选 1 使用核采样方法,选择最有可能的tokens,总概率达到top_p百分比。建议与temperature二选一
tools array 可选 null 模型可以调用的工具列表,目前仅支持函数调用
user string 可选 null 表示最终用户的唯一标识符,用于监控和检测滥用行为
  1. 模型和输出相关参数
    • model:必填,指定使用的模型ID,如deepseek-chatdeepseek-code 。决定模型功能,是对话还是编程等任务的关键设定。
    • store:可选,布尔值或null,默认false。控制是否存储对话输出,用于模型训练或评估 。
    • metadata:可选,对象或null,默认null。开发者添加自定义标签,方便在仪表盘中过滤补全结果。
    • max_completion_tokens:可选,整数或null。指定模型生成的最大token数,包括可见文本和推理tokens,控制生成内容长度,影响生成成本。
    • n:可选,整数,默认1。每个输入生成的对话补全选项数量,值越大回复越多,同样影响生成成本。
  2. 生成行为控制参数
    • frequency_penalty:可选,数值在 -2.0到2.0之间,默认0。正值减少重复生成内容可能性,影响生成结果的内容重复度。
    • presence_penalty:可选,数值在 -2.0到2.0之间,默认0。正值鼓励生成新主题和内容,与frequency_penalty共同影响生成结果的新颖性。
    • logit_bias:可选,映射类型,默认null。调整特定tokens出现概率,取值在 -100到100之间,是高级控制工具。
    • temperature:可选,数值,默认1。控制生成输出的随机性,值越高文本越随机,建议与top_p选其一调整。
    • top_p:可选,数值,默认1。使用核采样方法,选择总概率达到top_p百分比的最有可能的tokens,与temperature二选一调整随机性。
  3. 高级功能参数
    • logprobs:可选,布尔值或null,默认false。是否返回生成的每个token的对数概率,用于更细粒度分析模型输出。
    • top_logprobs:可选,整数或null,默认null。指定返回最有可能出现的前几个tokens及其概率,需开启logprobs
    • stream:可选,布尔值或null,默认false。启用后生成的tokens将逐步返回,适用于需要实时展示内容的场景。
    • tools:可选,数组,默认null。模型可调用的工具列表,目前仅支持函数调用,用于扩展模型功能。
  4. 服务和用户相关参数
    • service_tier:可选,字符串或null,默认auto。指定服务延迟等级,适用于付费订阅用户,控制服务的延迟和稳定性。
    • user:可选,字符串,默认null。表示最终用户的唯一标识符,用于监控和检测滥用行为。

你可能感兴趣的:(DeepSeek系列笔记,DeepSeek,算法,人工智能,大模型)