引入依赖
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>1.12.2</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>1.12.2</version>
</dependency>
普通对话
简单发送消息
OpenAiChatModel chatModel = OpenAiChatModel.builder()
.apiKey(System.getenv("AI_KEY"))
.modelName("qwen-plus")
.baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
.build();
ChatResponse response = chatModel.chat(SystemMessage.from("你是一个旅行攻略助手"), UserMessage.from("你好"));
System.out.printf(response.aiMessage().text());
使用ChatRequest配置温度、工具等
//2.配置温度、工具、prompt
ChatRequest chatRequest = ChatRequest.builder()
.messages(SystemMessage.from("你是一个旅行攻略助手"), UserMessage.from("你好"))
.parameters(ChatRequestParameters.builder().temperature(0.2).build())
.build();
ChatResponse response = chatModel.chat(chatRequest);
//ChatResponseMetadata 包含 TokenUsage,其中包含有关输入包含多少令牌的统计信息 (您提供给 generate 方法的所有 ChatMessages), 输出(在 AiMessage 中)生成了多少令牌,以及总计(输入 + 输出)。
System.out.println(response.metadata());
多模态(有些llm可能不支持部分类型的消息)
ChatRequest chatRequest = ChatRequest.builder()
//UserMessage 不仅可以包含文本,还可以包含其他类型的内容。(TextContent、ImageContent、AudioContent、VideoContent、PdfFileContent)
.messages(SystemMessage.from("你是一个小助手"),UserMessage.from(TextContent.from("你好,帮我看看这个图片是什么"), ImageContent.from("https:/example.com/xxx.jpg")))
.parameters(ChatRequestParameters.builder().temperature(0.2).build())
.build();
ChatResponse response = chatModel.chat(chatRequest);
评论区