Java AI开发入门02-创建项目
创建新项目填写项目信息这里OpenAi 与Ollama二者选一个就行我这里选择OpenAi。项目结构依赖文件如下是pom文件因为这里没用到ollama所以把这部分引入注释掉?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion4.0.5/versionrelativePath/!-- lookup parent from repository --/parentgroupIdcom.ai/groupIdartifactIdspring-ai-demo/artifactIdversion0.0.1-SNAPSHOT/versionnamespring-ai-demo/namedescriptionspring-ai-demo/descriptionurl/licenseslicense//licensesdevelopersdeveloper//developersscmconnection/developerConnection/tag/url//scmpropertiesjava.version17/java.versionspring-ai.version2.0.0-M4/spring-ai.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-webmvc/artifactId/dependency!-- dependency--!-- groupIdorg.springframework.ai/groupId--!-- artifactIdspring-ai-starter-model-ollama/artifactId--!-- /dependency--dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-model-openai/artifactId/dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-webmvc-test/artifactIdscopetest/scope/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-bom/artifactIdversion${spring-ai.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationexcludesexcludegroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/exclude/excludes/configuration/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdexecutionsexecutioniddefault-compile/idphasecompile/phasegoalsgoalcompile/goal/goalsconfigurationannotationProcessorPathspathgroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/path/annotationProcessorPaths/configuration/executionexecutioniddefault-testCompile/idphasetest-compile/phasegoalsgoaltestCompile/goal/goalsconfigurationannotationProcessorPathspathgroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/path/annotationProcessorPaths/configuration/execution/executions/plugin/plugins/build/project配置文件server.port8066 server.servlet.context-path/spring-ai-demo spring.application.namespring-ai-demo # OpenAI API Key必填你的 OpenAI API Key可以从 OpenAI Platform 获取 spring.ai.openai.api-keyyour-api-key-here # OpenAI API ?? URL spring.ai.openai.base-urlhttps://dashscope.aliyuncs.com/compatible-mode # 模型及版本 spring.ai.openai.chat.options.modelqwen-max spring.ai.openai.chat.options.temperature0.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;RestControllerRequestMapping(/test)publicclassTestController{// 核心对象ChatClientSpring AI自动配置直接注入即可privatefinalChatClientchatClient;// 构造注入ChatClient也可用AutowiredpublicTestController(ChatClientchatClient){this.chatClientchatClient;}/** * 基础AI对话接口 * param message 用户提问默认值给我讲一个Spring相关的笑话 * return 封装AI回答的Map */RequestMapping(/chat)publicMapString,Stringchat(RequestParam(defaultValue给我讲一个Spring相关的笑话)Stringmessage){// 核心代码一行实现AI调用获取返回内容StringaiAnswerchatClient.prompt().user(message)// 设置用户提问.call()// 同步调用一次性返回结果.content();// 提取AI回答的文本内容returnMap.of(user_message,message,ai_answer,aiAnswer);}}接口调用测试