006_prompt

prompt 是什么

提示词 的核心价值是标准化大模型的输入指令

  • 通过自然语言或结构化语言(如 JSON、XML)告诉模型 "要做什么、输入是什么、输出格式是什么"。
  • 例如:"请将以下文本翻译成英文,输入:'你好世界',输出格式为纯英文句子"
  • 使用者和大模型只要遵守提示词的约定,就能减少模型的 "幻觉",得到预期结果。

prompt 提示词类型

提示词消息分成了多种角色。每个消息都被分配了特定的角色。 这些角色负责对信息进行分类,明确提示中每个部分的上下文和目的,供AI模型使用。 这种结构化的方法增强了与AI沟通的细腻度和有效性,因为提示的每个部分在互动中都扮演着独特且明确的角色。

主要职责包括:

  • 系统角色:指导AI的行为和响应风格,设定AI如何解释和响应输入的参数或规则。这就像在发起对话前先给AI提供指令。
  • 用户角色:代表用户的输入------他们对AI的问题、命令或陈述。这一角色至关重要,因为它构成了人工智能应对的基础。
  • 助理角色:AI对用户输入的回应。 这不仅仅是一个回答或反应,更对于保持对话的流畅性至关重要。 通过追踪AI之前的回复(其"助理角色"消息),系统确保互动连贯且符合上下文。 助手消息也可能包含功能工具调用请求信息。 它就像AI中的一个特殊功能,用于执行特定功能,比如计算、获取数据或其他不仅仅是说话的任务。
  • 工具/功能角色:工具/功能角色专注于回复工具呼叫助手消息时返回更多信息。

1. SYSTEM(系统角色)

  • 核心用途 :定义大模型的行为准则、角色定位、能力边界和全局约束,相当于给模型设定 "工作手册",贯穿整个对话流程。

  • 特点:优先级较高,会影响模型后续所有回复的风格、逻辑和范围,通常在对话开头传入,无需频繁修改。

  • 示例

    java 复制代码
    // 系统消息:定义模型为Java技术助手,指定回答约束
    SystemMessage systemMsg = new SystemMessage("你是一名资深Java开发顾问,回答需简洁专业,仅围绕技术问题,不涉及无关内容");

2. USER(用户角色)

  • 核心用途 :代表用户的输入、问题、指令或需求,是触发模型回复的核心消息类型。

  • 特点:在多轮对话中可多次出现,每一条用户消息通常对应一条助手回复,携带用户的具体诉求。

  • 示例

    java

    运行

    java 复制代码
    // 用户消息:提出具体技术问题
    UserMessage userMsg = new UserMessage("请解释Spring AI中PromptTemplate的作用");

3. ASSISTANT(助手角色)

  • 核心用途 :代表大模型返回的回答、生成结果或反馈 ,主要用于携带对话上下文,让模型记住之前的交互内容,实现多轮连贯对话。

  • 特点:通常由模型生成后存储,在后续对话中随用户新消息一起传入,供模型参考历史交互。

  • 示例

    java

    运行

    java 复制代码
    // 助手消息:模拟模型之前的回复(作为上下文)
    AssistantMessage assistantMsg = new AssistantMessage("PromptTemplate用于封装可复用的提示词模板,通过占位符填充参数,提升

4. FUNCTION / TOOL(函数 / 工具角色,两者功能一致,命名略有差异)

  • 核心用途:有两个核心场景:

    1. 模型向外部系统发送工具调用请求:携带函数名称、参数等结构化信息,告知应用程序需要调用哪个工具完成任务。
    2. 外部系统向模型返回工具调用结果:将工具执行后的返回数据传递给模型,供模型基于该结果生成最终回复。
  • 特点 :需要配合结构化参数传递,是实现 "AI + 工具" 能力的关键角色(Spring AI 中常用FunctionMessage实现)。

  • 示例

    java 复制代码
    // 1. 模型发送工具调用请求(函数角色:指定要调用的天气查询工具及参数)
    Map<String, Object> funcParams = Map.of("city", "上海", "date", "2025-12-22");
    FunctionMessage funcCallMsg = new FunctionMessage("get_weather_info", funcParams);
    
    // 2. 外部工具执行后,返回结果给模型(同样用FunctionMessage承载)
    FunctionMessage funcResultMsg = new FunctionMessage("get_weather_info", Map.of("temperature", "10℃", "weather", "多云"));

补充:TOOL_CALL(工具调用请求)与TOOL_RESULT(工具调用结果)

部分大模型适配场景中,Spring AI 会细分这两个角色,职责更明确:

  • TOOL_CALL:仅用于模型发起工具调用请求,不承载结果。
  • TOOL_RESULT:仅用于返回工具执行结果,与TOOL_CALL一一对应,结构更清晰。
相关推荐
HABuo4 分钟前
【Linux进程(五)】进程地址空间深入剖析-->虚拟地址、物理地址、逻辑地址的区分
linux·运维·服务器·c语言·c++·后端·centos
IT_陈寒31 分钟前
SpringBoot 3.x实战:5个高效开发技巧让我减少了40%重复代码
前端·人工智能·后端
悟空码字1 小时前
三步搞定短信验证码!SpringBoot集成阿里云短信实战
java·spring boot·后端
嘉然今天吃粑粑柑1 小时前
Kafka vs RabbitMQ:从消费模型到使用场景的一次讲清
后端
肥肥今天也好看1 小时前
Java 日期格式化陷阱:YYYY vs yyyy 导致的生产事故分析
后端
用户948357016511 小时前
可观测性落地:如何在 Java 项目中统一埋点 Trace ID?(一)
后端
天天摸鱼的java工程师1 小时前
volatile 关键字底层原理:为什么它不能保证原子性?
java·后端
leikooo1 小时前
SpringAI 多轮对话报错 400 Bad Request
后端·ai编程
小杨同学491 小时前
C 语言实战:堆内存存储字符串 + 多种递归方案计算字符串长度
数据库·后端·算法
golang学习记1 小时前
Go 中防止敏感数据意外泄露的几种姿势
后端