哒哒哒,他来了! 今天我们要介绍一种新型的 Java 响应式大模型编程范式 —— FEL。你可能听说过 langchain,那么你暂且可以把 FEL 看作是 Java 版本的 langchain。 话不多说,今天我们就从接入当前热门的 DeepSeek 开始,带大家认识一下 FEL。通过 FEL,你可以轻松实现大模型应用的编排和运行,开启智能编程的新篇章!

️ 快速上手:轻松接入 DeepSeek

1. 准备环境

首先,进入老生常谈的环节 —— 准备环境。进入 FIT-Framework 项目地址,下载项目代码。根据入门指南,你可以快速部署 FIT 环境,并参考 FEL 的指导手册,掌握 FEL 模块的强大功能。FEL 模块不仅支持 DeepSeek 的接入,还能支持任何符合 OpenAI API 标准的大模型。此外,它还提供了丰富的工具和大模型操作原语,帮助你快速构建智能应用。️

以下示例地址为 FEL 示例:01-model,你可以通过该代码快速上手。具体细节可以参考 FEL 指导手册:聊天模型使用。

2. 启动运行

关键代码

这里我们使用 FEL 最基础的大模型接入能力来接入 DeepSeek。通过 ChatModel 的默认实现,你可以指定大模型进行调用。这里展示下示例中关于普通调用和流式调用的关键代码。

普通调用:

public ChatMessage chat(@RequestParam("query") String query) {
ChatOption option = ChatOption.custom().model(this.modelName).stream(false).build();
return this.chatModel.generate(ChatMessages.from(new HumanMessage(query)), option).first().block().get();
}

流式调用:

public Choir<ChatMessage> chatStream(@RequestParam("query") String query) {
ChatOption option = ChatOption.custom().model(this.modelName).stream(true).build();
return this.chatModel.generate(ChatMessages.from(new HumanMessage(query)), option);
}
  1. ChatOption 中指定要调用的大模型名称和是否流式返回的标识(设置为 true 则表示是通过流式方式获取结果)。
  2. 然后调用 generate 方法开始一次调用。返回的结果是一个响应式流对象,可以通过它来获取执行结果。
  3. 至此,一个简单的接入代码就写完了!

配置 DeepSeek

在示例的配置文件 resources/application.yml 中,配置你的 DeepSeek API 密钥、API 地址以及模型名称。示例配置如下:

这里大家可以使用硅基流动平台,上面有一定的免费额度可供大家使用,注册账号后创建API密钥。这里的配置示例中配置的就是其平台的信息,其中将api-key替换为你创建的API密钥即可。

fel:
openai:
api-base: 'https://api.siliconflow.cn/v1'
api-key: 'your-api-key'
example:
model: 'deepseek-ai/DeepSeek-R1'

启动程序

  1. 配置完成后,就可以启动你的应用程序啦。这里可以通过 IDEA 直接启动 DemeApplication
  2. 当控制台看到如下信息时,则表明你已经启动成功。
Start netty http server successfully.

体验你的成果

普通调用

在浏览器中输入示例请求地址,例如:http://localhost:8080/ai/example/chat?query=你好,DeepSeek。你可能看到类似如下的响应:

{
"content": "<think>\n\n</think>\n\n你好!我是DeepSeek-R1,一个由深度求索公司开发的智能助手,我会尽我所能为你提供帮助。请问有什么可以为你服务的?",
"toolCalls": []
}
流式调用

在浏览器中输入示例请求地址,例如:http://localhost:8080/ai/example/chat-stream?query=你好,DeepSeek。你可能看到类似如下的响应:

data:{"content":"<think>","toolCalls":[]}

data:{"content":"\n\n","toolCalls":[]}

data:{"content":"</think>","toolCalls":[]}

data:{"content":"\n\n","toolCalls":[]}

data:{"content":"你好","toolCalls":[]}

data:{"content":"!","toolCalls":[]}

