本文翻译自 Spring 官方博客 Spring AI Prompt Engineering Patterns,同时笔者调整案例为 deepseek
前言
随着大语言模型(LLM)的飞速发展,如何有效地设计提示词(Prompt)成为了开发人员必须掌握的一项关键技能。Spring AI 框架为 Java 开发者提供了简洁而强大的 API,使提示工程技术的实现变得简单高效。本文将详细介绍如何使用 Spring AI 实现各种提示工程技巧,帮助您构建更智能、更可靠的 AI 应用程序。 文中的示例和模式基于全面的提示工程指南,展示了如何将理论概念转化为实际可用的 Java 代码实现。1. 配置与初始化
在深入了解提示工程技术之前,我们先看看如何设置和调整 Spring AI 中的大语言模型配置。选择 LLM 提供商
Spring AI 的优势之一是支持多种 LLM 提供商(如 OpenAI、Anthropic、Google Vertex AI、AWS Bedrock、Ollama 等),让您可以在不改变应用代码的情况下切换不同的模型提供商。只需添加所需的启动依赖spring-ai-starter-model-<模型提供商名称> 即可。
例如,添加 Open AI 协议的支持:
LLM 输出配置
Spring AI 提供了多种配置选项,让您可以通过 ChatOptions 构建器控制模型输出的各个方面。
Temperature(温度)
Temperature 控制模型回答的随机性或”创造性”:- 较低值 (0.0-0.3):更确定性、更集中的回答,适合事实性问题和分类任务
- 中等值 (0.4-0.7):在确定性和创造性之间取得平衡,适合一般用例
- 较高值 (0.8-1.0):更具创造性、多样性和潜在的惊喜性,适合创意写作和头脑风暴
输出长度(MaxTokens)
maxTokens 参数限制模型在回答中可以生成的标记(词片段)数量:
- 低值 (5-25):适合单个词、短语或分类标签
- 中等值 (50-500):适合段落或简短解释
- 高值 (1000+):适合长篇内容、故事或复杂解释
采样控制(Top-K 和 Top-P)
这些参数提供了对生成过程中标记选择的精细控制:- Top-K:将标记选择限制在 K 个最可能的下一个标记中
- Top-P(核采样):动态选择累积概率超过 P 的最小标记集
结构化响应格式
除了使用.content() 获取纯文本响应外,Spring AI 还提供了将 LLM 响应直接映射到 Java 对象的简便方法:
模型特定选项
虽然通用的ChatOptions 提供了跨不同 LLM 提供商的一致接口,但 Spring AI 也提供了模型特定的选项类,以便访问提供商特有的功能:
2. 提示工程技术实战
2.1 零样本提示(Zero-Shot Prompting)
零样本提示是指在不提供任何示例的情况下要求 AI 执行任务,测试模型从零开始理解和执行指令的能力。2.2 少样本提示(Few-Shot Prompting)
少样本提示通过提供几个示例来指导模型理解任务模式,尤其适用于需要特定格式或风格的任务。2.3 思维链提示(Chain-of-Thought Prompting)
思维链提示技术鼓励模型逐步思考问题,特别适用于需要推理的复杂任务。2.4 自一致性提示(Self-Consistency Prompting)
自一致性提示技术通过生成多个独立解决方案并选择最常见答案来提高准确性,特别适用于关键决策场景。2.5 思想树提示(Tree-of-Thoughts Prompting)
思想树提示是思维链的扩展,允许模型探索多个推理分支,适用于需要前瞻性思考的复杂问题。2.6 抽象提示(Abstractions in Prompting)
抽象提示技术鼓励模型首先”退一步”,从更高层次理解问题,然后再提供具体解决方案。2.7 角色提示(Role Prompting)
角色提示让 AI 扮演特定角色,激发其基于角色背景知识的特定能力。2.8 自动提示工程(Automatic Prompt Engineering)
自动提示工程(APE)是一种元级别方法,使用 AI 来优化提示本身。2.9 代码提示(Code Prompting)
代码提示专门针对代码相关任务,利用 LLM 理解和生成编程语言的能力。结语
Spring AI 为实现各种提示工程技术提供了优雅的 Java API。通过结合这些技术与 Spring 强大的实体映射和流畅的 API,开发人员可以构建复杂而高效的 AI 应用程序。 最有效的方法往往是结合多种技术——例如,将系统提示与少样本示例结合,或将思维链与角色提示结合。Spring AI 灵活的 API 使这些组合变得直观且易于实现。 对于生产应用,请记住:- 测试不同参数(温度、top-k、top-p)下的提示效果
- 考虑对关键决策使用自一致性技术
- 利用 Spring AI 的实体映射实现类型安全的响应
- 使用上下文提示提供应用程序特定知识