快速入门Spring Cloud Alibaba AI,搭建大模型,快速上手大模型(付源码)

老哥不老 2024-07-18 08:31:01 阅读 99

简介

Spring AI 是 Spring 官方社区项目,旨在简化 Java AI 应用程序开发,让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用。

Spring Cloud Alibaba AI 以 Spring AI 为基础,并在此基础上提供阿里云通义系列大模型全面适配,让用户在 5 分钟内开发基于通义大模型的 Java AI 应用。

快速搭建

jdk以17为基准

整体的项目结构如下,所有的资源来源于阿里云官网,教程来自https://sca.aliyun.com/docs/2023/user-guide/ai/quick-start/

代码来源于https://github.com/alibaba/spring-cloud-alibaba/tree/2023.x/spring-cloud-alibaba-examples/ai-example/spring-cloud-ai-example

在这里插入图片描述

引入依赖

文章以Maven项目为测试用例,首先在pom.xml中引入依赖。

<code><dependencyManagement>

<dependencies>

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-alibaba-dependencies</artifactId>

<version>2023.0.1.0</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

<dependencies>

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-ai</artifactId>

</dependency>

</dependencies>

申请api-key

api-key的申请需要前往阿里云官网,点击跳转

然后application.yml配置文件中加入api-key

spring:

cloud:

ai:

tongyi:

api-key: sk-69******** #这里的api-key需要去阿里云官网申请

申请好之后替换application.yml的api-key

代码部分

代码部分分为controller层、service层、serviceImpl层和Model层

controller层

controller层还有一个类,用于对外提供接口

@RestController

@RequestMapping("/ai")

@CrossOrigin

public class TongYiController {

@Autowired

@Qualifier("tongYiSimpleServiceImpl")

private TongYiService tongYiSimpleService;

@GetMapping("/example")

public String completion(

@RequestParam(value = "message", defaultValue = "Tell me a joke")

String message

) {

return tongYiSimpleService.completion(message);

}

}

service层

service层用于对controller提供服务

public interface TongYiService {

/**

* Hello World example.

*

* @param message conversation content question.

* @return AI answer.

*/

String completion(String message);

}

serviceImpl层

serviceImpl层是对service的实现,包括AbstractTongYiServiceImplTongYiSimpleServiceImpl

AbstractTongYiServiceImpl

public abstract class AbstractTongYiServiceImpl implements TongYiService {

private static final String INFO_PREFIX = "please implement ";

private static final String INFO_SUFFIX = "() method.";

@Override

public String completion(String message) {

throw new RuntimeException(INFO_PREFIX + Thread.currentThread().getStackTrace()[2].getMethodName());

}

}

TongYiSimpleServiceImpl

@Service

@Slf4j

public class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl {

private final ChatClient chatClient;

private final StreamingChatClient streamingChatClient;

@Autowired

public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {

this.chatClient = chatClient;

this.streamingChatClient = streamingChatClient;

}

}

model层

ActorsFilms

public class ActorsFilms {

private String actor;

private List<String> movies;

public ActorsFilms() { }

public String getActor() { return actor;}

public void setActor(String actor) { this.actor = actor;}

public List<String> getMovies() { return movies;}

public void setMovies(List<String> movies) { this.movies = movies;}

@Override

public String toString() {

return "ActorsFilms{" + "actor='" + actor + '\'' + ", movies=" + movies + '}';

}

}

Completion

public class Completion {

private final String completion;

public Completion(String completion) { this.completion = completion;}

public String getCompletion() { return completion;}

}

运行测试

api访问方式

http://localhost:8080/ai/example?message=西瓜

可以放在浏览器或者api接口测试工具

在这里插入图片描述

页面访问

http://localhost:8080/index.html

配置好之后即可运行,其中阿里云github官网里面有前端页面资源,即resource里面的static静态资源,想要的可以直接去github代码地址里拷贝

在这里插入图片描述

仅拷贝static资源的步骤:

在当前页面点击键盘上的逗号,这样就会跳转到github内嵌的vscode然后在想要的资源上右击下载即可下载到本地,然后将其放在项目的resource资源文件下static

在这里插入图片描述

用此方法可以通过页面进行访问,即访问刚才从github下载的static静态资源的页面,将链接放在浏览器就到了下面的页面

在这里插入图片描述

总结

最实质的就是在本地提供了后端的自定义api接口,开发人员可以利用这个进行个性化开发,即真实的体验ai大模型接入自己的应用中。

想要了解更多,最直观的是直接查看github中的源码或者直接访问阿里云官网,其中还提供了图片模型、Llama3大语言模型等,有些的开源的,可以免费玩,上手也简单。

源码地址

源码地址:https://github.com/luooin/SpringCloudAi

计算机类毕设项目合集点击跳转


在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。