data:{"content":"我是","toolCalls":[]}

data:{"content":"Deep","toolCalls":[]}

data:{"content":"Se","toolCalls":[]}

data:{"content":"ek","toolCalls":[]}

...

FEL 框架有哪些优点?

上面这个示例还只是我们最基本的功能哦!我们还有更加炫酷的使用方式等你来探索。当然,接下来的时间里,我们会陆续编写一系列文章来让你更加了解我们。

1. 直观的编排方式

FEL 框架提供了直观的编排方式,帮助开发者轻松构建复杂的应用逻辑。无论是简单的对话系统,还是复杂的多任务处理,FEL 都能通过简洁的配置和代码,实现高效的应用编排。

比如,一个包含知识库、大模型的大模型应用编排代码可能如下:

AiProcessFlow<String, String> smartAssistantFlow = AiFlows.<String>create()
.map(query -> Tip.from("query", query)) // 将用户输入转换为内部格式
.retrieve(new DefaultVectorRetriever(vectorStore)) // 检索相关信息
.generate(new ChatFlowModel(chatModel, chatOption)) // 调用大模型生成回答
.format(new JsonOutputParser(serializer, Response.class)) // 格式化输出
.close();

2. 丰富的大模型操作原语

FEL 框架内置了丰富的大模型相关操作原语,包括:

  • RAG检索(retrieve):从海量数据中快速提取相关信息。
  • 提示词模板(prompt):通过预定义的模板,快速生成结构化的输出。
  • 大模型接入(generate):无缝接入 DeepSeek 等大模型,实现智能对话和生成。
  • 记忆(memory):支持多轮对话的记忆功能,提升用户体验。
  • Agent(delegate):通过智能体实现复杂的任务分解与执行。

这些操作原语为开发者提供了强大的整合串联能力,另外还有一些通用的流操作原语等。有了这些,就能够帮助你轻松应对各种智能应用场景啦!

3. 灵活的扩展性

FEL 框架设计灵活,我们的多种原语操作都是基于接口设计(这个也是我们 FIT 编程框架的核心思想哦),如果你有自定义的一些功能,你可以轻松集成,打造你的专属智能应用。️

未来展望:智能应用的无限可能

我们相信,FEL 框架将成为你探索智能世界的得力助手。通过不断的技术创新和优化,我们将持续拓展框架的功能,提供更加易用和丰富的操作,助力每一位开发者在智能时代中脱颖而出。

未来,FEL 框架将支持更多的大模型接入,提供更强大的编排能力,帮助你构建更加智能、高效的应用。无论是企业级解决方案,还是个人项目,FEL 都将为你提供全方位的支持。

项目地址: Github: FIT-Framework GitCode: FIT-Framework

思考题: 如果你的团队采用 FIT,你会用它解决哪些历史痛点?欢迎评论区讨论!

技术人,用代码说话,用架构思考

关注我们,探索更多「优雅解耦」的工程实践! ️

