Skip to content

Commit

Permalink
Update blog
Browse files Browse the repository at this point in the history
  • Loading branch information
ReLive27 committed Apr 21, 2024
1 parent 6cd06f1 commit 9434e6f
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
14 changes: 7 additions & 7 deletions data/blog/spring-ai-ollama.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,26 +12,26 @@ Spring AI 不仅提供了与 OpenAI 进行API交互,同样支持与 Ollama 进

## Docker环境安装Ollama
1.获取Docker镜像。
```
```shell
docker pull ollama/ollama
```

2.在 Docker 容器内运行 Ollama。
```
```shell
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
```

3.现在您可以在容器内运行像 Llama 2 这样的模型。

```
```shell
docker exec -it ollama ollama run llama2
```
[更多模型可以在Ollama 库](https://ollama.ai/library)中找到。

## 创建 Spring Boot 项目

首先引入相关依赖。
```
```xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
Expand Down Expand Up @@ -61,7 +61,7 @@ docker exec -it ollama ollama run llama2

在 application.yml 中配置 Ollama 地址和使用的模型。

```
```yml
spring:
ai:
ollama:
Expand All @@ -73,7 +73,7 @@ spring:

这里我们填写一个提示来测试下,`ChatClient`将调用Ollama的API接口。

```
```java
@GetMapping("/top/fiction")
public String topCodeLanguage() {
String message = "2023最受欢迎小说是什么";
Expand All @@ -83,7 +83,7 @@ public String topCodeLanguage() {

我们稍微对上面的接口做些更改,我首先将一个路径变量放入请求,这样我们就可以将年份模板化。`PromptTemplate`旨在帮助创建结构化提示,我们通过add()方法插入动态内容,render()会渲染为最终字符串格式。

```
```java
@GetMapping("/top/fiction/{year}")
public String topCodeLanguageByYear(@PathVariable("year") Integer year) {
String message = "{year}最受欢迎小说是什么";
Expand Down
14 changes: 7 additions & 7 deletions data/blog/spring-ai.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ authors: ['default']

首先我们创建一个全新的Spring项目,引入Spring AI依赖。

```
```xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
Expand All @@ -41,9 +41,9 @@ authors: ['default']
</repositories>
```

在 application.yml 中设置OpenAI的API Key。具体如何获取可以参考[如何获取Api Key](https://chatgpt.cn.obiscr.com/blog/posts/2023/How-to-get-api-key/)
在 application.yml 中设置OpenAI的API Key。具体如何获取可以参考 [如何获取Api Key](https://chatgpt.cn.obiscr.com/blog/posts/2023/How-to-get-api-key/)

```
```yml
spring:
ai:
openai:
Expand All @@ -52,7 +52,7 @@ spring:

添加完成OpenAI API Key 我们就可以使用`ChatClient`与AI模型进行交互了,`ChatClient`简化了与各种人工智能模型的连接,针对各模型有自己的实现类。我们先看下基础用法,这里我创建一个接口,要求OpenAI生成一个答案给我,此时`ChatClient`将调用OpenAI独有的API接口向OpenAI发起请求,我们可以通过测试来看看OpenAI给我们的答案是什么吧。

```
```java
@GetMapping("/top/code/language")
public String topCodeLanguage() {
String message = "2023最受欢迎编程语言是什么";
Expand All @@ -64,7 +64,7 @@ public String topCodeLanguage() {

我们稍微对上面的接口做些更改,我首先将一个路径变量放入请求,这样我们就可以将年份模板化。`PromptTemplate`旨在帮助创建结构化提示,我们通过add()方法插入动态内容,render()会渲染为最终字符串格式。

```
```java
@GetMapping("/top/code/language/{year}")
public String topCodeLanguageByYear(@PathVariable("year") Integer year) {
String message = "{year}最受欢迎编程语言是什么";
Expand All @@ -78,7 +78,7 @@ public String topCodeLanguageByYear(@PathVariable("year") Integer year) {

也许我们不希望它返回的是一个字符串,我们希望它作为一个对象,所以让我们看看如何做到这一点。首先我们创建一个`TopLanguage`类。

```
```java
public class TopLanguage {
private Integer ranking;
private String languageName;
Expand All @@ -87,7 +87,7 @@ public class TopLanguage {
```

然后我们先创建一个输出解析器,`BeanOutputParser`是指定 Java 类转换为 JSON 模式,然后,AI 模型的 JSON 输出被反序列化为 Java 对象。同样我们通过占位符{format}插入动态内容。
```
```java
@GetMapping("/top/code/language/{year}/json")
public TopLanguage topCodeLanguageByYearForFormat(@PathVariable("year") Integer year) {
BeanOutputParser<TopLanguage> parser = new BeanOutputParser<>(TopLanguage.class);
Expand Down

0 comments on commit 9434e6f

Please sign in to comment.