1.初始对话

引入依赖

1
2
3
4
5
6
7
8
9
10
<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>

普通对话

简单发送消息

1
2
3
4
5
6
7
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配置温度、工具等

1
2
3
4
5
6
7
8
//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可能不支持部分类型的消息)

1
2
3
4
5
6
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);

1.初始对话
https://roseflower.site/2026/08/23/langchain4j/1.初始对话/
发布于
2026年8月23日
许可协议