一文读懂:SpringAI – Java 开发的AI智能新利器

本文旨在快速介绍如何通过Spring AI让Java项目接入大模型,从而为你的业务增添AI能力。我们将引导您完成从环境准备到代码实现的全过程。通过代码展示如何创建一个简单的聊天应用,提供智能对话支持。

本例使用spring ai + alibaba QWen千问 api 完成,你可以跑通以后换自己的实现。

QWen 目前 有100万免费Token额度,可以快速实现需求。同时,因为qwen 也是一个开源的模型,我们可以自己搭建模型来实现免费使用

在过去,Java 缺乏一个优秀的AI应用框架,这使得开发人员在构建AI应用程序时面临着较大的挑战。Spring AI 是一个专为AI工程设计的应用框架。它将Spring生态系统的设计原则,例如可移植性和模块化设计,引入到AI领域。通过这种方式,Spring AI 使得使用POJOs作为构建块成为可能。其核心优势在于提供了一套统一的接口,这意味着开发者只需编写一次代码,并通过更改配置即可轻松切换不同的AI服务提供商。此外,由于该框架与现有的Spring生态和Java面向对象编程完美兼容,因此极大减少了程序员在对接不同AI供应商时查阅文档的工作量。

能力名字:模型 Model一句话说明:Spring AI提供了一种统一的接口来接入各种AI模型,使得开发者能够轻松地在不同AI供应商之间切换。输入:配置信息(如API密钥、模型名称等)和请求数据(例如对话内容、图片生成描述等)。输出:根据所选模型的能力,输出可以是文本、图像、语音等形式。举例:使用阿里云通义大模型进行文本生成或文生图。

能力名字:提示 Prompt一句话说明:Prompt是与AI模型交互时传递给模型的信息,用来引导模型生成预期的结果。输入:一段文本或一组参数。输出:基于Prompt的响应,形式取决于使用的模型类型。举例:向聊天机器人发送一个问题作为Prompt,以获得相应的答案。

能力名字:提示词模板 Prompt Template一句话说明:通过定义可复用的模板,简化了Prompt的创建过程,支持动态填充内容。输入:模板字符串及需要替换的具体值。输出:格式化后的Prompt文本。举例:利用包含变量的模板来构造一个查询用户信息的Prompt,如\”请告诉我用户{id}的信息\”。

能力名字:嵌入 Embedding一句话说明:将非结构化的文本转换为数值向量表示,便于机器学习模型理解和处理。输入:原始文本。输出:对应的向量表示。举例:将一段描述转换成向量后,用于相似度计算或其他下游任务。

能力名字:结构化输出 Structured Output一句话说明:允许从AI模型中直接获取结构化数据,比如Java Bean对象,从而简化数据处理流程。输入:指定的数据结构定义。输出:符合定义的结构化数据实例。举例:让模型返回一个包含演员及其电影列表的对象。

能力名字:检索增强生成 RAG一句话说明:结合检索系统与生成模型,利用私有知识库增强回答质量。输入:查询请求及相关上下文信息。输出:基于检索结果生成的回答。举例:询问特定财务报告中的数据,并从预构建的知识库中提取相关信息作答。

能力名字:智能体 Agent一句话说明:代表一种能够执行复杂任务并通过调用外部工具扩展其功能的实体。输入:任务描述或指令。输出:完成任务所需的操作序列及其结果。举例:设计一个智能客服助手,它能自动查找订单状态并回复客户。

能力名字:函数调用 Function Calling一句话说明:允许大型语言模型根据需要调用开发者定义的功能,如数学运算、数据库查询等。输入:函数签名以及必要的参数。输出:函数执行的结果。举例:当遇到涉及日期计算的问题时,让模型调用日历相关的函数来得出正确答案。

能力名字:向量存储一句话说明:提供高效管理和查询文档向量的服务,支持多种文件类型的导入。输入:待存储的文档集合。输出:经过处理后的向量数据库索引。举例:上传一系列PDF文件至向量存储服务,以便后续快速检索相关内容。

Spring AI Alibaba 是一个针对Spring AI的实现,它基于Spring AI的API完成阿里云百炼系列云产品的大模型接入。

通过Spring AI Alibaba,开发者能够轻松开发基于阿里云通义提供的聊天、图片或语音生成AI应用。其核心优势在于提供了包括对话、文生图、文生语音、模型输出解析OutputParser、使用Prompt Template以及让AI模型接入外部数据等实用能力。

这些功能极大简化了AI应用的开发流程,减少了程序员在不同AI提供者间对接接口的工作量。

通义千问是由阿里集团推出的开源大模型服务,支持全尺寸、多模态的大规模模型。在中文开源模型领域,通义千问表现出色,在国内的思南大模型竞技场排名中名列前茅。

通义千问的核心优势在于其能力排名靠前,QWen在MMLU、TheoremQA、GPQA等客观评测指标上超越了Llama 3 70B。此外,通义千问具有良好的可访问性和合规性,在API调用时具备安全保护措施,降低了恶意攻击的风险。同时,它是最开放的模型之一,提供了全尺寸的多模态大模型开源版本,并且有100万免费token可供使用,调用API的成本较低,甚至可以免费自行构建。

对于大模型的能力评估,主要通过基准测试和人类评估两种方式进行。基准测试包括GSM-8K(数学问题解决)、MMLU(广泛学科知识测试)、TheoremQA(定理证明与逻辑推理)以及GPQA(常识理解)。而人类评估则采用竞技场模式,即由人根据偏好选择更优答案。结合这两种方法可以获得全面的大模型性能评价。

