基础设施搭建
基于docker搭建最小可用deepseek实例
services:
ollama:
image: ollama/ollama:latest # Ollama 官方镜像(示例名称,请替换为实际镜像)
container_name: ollama
restart: always
environment:
# 如果 Ollama API 支持通过环境变量配置端口/授权,可在这里设置
OLLAMA_API_PORT: 11434
ports:
- "11434:11434" # 映射 Ollama API 端口
volumes:
- ./ollama_data:/root/.ollama
获取模型, 可以根据具体机器配置,选择适合的模型.
ollama pull deepseek-r1:1.5b
测试是否可用:
curl -X POST --location "http://10.167.69.123:11434/api/generate" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-r1:32b",
"prompt": "1+1",
"stream": false
}'
spring 工程搭建
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<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>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.44.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
关键配置: OllamaConfig.java
@Configuration
public class OllamaConfig {
@Value("${spring.ai.ollama.base-url}")
private String host;
@Bean
public OllamaApi getOllamaApi() {
return new OllamaApi(host);
}
@Bean
public OllamaChatClient getOllamaChatClient() {
return new OllamaChatClient(getOllamaApi());
}
}
接口定义: OllamaWeb.java
@RequiredArgsConstructor
@RequestMapping("/api/v1/ollama/")
@RestController
public class OllamaWeb {
private final OllamaChatClient ollamaChatClient;
@GetMapping("/generate")
public ChatResponse generate(@RequestParam String model,
@RequestParam String message) {
return ollamaChatClient.call(new Prompt(message, OllamaOptions.create().withModel(model)));
}
@GetMapping("/generate_stream")
public Flux<ChatResponse> generateStream(@RequestParam String model,
@RequestParam String message) {
return ollamaChatClient.stream(new Prompt(message, OllamaOptions.create().withModel(model)));
}
}
测试API调用
###
# @no-log
# @name api/v1/ollama/generate
GET http://127.0.0.1:8090/api/v1/ollama/generate?model=deepseek-r1:32b&message=hi
###
# @no-log
# @name api/v1/ollama/generate_stream
GET http://127.0.0.1:8090/api/v1/ollama/generate_stream?model=deepseek-r1:32b&message=hi
文档信息
- 本文作者:JiliangLee
- 本文链接:https://leejiliang.cn/2025/08/25/RAG-Series-2/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)