的运用框架,专为整合阿里云的AI能力设计。
它通过供应统一的API抽象层来简化不同AI做事供应商之间的切换,如OpenAI、Azure及阿里云等,从而让开发者仅需修正配置即可轻松迁移代码,无需重写逻辑。
此外,该框架直接支持Flux流输出,便于与市场上主流的流式处理模型兼容。
Spring AI Alibaba还特殊优化了对阿里云通义大模型的支持,包括但不限于对话天生、图像合成等功能,并且能够利用检索增强天生(RAG)技能提升问答系统的准确性与高下文干系性。
结合Spring Boot,开拓职员可以快速构建和支配具备智能功能的运用程序。

Spring Boot:简化Spring运用开拓的高效框架

Spring Boot 是一个用于简化新 Spring 运用初始搭建以及开拓过程的框架。
它通过约定大于配置的理念,使得开拓者能够快速上手并高效地构建独立的、生产级别的基于 Spring 的运用。
Spring Boot 自动配置了大量常用设置,减少了繁琐的 XML 配置,并支持将运用直接打包为可实行 JAR 文件运行。

详细的构建步骤构建支持Prompt模板的Spring Boot后端项目

基于供应的知识内容,我们可以剖析出如何构建一个支持 Prompt 模板的流返回接口项目。
这里将按照我理解的信息中的信息来逐步实现这个需求,紧张依托于第1篇和第2篇的内容。

1. 环境准备

确保开拓环境知足以下条件:

做个英语的机械人用spring AI Alibaba 和SpringBoot

JDK版本:17或更高。
Spring Boot版本:3.3.x或以上。
2. 配置API Key

首先,在阿里云上申请通义千问的API key,并设置为环境变量或者直接在项目的配置文件中指定。

export AI_DASHSCOPE_API_KEY=您的API-KEY

或者在 application.properties 文件中添加:

spring.ai.dashscope.api-key=${AI_DASHSCOPE_API_KEY}3. 添加依赖

须要在项目中引入Spring Cloud Alibaba AI Starter依赖以及确保利用了精确的Spring Boot版本作为父依赖。
在你的pom.xml中添加如下配置:

&lt;parent&gt; <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.3.4</version> <relativePath/> <!-- lookup parent from repository --></parent><dependencies> <dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-starter</artifactId> <version>1.0.0-M2</version> </dependency> <!-- 其他依赖项 --></dependencies>

同时,不要忘却添加Spring的仓库以获取最新的快照版或里程碑版本(如果利用非正式发布的版本)。

4. 创建Controller

创建一个Controller用于处理谈天要求,并通过注入ChatClient实例与通义大模型交互。
为了符合题目哀求,我们将利用Prompt模板,并且担保GET接口支持跨域要求。

Prompt模板定义

首先,根据题目哀求定义两个提示词模板文件,分别位于src/main/resources/prompts/目录下:

correct-and-expand.st 用于纠正英文缺点并扩展用户输入后提问。

Correct the following sentence: "{input}"Then, expand on it and ask a related question in English.Controller代码

接着,在你的Spring Boot运用中创建一个新的掌握器类,比如叫ChatController,来实现上述功能。

@RestController@RequestMapping("/ai")@CrossOrigin(origins = "") // 支持跨域public class ChatController { private final ChatClient chatClient; @Value("classpath:prompts/correct-and-expand.st") Resource resource; public ChatController(ChatClient.Builder builder) { this.chatClient = builder.build(); } @GetMapping(value = "/chatStream") public Flux<String> chatSteam(@RequestParam String input) { PromptTemplate promptTemplate = new PromptTemplate(resource); Prompt prompt = promptTemplate.create(Map.of("input", input)); return chatClient.prompt(prompt) .stream().content(); }}

这段代码实现了对/ai/chatStream?input=... GET要求的支持,利用了指定的Prompt模板来处理用户输入,并将结果以Flux<String>形式返回。
这样就知足了题目的所有哀求,包括支持跨域、利用Prompt模板以及供应流式相应的能力。