可以参考Hugging Face提供的基准测试 :

https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard

国外竞技场排行榜 :

https://lmarena.ai

或者国内的思南平台:

CompassArena https://arena.opencompass.org.cn/ 进行了解。

基于spring ai alibaba完成一个有Prompt和流flux返回的聊天API实现,允许用户输入信息然后流式返回的过程包括环境准备、依赖配置、代码编写等几个步骤。下面是详细的步骤说明:

  • JDK版本要求:确保你的开发环境使用的是JDK 17(含)以上版本。
  • Spring Boot版本要求:项目需要基于Spring Boot 3.3.x及以上版本构建。
  • 申请阿里云API Key
    • 访问阿里云百炼页面并登录您的阿里云账号。
    • 选择开通“百炼大模型推理”服务,并等待开通成功的通知短信。
    • 开通成功后再次访问该页面,点击右上角个人图标 -> API-KEY -> 创建新的API-KEY来生成一个新的Key。请妥善保存此Key。

将刚才申请到的API Key设置为环境变量,以便于在应用程序中引用:

同时,在application.properties文件中添加如下配置项以应用该API Key:

由于spring-ai-alibaba-starter可能还未正式发布至Maven中央仓库,请在项目的pom.xml文件中加入Spring官方提供的临时仓库地址:

接下来,在pom.xml中添加spring-ai-alibaba-starter以及其他必要的依赖:

创建一个REST控制器类,注入ChatClient实例,并定义处理请求的方法。这里提供了一个简单的例子,展示了如何接受用户输入并通过流的方式异步响应:

在这个示例中,我们定义了两个端点:

  • /ai/chat 接收GET请求,直接返回一次性的回复。
  • /ai/chatStream 同样接收GET请求,但通过Flux对象实现了数据流式的异步响应。

至此,您已经完成了基于Spring AI Alibaba集成通义千问模型,实现支持Prompt和流式返回聊天功能的所有必要配置及编码工作。上述过程涵盖了从基础环境搭建到实际业务逻辑实现的全流程,希望对您有所帮助。

Java如何与AI豆包结合增加开发效率

在现代软件开发领域,人工智能(AI)的兴起为程序员提供了全新的工具和解决方案。作为一款智能开发助手,AI豆包专为开发者设计,旨在帮助解决开发过程中的痛点。将AI豆包与Java开发环境相结合,不仅可以显著提升开发效率,还能降低开发成本,提高代码质量。

AI豆包是一款集代码生成、错误检测、文档生成、调试支持于一体的AI工具。它通过自然语言处理和深度学习技术,理解开发者的意图,并提供快速、准确的建议和解决方案。

  • 代码生成:通过简单的描述,AI豆包可以生成Java代码片段,从而节省开发者的编码时间。
  • 错误检测:实时分析代码,提供详细的错误原因和修复建议。
  • 文档生成:自动为代码生成注释、接口文档,方便后续维护。
  • 调试支持:智能分析调试日志,快速定位问题根源。

Java是一种被广泛应用的编程语言,具有跨平台、高性能的特点。然而,Java开发过程中往往面临代码复杂度高、调试耗时长等问题。将AI豆包集成到Java开发流程中,可以大幅度提升工作效率。

在开发过程中,开发者常常需要编写重复性较高的代码,例如DAO层代码、RESTful接口等。通过AI豆包,开发者只需输入需求描述,例如:

\”生成一个用户登录的RESTful接口,包括参数校验和异常处理。\”

AI豆包即可生成完整的Java代码模板,开发者只需进行少量修改即可直接使用。

Java开发中,编译器能够捕捉语法错误,但对于逻辑错误、性能问题的检测却显得力不从心。AI豆包可以通过语义分析和上下文理解,发现代码中的潜在问题。例如:

  • 检测未关闭的资源(如数据库连接、文件流)。
  • 提示优化代码结构,减少性能开销。
  • 提供详细的修复建议,提升代码质量。

调试是Java开发中不可避免的环节,尤其是在分布式系统或复杂逻辑中,定位问题往往需要耗费大量时间。AI豆包可以:

  • 根据错误日志,快速定位问题代码。
  • 提供类似问题的解决方案和最佳实践。
  • 自动生成测试用例,帮助验证修复结果。

文档编写是许多开发者头疼的任务,但在团队协作中又至关重要。通过AI豆包,开发者可以:

  • 自动生成方法注释,包括参数说明、返回值描述等。
  • 为接口生成符合标准的API文档。
  • 提供代码变更日志,方便团队追踪。
  1. 初创团队:人员有限的情况下,AI豆包可以帮助开发者快速实现核心功能,节省开发成本。
  2. 大规模项目:在代码审查、质量把控环节,AI豆包提供智能化支持,减少人为疏漏。
  3. 学习与培训:对于新手开发者,AI豆包可以作为导师,指导Java代码的编写和优化。

要将AI豆包集成到Java开发流程中,您只需:

  1. 在开发环境中安装AI豆包插件(支持IntelliJ IDEA、Eclipse等主流IDE)。
  2. 根据需求设置使用场景,例如启用实时错误检测或生成代码模板功能。
  3. 开始编写代码,享受AI豆包带来的高效体验。

Java开发与AI豆包的结合,是传统编程与现代智能技术的完美融合。通过这一结合,开发者可以从繁杂的重复性任务中解放出来,专注于更具创造性的工作。无论您是资深开发者还是初入门的编程爱好者,AI豆包都能成为您不可或缺的开发助手。

现在就开始体验AI豆包,开启高效开发之旅吧!

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。