Java AI开发入门02-创建项目
创建新项目
填写项目信息
这里OpenAi 与Ollama二者选一个就行,我这里选择OpenAi。
项目结构
依赖文件
如下是pom文件,因为这里没用到ollama所以把这部分引入注释掉
<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>4.0.5</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.ai</groupId><artifactId>spring-ai-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>spring-ai-demo</name><description>spring-ai-demo</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version><spring-ai.version>2.0.0-M4</spring-ai.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webmvc</artifactId></dependency><!-- <dependency>--><!-- <groupId>org.springframework.ai</groupId>--><!-- <artifactId>spring-ai-starter-model-ollama</artifactId>--><!-- </dependency>--><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webmvc-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>${spring-ai.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><executions><execution><id>default-compile</id><phase>compile</phase><goals><goal>compile</goal></goals><configuration><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></path></annotationProcessorPaths></configuration></execution><execution><id>default-testCompile</id><phase>test-compile</phase><goals><goal>testCompile</goal></goals><configuration><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></path></annotationProcessorPaths></configuration></execution></executions></plugin></plugins></build></project>配置文件
server.port=8066 server.servlet.context-path=/spring-ai-demo spring.application.name=spring-ai-demo # OpenAI API Key(必填):你的 OpenAI API Key,可以从 OpenAI Platform 获取 spring.ai.openai.api-key=your-api-key-here # OpenAI API ?? URL spring.ai.openai.base-url=https://dashscope.aliyuncs.com/compatible-mode # 模型及版本 spring.ai.openai.chat.options.model=qwen-max spring.ai.openai.chat.options.temperature=0.8配置客户端
packagecom.ai.config;importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.ai.openai.OpenAiChatModel;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassCommonConfiguration{@BeanpublicChatClientchatClient(OpenAiChatModelmodel){returnChatClient.builder(model).defaultSystem("你的名字叫暴龙战士,请你以暴龙战士的身份和语气回答我的问题").build();}}接口
packagecom.ai.controller;importlombok.RequiredArgsConstructor;importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.web.bind.annotation.*;importjava.util.Map;@RestController@RequestMapping("/test")publicclassTestController{// 核心对象:ChatClient,Spring AI自动配置,直接注入即可privatefinalChatClientchatClient;// 构造注入ChatClient(也可用@Autowired)publicTestController(ChatClientchatClient){this.chatClient=chatClient;}/** * 基础AI对话接口 * @param message 用户提问,默认值:给我讲一个Spring相关的笑话 * @return 封装AI回答的Map */@RequestMapping("/chat")publicMap<String,String>chat(@RequestParam(defaultValue="给我讲一个Spring相关的笑话")Stringmessage){// 核心代码:一行实现AI调用,获取返回内容StringaiAnswer=chatClient.prompt().user(message)// 设置用户提问.call()// 同步调用,一次性返回结果.content();// 提取AI回答的文本内容returnMap.of("user_message",message,"ai_answer",aiAnswer);}}