他来了,为大模型量身定制的响应式编程范式(1) —— 从接入 DeepSeek 开始吧的更多相关文章

  1. 纯CSS3大转盘抽奖(响应式、可配置)

    源于前段时候微信小程序最初火爆公测时段,把以前用 Canvas 实现的大转盘抽奖移植成微信小程序,无奈当时小程序对 Canvas 支持不够完善,只好降低用 CSS3 实现.虽然比不上 Canvas 绘 ...

  2. Paip.Php Java 异步编程。推模型与拉模型。响应式(Reactive)”编程FutureData总结... 1

    Paip.Php  Java 异步编程.推模型与拉模型.响应式(Reactive)"编程FutureData总结... 1.1.1       异步调用的实现以及角色(:调用者 提货单) F ...

  3. 无插件的大模型浏览器Autodesk Viewer开发培训-武汉-2014年8月28日 9:00 – 12:00

    武汉附近的同学们有福了,这是全球第一次关于Autodesk viewer的教室培训. :) 你可能已经在各种场合听过或看过Autodesk最新推出的大模型浏览器,这是无需插件的浏览器模型,支持几十种数 ...

  4. PowerDesigner 学习:十大模型及五大分类

    个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...

  5. PowerDesigner 15学习笔记:十大模型及五大分类

    个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...

  6. 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

    摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...

  7. 文心大模型api使用

    文心大模型api使用 首先,我们要获取硅谷社区的连个key 复制两个api备用 获取Access Token 获取access_token示例代码 之后就会输出 作文创作 作文创作:作文创作接口基于文 ...

  8. AI大模型学习了解

    # 百度文心 上线时间:2019年3月 官方介绍:https://wenxin.baidu.com/ 发布地点: 参考资料: 2600亿!全球最大中文单体模型鹏城-百度·文心发布 # 华为盘古 上线时 ...

  9. 千亿参数开源大模型 BLOOM 背后的技术

    假设你现在有了数据,也搞到了预算,一切就绪,准备开始训练一个大模型,一显身手了,"一朝看尽长安花"似乎近在眼前 -- 且慢!训练可不仅仅像这两个字的发音那么简单,看看 BLOOM ...

  10. DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍

    DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍 1. 概述 近日来,ChatGPT及类似模型引发了人工智能(AI)领域的一场风潮. 这场风潮对数字世 ...

随机推荐

  1. 零基础学习人工智能—Python—Pytorch学习(十三)

    前言 最近学习了一新概念,叫科学发现和科技发明,科学发现是高于科技发明的,而这个说法我觉得还是挺有道理的,我们总说中国的科技不如欧美,但我们实际感觉上,不论建筑,硬件还是软件,理论,我们都已经高于欧美 ...

  2. 笔记-AM的正交解调法

    1.AM的模拟调制过程 ​ AM信号是一种振幅调制信号,其携带的信息保存在其信号的振幅中,通过改变载波的振幅来实现基带数据的传输. 其函数表达式如下: \[s(t) = (A + m(t))*cos( ...

  3. git同步远程仓库的所有分支

    git clone克隆远程仓库默认是只克隆master分支,当想把远程仓库上的所有的分支都克隆下来的话,有以下几种方法. 使用远程仓库github上的LSMLIB仓库为例.该仓库在github上一共有 ...

  4. 【转载】 DirectByteBuffer内存释放

    http://www.tianshouzhi.com/api/tutorials/netty/331 我们已经知道,在网络编程中,为了避免频繁的在用户空间与内核空间拷贝数据,通常会直接从内核空间中申请 ...

  5. Python+Selenium模拟人工抓取数据

    Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fire ...

  6. Qt编写安防视频监控系统23-图片地图

    一.前言 图片地图这个模块是后面新增加进去的,主要是安防领域还有很多应用场景是一个区域比如就一个学校,提供一个学校的平面图或者鸟瞰图,然后在该地图上放置对应的摄像机,双击该摄像机图标可以查看对应的实时 ...

  7. [转]Vetur can't find `tsconfig.json` or `jsconfig.json` in d:\VueProjects\myroute.

    vue界面启动项目 visual code报错 如下图,找到 Ignore Project Warning 前边打上对勾

  8. DVWA靶场Weak Session IDs(弱会话) 漏洞所有级别通关教程及源码审计

    Weak Session IDs(弱会话) Weak Session IDs(弱会话ID)漏洞是一种安全漏洞,涉及在 web 应用程序中使用不安全或容易被猜测的会话标识符(Session IDs).会 ...

  9. c# 通过注册表判断有没有安装某个软件

    private bool checkHasInstalledSoftWare(string displayName) { Microsoft.Win32.RegistryKey uninstallNo ...

  10. 批量查找替换工具(C#)

    自己写了了个批量查找替换工具(C#),目前已知问题有查找速度不够快,假死现象等. using System; using System.Collections.Generic; using Syste ...