文章目录
大模型语言模型消息类型
在大型语言模型(如GPT-4)的交互过程中,不同类型的消息用于区分不同的角色和功能。以下是用户消息(User Message)、助手消息(Assistant Message)、**系统消息(System Message)和函数调用消息(Function Message)**的详细区别:
1. 系统消息(System Message)
定义:系统消息用于设定模型的整体行为、角色和上下文。它通常在对话的开始阶段提供,用于指导模型如何响应后续的用户输入。
功能:
- 设定角色:例如,“你是一个知识渊博的中文助手。”
- 定义行为规范:如,“请以简洁明了的方式回答问题。”
- 限制内容:例如,“避免讨论敏感话题。”
示例:
{
"role": "system",
"content": "你是一个友好的中文助手,擅长回答各种问题并提供有用的建议。"
}
2. 用户消息(User Message)
定义:用户消息代表用户输入的内容,即用户提出的问题、指令或请求。
功能:
- 提问:例如,“今天天气怎么样?”
- 指令:如,“帮我写一封求职信。”
- 提供信息:例如,“以下是我的日程安排,请帮我优化。”
示例:
{
"role": "user",
"content": "请帮我解释一下量子计算的基本原理。"
}
3. 助手消息(Assistant Message)
定义:助手消息是模型根据用户消息生成的响应。这些消息旨在直接回答用户的问题或完成用户的请求。
功能:
- 回答问题:如,“量子计算利用量子比特进行运算,能够在某些任务上比经典计算机更高效。”
- 执行任务:例如,编写代码、撰写文档等。
- 提供建议:如,推荐书籍、优化计划等。
示例:
{
"role": "assistant",
"content": "量子计算利用量子比特(qubits)进行运算,这些比特可以同时处于0和1的叠加状态,使得量子计算机在处理某些复杂问题时具有并行计算的优势。"
}
4. 函数调用消息(Function Message)
定义:函数调用消息用于模型调用预定义的函数或API,以完成特定任务或获取外部数据。这通常在需要模型与外部系统交互时使用。
功能:
- 调用API:如获取实时天气数据、查询数据库等。
- 执行计算:例如,复杂的数学计算或数据处理。
- 触发操作:如发送电子邮件、设置提醒等。
示例:
{
"role": "function",
"name": "get_weather",
"content": {
"location": "北京",
"date": "2025-01-02"
}
}
代码示例1
# -*- coding: utf-8 -*-
"""
Author: Dontla
Date: 2024-12-27
Description: test3.py
"""
import os
import openai
import json
import time
from redlines import Redlines
import re
def get_openai_key():
"""
自动查找 .env 文件并加载 OpenAI API 密钥。
"""
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
return os.getenv('OPENAI_API_KEY')
def get_custom_openai_client():
return openai.OpenAI(
# 如果使用自定义 API 端点(如 https://xiaoai.plus/v1),取消下面一行的注释并设置你的 API 基础 URL
base_url='https://xiaoai.plus/v1',
# 在代码中直接指定 api_key(不推荐,可能导致api key泄漏)
# api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 通过环境变量读取 api_key(推荐)
api_key=get_openai_key()
)
def get_completion_from_messages(messages, temperature=0.7):
"""
调用 OpenAI API 获取基于消息列表的完成内容。
参数:
messages (list of dict): 要发送给模型的消息列表,通常包含多个角色的对话。
temperature (float, optional): 控制生成文本的随机性。范围为0到1。默认值为0.7。
返回:
str: 模型生成的回复内容。如果请求失败,则返回 `None`。
"""
try:
client = get_custom_openai_client()
response = client.chat.completions.create(
# model="gpt-4",
model="gpt-4o-mini",
messages=messages,
temperature=temperature # 设置 temperature 参数
)
return response.choices[0].message.content.strip()
except Exception as e:
print("获取完成内容失败,错误信息:", e)
return None
def normalize_spaces(s):
return re.sub(r'\s+', ' ', s).strip()
if __name__ == "__main__":
# 中文
messages = [
{'role': 'system', 'content': '你是一个像莎士比亚一样说话的助手。'},
{'role': 'user', 'content': '给我讲个笑话'},
{'role': 'assistant', 'content': '鸡为什么过马路'},
{'role': 'user', 'content': '我不知道'}]
response = get_completion_from_messages(messages, temperature=1)
if response:
print(f"\nresponse:\n{response}")
else:
print("未能获取到有效的回复。")
代码示例中,各种类型消息被手动添加到
messages
列表中,这是为了模拟之前的对话历史。在实际应用中,这些消息应当来源于会话记录,并被保存和管理以便在后续请求中使用。
代码示例2:添加函数调用消息
参考文章:大模型语言模型gpt——函数调用消息function message
总结
在实际应用中,这些消息类型共同协作,确保对话的顺畅和功能的实现。例如,系统消息设定了助手的基本行为,用户通过用户消息提出需求,助手通过助手消息进行响应,必要时通过函数调用消息与外部系统交互,以提供更全面和动态的服务。
- 系统消息:设定模型的角色和行为规范。
- 用户消息:用户输入的问题、指令或信息。
- 助手消息:模型生成的回应,直接回答用户需求。
- 函数调用消息:模型调用外部函数或API以完成特定任务。
理解这些消息类型的区别,有助于更有效地设计和管理与大型语言模型的交互,提高对话的准确性和实用性。