AI Services:方法示例

前面我们已经学到了如何定义一个接口,如下:

// 定义业务接口
interface Assistant {
    // userMessage 是用户输入的消息
    // 返回值是 AI 回复的内容呢
    String chat(@UserMessage String userMessage, ChatRequestParameters chatRequestParameters);
}

然后,使用 AiServices 类快速创建接口对应的服务对象:

// 使用 AiServices 创建服务
Assistant assistant = AiServices.builder(Assistant.class)
        .chatModel(chatModel)
        .build();

以下是一些有效的人工智能服务方法示例,可以作为参考。

UserMessage 用户消息

下面示例给出了如何定义拥有用户消息(@UserMessage)的示例,看看是否有你需要的:

String chat(String userMessage);

String chat(@UserMessage String userMessage);

String chat(@UserMessage String userMessage, ChatRequestParameters parameters);

// userMessage 包含 "{{country}}" 模板变量
String chat(@UserMessage String userMessage, @V("country") String country); 

// content 可以是以下之一: 
// TextContent, ImageContent, AudioContent, VideoContent, PdfFileContent
String chat(@UserMessage String userMessage, @UserMessage Content content); 

// 第二个参数 image 可以是以下之一: 
// TextContent, ImageContent, AudioContent, VideoContent, PdfFileContent
String chat(@UserMessage String userMessage, @UserMessage ImageContent image); 

String chat(@UserMessage String userMessage, @UserMessage List<Content> contents);

String chat(@UserMessage String userMessage, @UserMessage List<ImageContent> images);

@UserMessage("德国的首都是什么?")
String chat();

@UserMessage("{{it}}的首都是什么?")
String chat(String country);

@UserMessage("{{country}}的首都是什么?")
String chat(@V("country") String country);

@UserMessage("{{something}}是{{country}}的什么?")
String chat(@V("something") String something, @V("country") String country);

// 这仅在Quarkus和Spring Boot应用程序中有效
@UserMessage("{{country}}的首都是什么?")
String chat(String country);

SystemMessage 和 UserMessage

下面给出了同时拥有系统消息(@SystemMessage)和用户消息(@UserMessage)的示例,看看是否有你需要的:

@SystemMessage("给定一个国家的名称,请用它的首都名称来回答")
String chat(String userMessage);

@SystemMessage("给定一个国家的名称,请用它的首都名称来回答")
String chat(@UserMessage String userMessage);

@SystemMessage("给定一个国家的名称,{{answerInstructions}}")
String chat(@V("answerInstructions") String answerInstructions, 
            @UserMessage String userMessage);

// userMessage包含 “{{country}}” 模板变量
@SystemMessage("给定一个国家的名称,请用它的首都名称来回答")
String chat(@UserMessage String userMessage, @V("country") String country); 

// userMessage包含“{{country}}”模板变量
@SystemMessage("给定一个国家的名称,{{answerInstructions}}")
String chat(@V("answerInstructions") String answerInstructions, 
            @UserMessage String userMessage, @V("country") String country); 

@SystemMessage("给定一个国家的名称,请用它的首都名称来回答")
@UserMessage("德国")
String chat();

@SystemMessage("给定一个国家的名称,{{answerInstructions}}")
@UserMessage("德国")
String chat(@V("answerInstructions") String answerInstructions);

@SystemMessage("给定一个国家的名称,请用它的首都名称来回答")
@UserMessage("{{it}}")
String chat(String country);

@SystemMessage("给定一个国家的名称,请用它的首都名称来回答")
@UserMessage("{{country}}")
String chat(@V("country") String country);

@SystemMessage("给定一个国家的名称,{{answerInstructions}}")
@UserMessage("{{country}}")
String chat(@V("answerInstructions") String answerInstructions, 
            @V("country") String country);

多模态

除了文本内容之外,或者作为文本内容的替代,AI 服务方法可以接受一个或多个 Content 或 List 参数:

String chat(@UserMessage String userMessage, @UserMessage Content content);

String chat(@UserMessage String userMessage, @UserMessage ImageContent image);

String chat(@UserMessage String userMessage, @UserMessage ImageContent image, 
            @UserMessage AudioContent audio);

String chat(@UserMessage String userMessage, @UserMessage List<Content> contents);

String chat(@UserMessage String userMessage, @UserMessage List<ImageContent> images);

String chat(Content content);

String chat(AudioContent content);

String chat(List<Content> contents);

String chat(List<AudioContent> contents);

String chat(@UserMessage Content content1, @UserMessage Content content2);

String chat(@UserMessage AudioContent audio, @UserMessage ImageContent image);

注意:AI 服务会按照参数声明的顺序,将所有内容放入最终的 UserMessage 中。

更多 LangChain4j 知识请阅读后续教程……

  

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号