四处走动免安装绿色版
1.78G · 2025-10-12
@[toc]
在生成式人工智能中,创建提示对于开发人员来说是一项至关重要的任务。这些提示的质量和结构会显著影响人工智能输出的有效性。投入时间和精力设计周到的提示可以显著提升人工智能的成果。
例如,一项重要的研究表明,以“深呼吸,一步一步解决这个问题”作为提示开头,可以显著提高解决问题的效率。这凸显了精心选择的语言对生成式人工智能系统性能的影响。
public enum MessageType {
USER("user"), // 用户(显示)
ASSISTANT("assistant"), // AI回复
SYSTEM("system"), // 系统 (隐式)
TOOL("tool"); // 工具
...
}
提示词模板: 有时候, 提示词里面的内容不能写死, 需要根据对话动态传入
可以使用SystemPromptTemplate
String userText = """
请告诉我三位著名的海盗,他们的黄金时代和他们的动机。
每位海盗至少写一句话。
""";
Message userMessage = new UserMessage(userText);
String systemText = """
你是一个友好的 AI 助手,帮助人们寻找信息。
你的名字是 {name}。
你应该用你的名字回复用户的请求,并以一种 {voice} 的风格进行回复。
""";
SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemText);
Message systemMessage = systemPromptTemplate.createMessage(Map.of("name", name, "voice", voice));
Prompt prompt = new Prompt(List.of(userMessage, systemMessage));
List<Generation> response = chatModel.call(prompt).getResults();
String answer = ChatClient.create(chatModel).prompt()
.user(u -> u
.text("告诉我5部{composer}的电影.")
.param("composer", "周星驰"))
.call()
.content();
PromptTemplate promptTemplate = PromptTemplate.builder()
.renderer(StTemplateRenderer.builder().startDelimiterToken('<').endDelimiterToken('>').build())
.template("""
告诉我5部<composer>的电影.
""")
.build();
String prompt = promptTemplate.render(Map.of("composer", "John Williams"));
String answer = ChatClient.create(chatModel).prompt()
.user(u -> u
.text("告诉我5部<composer>的电影")
.param("composer", "John Williams"))
.templateRenderer(StTemplateRenderer.builder().startDelimiterToken('<').endDelimiterToken('>').build())
.call()
.content();
@Value("classpath:/prompts/system-message.st")
private Resource systemResource;
SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemResource);
/prompts/system-message.st
告诉我5部{composer}的电影
@Test
public void testPrompt(@Autowired DeepSeekChatModel chatModel,
// 加载该资源文件
@Value("classpath:/prompts/system-message.st")
Resource systemResource) {
ChatClient chatClient = ChatClient.builder(chatModel)
.defaultSystem(systemResource)
.build();
String content = chatClient.prompt()
.system(p -> p.param("composer","周星驰"))
.call()
.content();
System.out.println(content);
}
公式:「角色设定」+「具体任务(技能)」+「限制条件(约束)」+「示例参考」
# 角色
你是一位热情、专业的导游,熟悉各种旅游目的地的风土人情和景点信息。你的任务是根据用户的需求,为他们规划一条合理且有趣的旅游路线。
## 技能
### 技能1:理解客户需求
- 询问并了解用户的旅行偏好,包括但不限于目的地、预算、出行日期、活动偏好等信息。
- 根据用户的需求,提供个性化的旅游建议。
### 技能2:规划旅游路线
- 结合用户的旅行偏好,设计一条详细的旅游路线,包括行程安排、交通方式、住宿建议、餐饮推荐等。
- 提供每个景点的详细介绍,包括历史背景、特色活动、最佳游览时间等。
### 技能3:提供实用旅行建议
- 给出旅行中的实用建议,如必备物品清单、当地风俗习惯、安全提示等。
- 回答用户关于旅行的各种问题,例如签证、保险、货币兑换等。
- 如果有不确定的地方,可以调用搜索工具来获取相关信息。
## 限制
- 只讨论与旅行相关的话题。
- 确保所有推荐都基于客户的旅行需求。
- 不得提供任何引导客户参与非法活动的建议。
- 所提供的价格均为预估,可能会受到季节等因素的影响。
- 不提供预订服务,只提供旅行建议和信息。
# 知识库
请记住以下材料,他们可能对回答问题有帮助。