LangChain4j
LangChain4j官网
star很多,文档齐全,在AI服务中,提供了丰富的功能,示例代码丰富。
简介
是一个功能丰富、易于使用的Java AI开发框架,特别适合需要快速集成和使用大型语言模型的Java开发者。
项目特点
- 多语言模型支持:
○ 支持多种大语言模型(LLM),包括OpenAI、Anthropic、Cohere等。
○ 提供了统一的API接口,使得切换不同的语言模型变得简单。 - 丰富的功能:
○ LLM访问:轻松调用不同的语言模型进行文本生成、对话等任务。
○ Prompt定义:提供了灵活的Prompt定义方式,支持动态生成和模板化。
○ Function Calling:支持调用外部函数,将AI模型与其他服务集成。
○ 记忆(Memory):支持会话记忆,保持对话上下文的连贯性。
○ Embedding:提供了文本嵌入功能,支持向量化表示。
○ Vector Store:支持向量存储,便于相似性搜索和推荐系统。 - 简洁的API设计:
○ 通过简洁的API设计,使得开发者可以快速上手,减少学习成本。
○ 示例代码简单明了,易于理解和使用。 - 框架集成:
○ 可以与Spring Boot等主流Java框架无缝集成,方便在现有项目中引入AI功能。
○ 提供了Spring Boot Starter,使得配置和使用更加方便。 - 社区和支持:
○ 文档:提供了详细的文档和示例代码,帮助开发者快速上手。
○ 社区:有活跃的社区和论坛,开发者可以在这里交流经验和解决问题。
○ 贡献:欢迎开发者贡献代码和提出改进建议,共同推动项目的持续发展。
应用场景
● 聊天机器人:构建能够进行自然对话的聊天机器人。
● 文本生成:生成文章、摘要、报告等文本内容。
● 情感分析:分析文本的情感倾向,用于市场调研和用户反馈分析。
● 翻译:提供多语言翻译功能。
● 推荐系统:基于用户行为和偏好,提供个性化推荐。
对Chians的理解不同
官方文档中表示:Chains 的概念源自 Python 的 LangChain(在引入 LCEL 之前)。其理念是Chain为每种常见用例(如聊天机器人、RAG 等)都提供一个 Chains。Chains 结合了多个低级组件并协调它们之间的交互。Chains 的主要问题是,如果您需要自定义某些内容,它们会过于死板。LangChain4j 仅实现了两个 Chains(ConversationalChain和ConversationalRetrievalChain),我们目前不打算添加更多 Chains。
提出了另一种解决方案,称为 AI Services,专为 Java 量身定制。 其理念是将与 LLM 和其他组件交互的复杂性隐藏在简单的 API 背后。
这种方法与 Spring Data JPA 或 Retrofit 非常相似:您声明性地定义具有所需 API 的接口,而 LangChain4j 提供实现此接口的对象(代理)。您可以将 AI Service 视为应用程序中服务层的一个组件。它提供AI服务。因此得名。
AI 服务处理最常见的操作:
● 格式化 LLM 的输入
● 解析 LLM 的输出
它们还支持更多高级功能:
● 聊天记忆
● 工具
AI 服务可用于构建有状态的聊天机器人,以促进来回交互,以及自动化隔离对 LLM 的每个调用的流程。
https://docs.langchain4j.dev/tutorials/ai-services#ai-services-1
springboot集成
Spring Boot应用程序
LangChain4j Spring Boot starter 大大简化了在 Spring Boot 应用程序中使用 AI 服务。
示例代码丰富。
Spring AI
Spring AI官网
Spring AI是2024年3月1日推出的,目前只有1.0.0版本。star4.9k,springboot版本要求3.2以上,jdk17及以上
版本更新不快,我6月份使用最新是0.8.1版本。
简介
《Spring AI》是Spring框架家族中的一个新成员,专门用于简化人工智能(AI)应用的开发。它借鉴了Spring框架的核心设计理念,提供了一个强大且灵活的平台,使得开发者可以更轻松地集成和使用各种AI服务和模型。以下是关于《Spring AI》的详细介绍,包括其特点、功能、应用场景和使用方法。
关键特点
- 强大的生态系统:
○ Spring 生态:《Spring AI》继承了Spring框架的强大生态系统,可以与Spring Boot、Spring Data、Spring Security等其他Spring项目无缝集成。
○ 丰富的扩展:提供了大量的扩展和模块,支持多种AI服务和模型。 - 低门槛:
○ 简单的API:提供了简洁易用的API,使得开发者可以快速上手,减少学习成本。
○ 开箱即用:通过Spring Boot Starter,可以快速集成到现有的Spring项目中。 - 多语言模型支持:
○ 多种模型:支持多种大型语言模型(LLM),包括OpenAI的GPT系列、Anthropic的Claude、阿里云的Qwen等。
○ 统一接口:提供了统一的API接口,使得切换不同的语言模型变得简单。 - 丰富的功能:
○ LLM访问:轻松调用不同的语言模型进行文本生成、对话等任务。
○ Prompt定义:提供了灵活的Prompt定义方式,支持动态生成和模板化。
○ Function Calling:支持调用外部函数,将AI模型与其他服务集成。
○ 记忆(Memory):支持会话记忆,保持对话上下文的连贯性。
○ Embedding:提供了文本嵌入功能,支持向量化表示。
○ Vector Store:支持向量存储,便于相似性搜索和推荐系统。 - 反应式编程支持:
○ 反应式编程:支持反应式编程模型,可以构建高并发、低延迟的应用。
○ 非阻塞 I/O:使用非阻塞 I/O 操作,提高应用的响应能力和吞吐量。 - 安全性:
○ Spring Security:可以与Spring Security集成,提供强大的安全保护机制。
○ API密钥管理:支持API密钥的安全管理和使用。
应用场景
● 聊天机器人:构建能够进行自然对话的聊天机器人。
● 文本生成:生成文章、摘要、报告等文本内容。
● 情感分析:分析文本的情感倾向,用于市场调研和用户反馈分析。
● 翻译:提供多语言翻译功能。
● 推荐系统:基于用户行为和偏好,提供个性化推荐。
● 图像识别:支持图像识别和处理,适用于视觉相关的AI应用。
Agent-Flex
Agent-Flex官网
最近刚刚出炉的一个Java开发的AI应用框架,目前star不多才200+,可以看后续发展
简介
Agents-Flex 是一个 Java 开发的 AI 应用开发框架,是为了简化 AI 应用开发而生。 其灵感来源 LangChain、 LlamaIndex 以及作者作为一线 AI 应用开发工程师的最佳实践,提供了跨 AI 服务商的、可移植的、可编排、不限 Java 开发框架的 API 支持。
Agents-Flex 适用于聊天、图像生成、Embedding 模型、Function Calling 以及 RAG 应用、智能体编排等场景,支持同步以及流式(Stream)的 API 选择。
Agents-Flex 和其他框架对比
1、更具有普适性
相比 Spring-AI、LangChain4j 而言,Agents-Flex 更具有普适性。
- Spring-AI 要求的 JDK 版本必须是 JDK 17+,而 Agents-Flex 只需要 JDK 8+。
- Spring-AI 要求必须在 Spring 框架下使用,而 Agents-Flex 支持与任何的 JAVA 框架搭配使用,并提供了 spring-boot-starter 的支持。
- Spring-AI、LangChain4j 普遍不支持国内的大模型、Embedding 模型以及向量数据库,而 Agents-Flex 对国产服务支持友好。
2、更简易的 API 设计
使用 Agents-Flex 两行代码即可实现聊天功能
2、更强大的智能体编排
一个强大的 AI 应用,往往是需要灵活的编排能力来完成的, 相比 Agents-Flex 而言,Spring-AI、LangChain4j几乎没有编排的能力。
Chain(执行链) 编排
在 Agents-Flex 中,内置了 3 种不同的 Agents 执行链,他们分别是:
● SequentialChain:顺序执行链
● ParallelChain:并发(并行)执行链
● LoopChain:循环执行连
而以上 3 种执行链中,每个又可以作为其他执行链的子链进行执行,从而形成强大而复杂的 Agents 执行链条。
核心模块
LLMs大语言模型
Memory记忆
Embedding嵌入
Store存储
Document文档
Agent智能体
Chain执行链
结论
Java端的AI能力主要是在2024年出现的,出现的过程中吸收了之前大量AI相关开源框架的设计经验与考虑了它们应用上的弊端。
能力方面基本满足,但迭代更新频率不快。虽然文档丰富,但使用的人相对于python这几个流行框架来说还是太少。
后续会重点关注上面三个框架发展,从目前来看LangChain4j的能力方面更强,文档更丰富、使用人群更多。