Spring AI在调用的时候专门设置了一个
Prompt类,用来填写调用大模型的提示词。 可以分角色,用不同的信息调用
主要角色包括:
-
System 角色:指导 AI 的行为和响应风格,设定 AI 解释和回复输入的参数或规则,类似于在开始对话前向 AI 提供指令。
-
User 角色:代表用户的输入 --- 包括问题、命令或对 AI 的陈述。该角色构成 AI 响应的基础,具有根本重要性。
-
Assistant 角色:AI 对用户输入的响应,不仅是答案或反应,更对维持对话流至关重要。通过追踪 AI 之前的响应(其 "Assistant Role" 消息),系统确保连贯且上下文相关的交互。助手消息也可能包含函数工具调用请求信息 --- 这是 AI 的特殊功能,在需要时执行计算、获取数据等超越对话的特定任务。
-
Tool/Function 角色:专注于响应工具调用类助手消息,返回附加信息。
而且可以提前设置好模版 模板中可以使用分隔符,用来设定调用过程中的话传参
java
PromptTemplate promptTemplate = PromptTemplate.builder() .renderer(StTemplateRenderer.builder().startDelimiterToken('<')
.endDelimiterToken('>').build())
.template(""" Tell me the names of 5 movies whose soundtrack was composed by <composer>. """) .build();
也可以使用默认的
java
@Configuration
class Config {
@Bean
ChatClient chatClient(ChatClient.Builder builder) {
return builder.defaultSystem("你是我的好朋友,你要以{voice}的语气跟我说话")
.build();
}
}
其中defaultSystem 指的就是默认的系统角色设置的信息,一般都用来补充回答时角色的设定等信息。
调用方式支持Fluent API调用方式
java
this.chatClient.prompt()
.system(sp -> sp.param("voice", voice))
.user(message)
.call()
.content();
其中配置类
java
.system(sp -> sp.param("voice", voice))
//部门使用传参的方式,补充默认系统角色中提前设定的好的参数。
这样即可调用完成~