代码调用大模型的方式有两种:
1.LangChain4j https://docs.langchain4j.dev/
2.SpringAI
LangChain4j
引入maven依赖
这个版本对应的jdk17+

langchain4j + ollama
java
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.0</version>
<relativePath/>
</parent>
<groupId>org.example</groupId>
<artifactId>langchain4j-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>langchain4j-demo</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-ollama-spring-boot-starter</artifactId>
<version>1.0.1-beta6</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
java
langchain4j:
ollama:
chat-model:
base-url: http://localhost:11434
model-name: qwen3:0.6b
log-requests: true
log-responses: true
logging:
level:
dev.langchain4j: debug
java
@RestController
@RequestMapping("/model")
public class ChatController {
@Autowired
private OllamaChatModel model;
@GetMapping("/chat")
public String chat(String message) {
String result = model.chat(message);
return result;
}
}


java
2025-11-25T22:43:31.563+08:00 INFO 21096 --- [nio-8080-exec-1] d.l.http.client.log.LoggingHttpClient : HTTP request:
- method: POST
- url: http://localhost:11434/api/chat
- headers: [Content-Type: application/json]
- body: {
"model" : "qwen3:0.6b",
"messages" : [ {
"role" : "user",
"content" : "柳岩漂亮吗"
} ],
"options" : {
"stop" : [ ]
},
"stream" : false,
"tools" : [ ]
}
2025-11-25T22:43:43.751+08:00 INFO 21096 --- [nio-8080-exec-1] d.l.http.client.log.LoggingHttpClient : HTTP response:
- status code: 200
- headers: [Content-Type: application/json; charset=utf-8], [Date: Tue, 25 Nov 2025 14:43:43 GMT], [Transfer-Encoding: chunked]
- body: {"model":"qwen3:0.6b","created_at":"2025-11-25T14:43:43.7442518Z","message":{"role":"assistant","content":"柳岩这个名字听起来很有诗意,可能寓意着柔美、坚韧或自然之美。如果名字本身有美感,可能让人觉得漂亮;但如果更多是自然元素的象征,也可以理解为美丽。如果你是在询问关于名字的个人感受或对柳树的欣赏,我可以进一步解释。需要我帮你分析名字的含义或自然景观的特点吗?","thinking":"好的,用户问"柳岩漂亮吗",首先需要明确"柳岩"指的是什么。可能有两种情况:一种是柳岩这个人的名字,另一种可能是柳岩这个事物,比如柳树或者柳树相关的产物。\n\n首先,如果用户指的是柳岩这个人的名字,那么需要考虑名字的含义。柳树在中文里通常象征着柔美、坚韧和生命力,所以"柳岩"这个名字听起来可能比较有诗意,但需要结合具体背景来判断是否漂亮。如果名字本身有美感,可能用户觉得漂亮,但也要注意是否有其他因素影响。\n\n另一方面,如果用户指的是柳树或其他柳树相关的产物,比如柳树的品种或产物,可能需要从自然景观的角度来回答。不过这种情况下,回答可能更偏向自然景观,而不是个人评价。\n\n另外,用户的问题可能隐含着对名字的欣赏,或者对柳树的赞美。这时候需要结合名字的寓意来回应,同时保持回答的开放性,让用户有进一步探讨的空间。\n\n还需要考虑用户可能的深层需求,比如他们是否在寻找关于名字的建议,或者对自然景观的兴趣。因此,回答时应保持友好,并提供相关信息,同时鼓励进一步交流。\n\n最后,确保回答简洁明了,结构清晰,信息准确。\n"},"done":true,"done_reason":"stop","total_duration":12110146100,"load_duration":432402900,"prompt_eval_count":14,"prompt_eval_duration":33194400,"eval_count":342,"eval_duration":11596608800}
langchain4j + OpenAI


