我尝试了一下Spring AI框架
我尝试了一下Spring AI框架。
参加某个研讨会时,我发现有使用 Spring 和 Azure Open AI 的样例,但通过查看源代码,发现 Spring Framework 本身也在逐渐支持 Open AI,于是我尝试着使用了一下。
我认为这是关于Spring AI :: Spring AI Reference周边的讨论。
请注意,由于实验性功能可能会在未来发生变化,请留意。
准备事项
按照步骤,使用Spring CLI进行准备工作,首先要设置Spring CLI。
请按照以下步骤,使用git clone进行构建。
git clone https://github.com/spring-projects-experimental/spring-cli $HOME/temp/spring-cli
cd $HOME/temp/spring-cli
./gradlew clean build -x test
下面,我给它起个别名。
alias spring='java -jar $HOME/temp/spring-cli/build/libs/spring-cli-0.0.1-SNAPSHOT.jar'
创建项目
使用Spring Boot命令新建一个名为”ai-azure”的项目,然后使用Spring Boot命令添加Azure Open AI的依赖关系。
spring boot new ai-azure
cd ai-azure
spring boot add ai-azure
在pom.xml文件中添加以下内容。如果不添加,可能找不到AI相关的库。
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
来源等
在Spring Boot中,除了添加与AI相关的库,还会添加一个名为/ai/simple的端点。aiClient会在构造函数中进行依赖注入,所以只需要使用它来调用即可,非常简单。
@GetMapping("/ai/simple")
public Completion completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return new Completion(aiClient.generate(message));
}
执行
设置以下环境变量。
export SPRING_AI_AZURE_OPENAI_API_KEY=APIキー
export SPRING_AI_AZURE_OPENAI_ENDPOINT=https://your-env.openai.azure.com/
export SPRING_AI_AZURE_OPENAI_MODEL=gpt-35-turbo
然后开始执行
mvn spring-boot:run
先试着不指定任何参数调用一下,因为默认值已经设置好了。
curl http://localhost:8080/ai/simple
{"completion":"Why don't scientists trust atoms?\n\nBecause they make up everything!"}
由于不太理解英语的笑话,所以我试试用日语来解释。
curl --get --data-urlencode 'message=ジョークを教えて' http://localhost:8080/ai/simple
我认为响应(已格式化)每次都会有所不同,但大致上会是以下的感觉。
{
"completion": "もちろんです!以下にジョークをお届けします:\n\n1. 「なぜゴリラは木から落ちないの?」\n「木の上でバナナを食べているからです!」\n\n2. 「なぜ魚はバンドを組むことができないの?」\n「スケールがないからリーダーがいないんです!」\n\n3. 「どうしてサーファーはバナナを食べるの?」\n「波を食べるためです!」\n\n4. 「なぜテニスコートはきれいにならないの ?」\n「いつもラケットが上手く掃除できないんです!」\n\n5. 「なぜピアノは泣いているの?」\n「黒鍵が白鍵にいじめられてい るからです!」\n\nどうでしたか?楽しんでいただけましたでしょうか?もしご希望があれば、もっとジョークをお届けしますのでお知らせください!"
}
几乎只需几行代码就可以调用Azure Open API,这太简单了。org.springframework.ai.client.AiClient似乎有更多功能,我打算试试看。
以上