5. 阐明

通过上述步骤,我们利用了Spring AI Alibaba框架简化了与阿里云通义大模型对接的过程。
通过大略的几个步骤就能搭建起一个能够纠正英文语法缺点并对用户输入进行延展性提问的做事端运用。
此做事不仅供应了流畅的用户体验(通过流式输出),而且还很好地展示了如何整合外部资源(如阿里云API)到Spring Boot运用中。

React构建实时谈天运用:对接流式数据后端构建前端

根据供应的我理解的信息,我们理解到如何构建一个基于React的前端项目来支持流式数据输出。
在这个场景下,我们的后端接口位于http://.../ai/chatSteam?input=...并且返回的是Flux<String>类型的数据流。
接下来,我将辅导您通过详细的步骤完成这一任务。

步骤 1: 创建新的 React 运用

首先,请确保您的打算机上已安装了Node.js环境。
然后按照以下命令创建一个新的React运用,并进入该目录:

npx create-react-app chat-appcd chat-app

接着安装项目所需的依赖包(只管这里可能没有特殊须要额外安装的依赖):

npm install步骤 2: 编写基本HTML文件

打开public/index.html文件,并确保其内容如下所示。
这为您的运用程序供应了一个根本构造。

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Chat App</title></head><body> <div id="root"></div></body></html>步骤 3: 设置入口点

编辑src/index.js以设置React运用的入口点。
此文件卖力渲染App组件到DOM中的#root元素。

import React from 'react';import ReactDOM from 'react-dom';import App from './App';ReactDOM.render( <React.StrictMode> <App /> </React.StrictMode>, document.getElementById('root'));步骤 4: 定义主运用组件

在src/App.js中定义你的主运用组件,它会包含一个用于显示谈天界面的子组件ChatComponent。

import React from 'react';import ChatComponent from './components/ChatComponent';function App() { return ( <div className="App"> <ChatComponent /> </div> );}export default App;步骤 5: 实现谈天组件

接下来,在src/components/ChatComponent.js中实现紧张功能,包括发送给做事器以及处理从做事器吸收到的流。

import React, { useState } from 'react';function ChatComponent() { const [input, setInput] = useState(''); const [messages, setMessages] = useState(''); const handleInputChange = (event) => { setInput(event.target.value); }; const handleSendMessage = async () => { try { // 把稳:更换URL为你实际利用的地址 const response = await fetch(`http://your-backend-url/ai/chatStream?input=${input}`); const reader = response.body.getReader(); const decoder = new TextDecoder('utf-8'); let done = false; while (!done) { const { value, done: readerDone } = await reader.read(); done = readerDone; const chunk = decoder.decode(value, { stream: true }); setMessages((prevMessages) => prevMessages + chunk); } // 添加换行符以便于区分不同的对话回合 setMessages((prevMessages) => prevMessages + '\n\n=============================\n\n'); } catch (error) { console.error('Failed to fetch', error); } }; const handleClearMessages = () => { setMessages(''); }; return ( <div> <input type="text" value={input} onChange={handleInputChange} placeholder="Enter your message" /> <button onClick={handleSendMessage}>Send</button> <button onClick={handleClearMessages}>Clear</button> <div> <h3>Messages:</h3> <pre>{messages}</pre> </div> </div> );}export default ChatComponent;

上述代码实现了输入框、发送按钮和打消历史记录按钮的功能。
当用户点击发送时,客户端向指定的后端API发送要求,并读取相应流中的数据块逐步更新页面上的列表。

运行项目

末了,启动您的前端开拓做事器查看效果:

npm start

访问 http://localhost:3000 即可看到运行中的谈天运用。

这段指南详细地先容了如何基于React创建一个大略的谈天运用程序,该程序能够与支持流式输出的后端做事进行交互。
通过这种办法,您可以快速搭建起一个具备实时通报能力的运用。