springboot 与 ollama集成
时间: 2025-01-03 13:21:45 浏览: 32
### Spring Boot 集成 Ollama 示例教程
#### 项目准备
为了实现Spring Boot与Ollama的集成,首先需要创建一个新的Spring Boot项目或使用现有的项目。确保项目的构建工具配置文件(如Maven的`pom.xml`)中引入了必要的依赖项。
```xml
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
```
此依赖使得应用程序能够轻松连接至本地部署的Ollama服务[^3]。
#### 应用程序属性设置
接着,在`application.yml`或`application.properties`文件内定义Ollama的相关参数:
对于YAML格式:
```yaml
spring:
ai:
ollama:
base-url: http://localhost:11434 # 这里填写实际安装后的Ollama服务器URL
chat:
model: llava:7b # 使用的具体模型名
```
通过上述配置,Spring Boot应用就可以知道去哪里寻找Ollama的服务以及要调用哪个特定的大规模语言模型来处理请求。
#### 编写控制器逻辑
下面展示了一个简单的RESTful API端点例子,它接收一段文字输入并通过Ollama生成相应的响应:
```java
@RestController
@RequestMapping("/api/ollama")
public class OllamaController {
@Autowired
private OllamaService ollamaService;
@PostMapping("/generate")
public ResponseEntity<String> generateText(@RequestBody String input){
try {
String result = ollamaService.generate(input);
return new ResponseEntity<>(result, HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getMessage());
return new ResponseEntity<>("Error occurred", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
```
这里假设存在名为`OllamaService`的服务类负责封装同Ollama交互的具体细节[^2]。
#### 创建服务层接口和服务实现
继续完善之前提到的服务组件,编写具体的业务逻辑以完成对Ollama API的实际调用操作。
```java
@Service
public class OllamaServiceImpl implements OllamaService {
@Value("${spring.ai.ollama.base-url}")
private String baseUrl;
@Value("${spring.ai.ollama.chat.model}")
private String modelName;
@Override
public String generate(String prompt) throws Exception{
RestTemplate restTemplate = new RestTemplate();
Map<String, Object> requestBody = new HashMap<>();
requestBody.put("prompt", prompt);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Map<String,Object>> requestEntity =
new HttpEntity<>(requestBody,headers);
ResponseEntity<String> responseEntity = restTemplate.postForEntity(
baseUrl + "/v1/chat/completions",
requestEntity,
String.class
);
if(responseEntity.getStatusCode() == HttpStatus.OK){
JSONObject jsonResponse = new JSONObject(responseEntity.getBody());
JSONArray choicesArray = jsonResponse.getJSONArray("choices");
JSONObject choiceObject = choicesArray.getJSONObject(0);
return choiceObject.getString("text").trim();
}
throw new RuntimeException("Failed to get a valid response from the server.");
}
}
```
这段代码展示了如何利用Java中的HTTP客户端库发送POST请求给Ollama,并解析返回的结果数据。
阅读全文