基于 Java 的 LLM 应用开发及编排框架,Agents-Flex beta.12 发布
Agents-Flex: 一个基于 Java 的 LLM(大语言模型)应用开发框架。
基本能力
- LLM 的访问能力
- Prompt、Prompt Template 定义加载的能力
- Function Calling 定义、调用和执行等能力
- 记忆的能力(Memory)
- Embedding
- Vector Store
- 文档处理
- 加载器(Loader)
- Http
- FileSystem
- 分割器(Splitter)
- 解析器(Parser)
- PoiParser
- PdfBoxParser
- 加载器(Loader)
- Agent
- LLM Agent
- IOAgent
- Chain 执行链
- SequentialChain 顺序执行链
- ParallelChain 并发(并行)执行链
- LoopChain 循环执行连
- ChainNode
- AgentNode Agent 执行节点
- EndNode 终点节点
- RouterNode 路由节点
- GroovyRouterNode Groovy 规则路由
- QLExpressRouterNode QLExpress 规则路由
- LLMRouterNode LLM 路由(由 AI 自行判断路由规则)
简单对话
使用 OpenAi 大语言模型:
@Test public void testChat() { OpenAiLlmConfig config = new OpenAiLlmConfig(); config.setApiKey("sk-rts5NF6n*******"); Llm llm = new OpenAiLlm(config); String response = llm.chat("请问你叫什么名字"); System.out.println(response); }
使用 “通义千问” 大语言模型:
@Test public void testChat() { QwenLlmConfig config = new QwenLlmConfig(); config.setApiKey("sk-28a6be3236****"); config.setModel("qwen-turbo"); Llm llm = new QwenLlm(config); String response = llm.chat("请问你叫什么名字"); System.out.println(response); }
使用 “讯飞星火” 大语言模型:
@Test public void testChat() { SparkLlmConfig config = new SparkLlmConfig(); config.setAppId("****"); config.setApiKey("****"); config.setApiSecret("****"); Llm llm = new SparkLlm(config); String response = llm.chat("请问你叫什么名字"); System.out.println(response); }
历史对话示例
public static void main(String[] args) { SparkLlmConfig config = new SparkLlmConfig(); config.setAppId("****"); config.setApiKey("****"); config.setApiSecret("****"); Llm llm = new SparkLlm(config); HistoriesPrompt prompt = new HistoriesPrompt(); System.out.println("您想问什么?"); Scanner scanner = new Scanner(System.in); String userInput = scanner.nextLine(); while (userInput != null) { prompt.addMessage(new HumanMessage(userInput)); llm.chatStream(prompt, (context, response) -> { System.out.println(">>>> " + response.getMessage().getContent()); }); userInput = scanner.nextLine(); } }
Function Calling
- 第一步:通过注解定义本地方法
public class WeatherUtil { @FunctionDef(name = "get_the_weather_info", description = "get the weather info") public static String getWeatherInfo( @FunctionParam(name = "city", description = "the city name") String name ) { //在这里,我们应该通过第三方接口调用 api 信息 return name + "的天气是阴转多云。 "; } }
- 第二步:通过 Prompt、Functions 传入给大模型,然后得到结果
public static void main(String[] args) { OpenAiLlmConfig config = new OpenAiLlmConfig(); config.setApiKey("sk-rts5NF6n*******"); OpenAiLlm llm = new OpenAiLlm(config); FunctionPrompt prompt = new FunctionPrompt("今天北京的天气怎么样", WeatherUtil.class); FunctionResultResponse response = llm.chat(prompt); Object result = response.getFunctionResult(); System.out.println(result); //"北京的天气是阴转多云。 " }
生态支持
大语言模型
大语言模型名称 | 支持情况 | 描述 |
---|---|---|
ChatGPT | ✅ 已支持 | - |
Ollama 部署模型 | ✅ 已支持 | - |
星火大模型 | ✅ 已支持 | - |
通义千问 | ✅ 已支持 | - |
智普 ChatGLM | ✅ 已支持 | - |
月之暗面 Moonshot | ✅ 已支持 | - |
扣子 Coze | ✅ 已支持 | - |
GiteeAI - Qwen2-7B-Instruct | ✅ 已支持 | - |
GiteeAI - Qwen2-72B-Instruct | ✅ 已支持 | - |
GiteeAI - Yi-1.5-34B-Chat | ✅ 已支持 | - |
GiteeAI - glm-4-9b-chat | ✅ 已支持 | - |
文心一言 | 计划中... | 期待 PR |
图片生成模型
大语言模型名称 | 支持情况 | 描述 |
---|---|---|
Openai | ✅ 已支持 | - |
Stability | ✅ 已支持 | - |
GiteeAI - stable-diffusion-3-medium | ✅ 已支持 | - |
GiteeAI - FLUX.1-schnell | ✅ 已支持 | - |
GiteeAI - stable-diffusion-xl-base-1.0 | ✅ 已支持 | - |
GiteeAI - Kolors | ✅ 已支持 | - |
更多 | 计划中... | 期待 PR |
向量化模型
大语言模型名称 | 支持情况 | 描述 |
---|---|---|
Openai | ✅ 已支持 | - |
星火大模型 | ✅ 已支持 | - |
智普 ChatGLM | ✅ 已支持 | - |
Ollama | ✅ 已支持 | - |
通义千问 | ✅ 已支持 | - |
GiteeAI - bge-small-zh-v1.5 | ✅ 已支持 | - |
GiteeAI - bge-large-zh-v1.5 | ✅ 已支持 | - |
GiteeAI - bge-m3 | ✅ 已支持 | - |
更多 | 计划中... | 期待 PR |
向量存储(向量数据库)
向量数据库名称 | 支持情况 | 描述 |
---|---|---|
Milvus | ✅ 已支持 | - |
阿里云向量数据存储服务 | ✅ 已支持 | - |
腾讯云向量数据存储服务 | ✅ 已支持 | - |
OpenSearch | ✅ 已支持 | - |
ElasticSearch | ✅ 已支持 | - |
Redis | ✅ 已支持 | - |
Chroma | 计划中... | 期待 PR |
Cassandra | 计划中... | 期待 PR |
Gemfire | 计划中... | 期待 PR |
Weaviate | 计划中... | 期待 PR |
文档解析器
向量数据库名称 | 支持情况 | 描述 |
---|---|---|
PDFBox | ✅ 已支持 | 用于解析 PDF 文档 |
POI | ✅ 已支持 | 用于解析 Word 文档 |
OmniParse | ✅ 已支持 | 更丰富的解析能力 |
更多 | 计划中... | 期待 PR |
模块构成
更新记录:
- 新增:GenerateImageRequest 添加反向提示词相关属性
- 新增:Maps 工具类添加 putOrDefault 方法
- 新增:添加 siliconFlow 的图片模型的支持
- 新增: ChatOptions 添加 "seed" 属性
- 新增:Maps 可以 put 一个子 map 的功能
- 新增:新增 Ollama 的函数调用(Function Calling)的支持
- 新增:添加 StringUtil.isJsonObject 方法
- 优化:重构 BaseImageRequest 类,添加 options 属性
- 优化:重构 ImagePrompt 使之继承于 HumanMessage
- 优化:重构 ImageResponse 类,添加 error 和 errorMessage 属性
- 优化:修改 Image.writeBytesToFile 方法为 writeToFile
- 优化:重命名 "giteesd3" 为 "gitee"
- 优化:重构 VectorData.toString 方法
- 优化:添加 DocumentStoreConfig,向量数据库的配置都实现 DocumentStoreConfig
- 优化:重构优化 HistoriesPrompt,使其支持更多的属性配置
- 优化:更新 agents-flex-bom 的 pom.xml
- 优化:升级 jedis 版本为 "5.2.0"
- 优化:重构 RedisVectorStore 的错误信息,使之错误信息更加友好
- 修复:修复 jdk17 下出现 NoSuchMethodError 问题,感谢 @songyinyin #I9AELG

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
🔥Bsin-PaaS 2.6.0 发布,一站式企业数字化低代码开发平台
项目介绍 Bsin-PaaS(毕昇) 是一套企业级的低代码、零代码去中心化应用搭建平台,可帮助企业快速搭建基于云原生的有竞争力的业务中台,智能决策中台、流程中台、企业 AI 知识库、业务前台。bsin-paas 包括微前端设计、微服务框架、服务编排、工作流引擎、安全网关及区块链引擎。该方案由区块链 (公链、联盟链) 作为技术支撑,为企业提供 daPaaS 层的一站式解决方案,助力企业打造数字经济底层技术架构,构建一套开放式和生态化的技术体系 当前版本:v2.6.0 新功能 事件模型管理 crm统一配置等级权益和条件 修复代理商登录逻辑 优化数字会员卡发卡bug
- 下一篇
🔥 Bsin-kb-agent: 基于 LLM 和 AI 编排的企业级 AI 知识库
项目介绍 Bsin-kb-agent是基于BsinPaaS开源框架和大语言模型构建的企业知识库应用,借鉴langchain的框架思想,引入langchian4j组件,微前端微服务的架构设计,可快速助您构建和体验端到端的AI知识库应用 当前版本:v1.0.0 新功能 知识库管理 文档向量化处理 ai-agent智能体管理 智能体编排能力
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6