V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  CodeCaster  ›  全部回复第 1 页 / 共 2 页
回复总数  34
1  2  
@kevinmatt 你说的场景,我理解其实在替换字符串的地方就是一个判断,就相当于是流程分叉了,这个场景在 FEL 中可以定义出来。

你说在你们的实践中,字符串的匹配几乎必不可少,我同意当前的看法,因为当前市面上 langgraph 出来之后告诉大家就是这么连的,然后 Eino 出来仿照 langgraph 也写了一个 go 的,langchain4j 仿照写了一个 java 的,大家都是按照这个思路在走,并没有另一个工具告诉大家可以不这么做。而 FEL ,的确是采用了另一种方法,或许这样实践一下,可能可以有不一样的写法。

当然,你提到了多 Agent 动态计划生成,靠纯响应式的确是有点困难,但是 FEL 我们不仅仅使用了响应式,我们还有一个特点就是结合了 BPM ,因为在传统响应式中是不存在条件判断关键字的,就正如上面例子中的“.condition()”关键字,这个关键字可以做到流程的分叉。

我感觉这样就可以实现你说的动态了。

其实,动态的情况正式我们下一步的规划内容。

非常感谢你的讨论提供的观点。
23 天前
回复了 CodeCaster 创建的主题 Claude Claude Pro 账户如何使用 Claude Code?
@TimePPT #3 我在看这个之前,各种重启,然后去掉了几个莫名其妙的 token ,自然就好了,我也不知道是哪一步起的作用,还是很感谢
23 天前
回复了 CodeCaster 创建的主题 Claude Claude Pro 账户如何使用 Claude Code?
@TimePPT 操作系统 Mac ,终端 Iterm2 ,选择了第一种登录方式之后,浏览器跳转登录授权,然后 iTerm2 弹出登录成功,看到登录的用户名的确是 Pro 的用户名,然后输入指令报错:

```
 API Error: 401 {"type":"error","error":{"type":"authentication_error","message":"OAuth authentication is currently not supported."},"request_id":"req_011CTajEmJNeKc3HL37Lf91d"}
```
@Isuxiz #5 我觉得你可能言重了,这篇文章本意是选择了另一种编程范式进行实现,对比一下,并没有表达谁优谁劣,只是想说是不是不同场景用不同方式会更合适。所以我没有想引战,没有想分胜负。

另外,当前的确是针对两个框架在比较,的确 Eino 是通过字符串来连接 ID 的,这个是事实而已。

我觉得讨论没有问题,但是问题上升了可能需要适可而止了。求同存异。感谢支持~
@Isuxiz 感谢你的回复!你说得对,DAG 理论上确实表达能力更强,但我想从另一个角度来看这个问题。

响应式编程本身就是一种编程范式,FEL 使用响应式流来描述。就好比面向过程什么都能写,为什么要面向对象?面向对象并不是没有存在的必要,理论上图灵完备的语言都能实现相同功能,但不同范式解决的是开发效率和代码质量问题。

从实际开发体验看:

响应式流天然支持编译时类型检查,链式调用的上下游类型必须匹配才能编译通过。而 DAG 的节点连接往往依赖字符串 ID ,类型错误要到运行时才能发现。

语法验证:

``` java
// FEL - 编译时就知道类型不匹配
flow.prompt(xxx).generate(model).reduce(stringReducer).someIntMethod() // 编译报错

// DAG - 运行时才发现节点名写错了
graph.AddEdge("node_model", "nod_log") // 拼写错误,运行时才报错
```

然后是认知的问题,我觉得大家的确都学过图,但在日常业务开发中,我们更习惯"数据流转换"的思维模式。响应式编程让代码读起来更像业务描述:"接收请求 → 处理 prompt → 调用模型 → 处理结果"。我不知道大家怎么看?

我们并不反对 DAG 设计,而是认为 **不同的工具应该匹配不同的场景**。就像 SpringMVC 的注解式编程和传统 servlet ,理论能力差不多,但开发体验天差地别。

还是非常感谢你的讨论~
@mightybruce 对于开发 AI Agent ,使用现有的各个 AI 基础框架都可以,比如 LangChain 、Eino 、SpringAI ,我们的框架也提供了一套 Java 的 AI 原语,条条大路通罗马,我们并不是说开发 AI Agent 只能用我们的,用其他优秀的框架也可以的~ 只不过,我们想提供一种新的思路,因为当前的框架构建 AI 流程的过程基本都是通过图的,我们结合了响应式的写法,从写法上不一样,只是这样而已,提供代码示例供大家参考,来讨论一下而已。
我觉得如果这样写简单,本身也是好的
26 天前
回复了 Ketteiron 创建的主题 程序员 2025 年,我对"单体 vs 微服务"的预测
@Aresxue #93 我们的代码仓库准备拆分啦,因为现在 AI 太火了,所以介绍中是提到 AI 的,AI 相关的是另外一个模块,基于 fit 框架长出来的,最近正准备写一篇文章呢。拆库就是为了把底层框架和 AI 相关的模块分离开。

最底层的框架的确是为了传统软件工程的,fit 框架的第一行代码是 19 年底诞生的,此时 AI 并没有火。

你提到了成熟的 SofaBoot 的模块化,这个的确阿里巴巴出品的非常优秀的框架呢,只不过 fit 背后的思想指导者,正是此前在阿里巴巴中的软件大拿,Sofa 最初设计的时候也是请教了我们框架的设计者的。fit 的前身已经摸索过了相关模块化的路线,最终重新出发,走了插件化的道路,插件化和模块化还是有一些区别的。打个比较简单的比方,模块化,各个模块需要组合在一起,在编译打包一次,有点像不少预制半成品,还是需要有一次简单的烧的过程的,但是插件化,各个插件已经完全烧好了,打包就像一起装盘的过程。

感谢看了一眼我们的项目~
27 天前
回复了 Ketteiron 创建的主题 程序员 2025 年,我对"单体 vs 微服务"的预测
看到上面大家对微服务和单体讨论了很多,有非常多优秀的见解。如果把微服务和单体服务看做两个极端,那么微服务的出现就是为了解决之前单体服务的一些问题的,只不过,微服务架构本身也有自身的问题,因此,我们团队此前也有思考过是否有一种模式,可以让微服务和单体服务兼而有之,于是,我们开源了一款基础框架,fit 。

fit ,其思想正如其名字一样,我们希望每一个插件,作为单体服务的时候可以运行,组合( fit )起来之后依旧可以运行。假如有 N 个插件,那么每一个插件都可以像微服务一样作为一个一个单独的进程启动,对外提供服务,也可以把这 N 个插件,聚合在一起,形成一个单独的进程,启动,就像一个单体服务一样。这个过程中,插件的代码不需要做任何改变。当然,N 个插件可以自由组合形成 M 个进程。

当他们作为微服务互相调用的时候,他们之间的通信是 RPC 调用,存在网络消耗,但是一旦转换成微服务之后,调用可以自动识别变成进程内的内存调用,没有网络开销。这个特性在我们框架中称之为聚散部署。

也就是说,通过我们的框架写出来的代码,不需要经过重构,就可以在微服务和单体之间切换,完全由开发人员在部署阶段自由选择。

我们的框架是今年初开源的,希望大家能够支持一下,如果觉得我们的框架的这个设计思路有帮助,最好帮我们点的 star ,链接: https://github.com/ModelEngine-Group/fit-framework
27 天前
回复了 Ketteiron 创建的主题 程序员 2025 年,我对"单体 vs 微服务"的预测
@ebony0319 我们团队写了一个开源框架,fit ,就是做的这个,在我们框架中,可以按照微服务的方式写一个一个的插件,插件与插件之间没有任何耦合关系,通信全部是接口,每一个插件都可以单独部署,就像微服务一样,也可以聚合在一起部署,形成一个单独的进程,就是单体架构,关键的一点是,这个从微服务到单体,或者从单体到微服务的转换过程,每一个插件是不用修改任何代码的。这个在我们框架中,叫聚散部署,欢迎来我们的开源项目参观点星,链接: https://github.com/ModelEngine-Group/fit-framework
33 天前
回复了 moverinfo 创建的主题 程序员 Open AI 的对接问题
我觉得 @lnbiuc @andyskaura 说的挺对的呀,@moverinfo 你描述调用 OpenAI 发生了 400 错误,那么根据 http 的约定,直观理解就是调用参数存在问题,那么就需要看一下调用参数是什么,你发起的 http 请求,参数可能有 query ,form ,header 等等,的确是需要看一下你的参数情况的呀,我觉得你只是说了对接 OpenAI 有问题,发生 400 错误,但是不提供调用情况,和可能的 400 错误的详细信息,却说信息很充分,这个逻辑不成立呀。

当然,你自己已经通过尝试发现是网络问题了,解决问题了就好。
@moverinfo #41 你好,我发现你的回复都没有点击平台的回复,这样的话,别人都是不知道你回复了的,是没有提示的。我是特意关注了下,找了下之前的留言,才发现你的回复的。首先感谢能够得到回复。

然后,我也很高兴你可过我的项目(因为没有回复,我不确定是不是理解有错),之所以我比较感兴趣,就是因为你的框架也有模块化的特点,但是,模块化 != 插件化。

模块化,我们当前用任意框架写的代码,比如 Spring ,我也可以创建若干个 Module (模块),然后通过一个核心模块的 pom 来组织各个其他模块,这样也是分模块的。因为我看不到你的项目的整体架构图,所以我对此只能先交流来慢慢了解。

插件化,我实现的插件化和模块化的最大区别是没有 pom 的依赖,我不确定你的框架是不是如此。插件与插件之间的交互都通过接口来实现,因此,插件的业务逻辑不随插件的部署状态而改变,意思是,在 FIT 框架下,插件 A 和插件 B 可以作为一个 Mono (单体)服务聚合启动,同进程,此时,他们的通信为本地方法通信,他们也可以分别作为两个微服务分别启动,两个进程,此时他们的通信为 RPC 通信,但是插件的代码是完全不感知的。这个就是 FIT 框架的最大特点,支持插件的聚散部署,在此基础上,我用插件写了一个热插拔的插件,使得整个体系也支持了插件的热插拔。

也就是说,FIT 框架的设计是和 Spring 有比较大的区别的,但是和你说的模块化比较接近,正因为这个原因,所以我才想和你再多交流一下。感谢

PS:我看到你的项目之后,先点了一个 Star 支持了一下了
看了 github 的项目,其中有提到模块化,方便交流一下么(方便的话,可以加一下我 wechat:jiyujie )?我这边做了一个插件化的开发框架( https://github.com/ModelEngine-Group/fit-framework ),上层搭载 AI 框架,同在推广求 star 中,感觉可以交流一下技术,感谢
@uselesswater 生态分两块,一块是基于的底层框架,一块是支持的外部模型等。

对于一,目前样例还是基于下面的 FIT 编程框架的(同一个代码仓库,另一个目录),而 FIT 编程框架是一款插件式的编程框架(支持聚散部署),可以去集成 Spring ,也可以独立运行,目前正在做这一块与底层框架的解耦,解耦之后就可以独立运行了。

对于二,目前代码正在做一次大的重构,你如果关注我们的代码仓的话,可以发现,我们现在一直在发里程碑版本( M1 、M2 ,下面还会发一个 M3 ),正式版本版本在等这次重构之后再发( API 不变,始终是流式的),而外部模型,目前人力不太够,因此仅支持了通用的 OpenAI 格式。

至于其他细节问题,欢迎来我们的相关群组讨论,在我们代码仓 readme 中有群组地址。我们这个项目开源了差不多 3 个月吧,现在在持续社区建设中,非常需要大家的 star 和关注。https://github.com/ModelEngine-Group/fit-framework
@yibo2018 你好,首先,我们这两天在紧急将 MCP 支持到框架中来,因为原计划社区路标是 6 月份做的,但是现在看优先级需要不断提升。其次,分析一下你的诉求:

1. “客户的自然语言需求,进行 ai 解析成 json”:标准的通过提示词访问大模型获取你要求的结果的过程,直接通过调用提示词模板,然后调用大模型即可;
2. “结合私有知识库”:代码仓库的知识库检索的例子有,当前恰好发现了一个内部 bug ,导致该例子启动失败了,正在修复中,待社区修复的 PR 合入之后,就可以正常检索;
3. “mcp (高德)”:正如上面所说,MCP 正在作为 feature ,最近紧急添加到下一个版本中,这么火的概念,一定会支持;
4. “rag ”:这个在我们的最后一个例子中有,是可以正常运行的,功能齐备。

综上,从功能点上来看,社区正在做一些演进,修复核心问题和增加 MCP 后,理论就可以支持你的诉求了。

但是,你提到了“ai 可以自动进行这几个步骤,而不是被编程”,这样的解决方案一般更趋近于“Manus”的解决方案,即“动态思维链”,是一个 Agent 级别的解决方案,我们的框架是类似 LangChain 的相对底层的 AI 编程框架,可以通过编程的手段来实现一个类似“Manus”的应用,但是直接达到你说的“不编程”,是做不到的。就好比,使用 LangChain 也需要通过一定的编程来做到。

话说回来,我们的项目群( https://github.com/ModelEngine-Group )中还有一个低代码编排 AI 应用的项目,暂时可以静态编排来完成你的诉求,代码量也不多,可以关注一下( https://github.com/ModelEngine-Group/app-platform )。而动态编排,这个属于社区的路标,需要未来演进。

感谢关注,希望可以点个 Star~有更多问题,可以在代码仓 readme 中找到项目群,进群咨询。
174 天前
回复了 gulao 创建的主题 程序员 GitHub 开源项目提 PR,求推荐!
我们团队今年年初开源了一款 Java 的编程框架,支持聚散部署(微服务和单体应用的无缝切换),有兴趣可以来看看,项目地址: https://github.com/ModelEngine-Group/fit-framework

就算是来改改文档,修修错别字也欢迎!

这个项目里面还包含了一款类似于 LangChain 的 AI 框架,FEL ,欢迎探索。

项目群中还有一个类似 Dify 的 AI 编排框架,项目地址是: https://github.com/ModelEngine-Group/app-platform

也欢迎来关注,各种修改,再小都是帮助!
我们团队搞了高代码的 AI 编程框架( https://github.com/ModelEngine-Group/fit-framework )和低代码的 AI 框架( https://github.com/ModelEngine-Group/app-platform ),才开源没有多久,欢迎尝试,然后也弄了一个简单的官网( http://modelengine-ai.net/),里面有下载部署安装指南。

希望能帮忙 Star 一下,感谢~
我会每次问大模型问题时,最后带一个“谢谢”,希望他以后记得,有一个小碳基还是很有礼貌的。
225 天前
回复了 Joker123456789 创建的主题 Java 微服务是不是一种错误的方向?
看完这个问题以及上面所有的讨论,我想提出一种全新的思路,大家可以一起讨论下。

首先,在微服务出现以前,大多数服务是以单体应用的形式存在的,后续由于各种原因(项目变大,需求变多等等)演变为微服务。单体应用有单体应用的优点与缺点,微服务也有微服务的优点和缺点。这两种模式的争论其实一直存在,正如 @micean 说的,“从一个极端到另一个极端”,这句话一点不错。我觉得其实是有解决方案的,是不是可以在这两个“极端”中找一个平衡点呢?

记得 2023 年的时候,google 开源了一款软件,叫 service weaver ,他有一个口号,“以单体形式编码,以微服务形式部署”,他的这个思路非常新颖,主要想告诉大家的一点就是,编码的时候可以按照一个模块一个模块来开发,互相没有耦合,但是最终部署的时候可以选择是单体应用一起部署,或者是微服务分开部署。

其实,我们团队在这之前也一直在做这方面的探索,但是一直没有开源,直到 2025 年春节前,我们的项目也开源了,我们以 Java 为主,推出了一套插件化的开发框架,每一个模块都可以以插件进行开发,插件之间互相不感知,但是我们参考 OSGI 的思想(@ioufev ),做到了插件可以聚合成一个进程部署(单体应用形态),或者分开部署(微服务形态)。

如果做到了这一步,是不是可以解决楼主的问题呢?其实微服务并不是一个错误的方向,而是在技术的螺旋式上升演进过程中的一个关键点。

以下是我在知乎上回答的类似问题的回答: https://www.zhihu.com/question/11654944781/answer/96580243167
这个是我们这个插件化框架的社区地址: https://github.com/ModelEngine-Group/fit-framework

我们项目刚开源不久,欢迎来讨论单体应用和微服务之间的相关问题,如果有同学们喜欢,也可以给我们点个 Star ,鼓励一下我们,感谢~
个人备案也需要一点时间,最近刚好在备案,看了看流程,流程理论上来说也不复杂,就是费时,注册完域名,需要邮箱实名(这步很快,阿里云上 20min 搞定了),然后是个人实名(这步稍微慢一点,但也是小时级完成的),接下来的步骤稍微麻烦一点,首先,个人实名之后,这个实名信息会发送给管理局,但是管理局不清楚周末上不上班,反正就是等待 3 个工作日再往下做成功率最高,等了 3 个工作日之后,需要在云上购买一个 ECS ,时间至少需要满 90 天(不清楚是不是所有云都是这个要求,但是云厂商肯定还是希望购买他们服务的,记住,这个是 90 天不是月,比如 2 月购买的机器,买一个月就没有 30 天,我就是前几天买的,买完真心疼),然后弄个弹性公网 ip 就可以正式备案了,备案说的是 1-20 个工作日吧,就是等。

我也是最近在搞开源社区推广,要弄一个域名,才想到的备案,才正好研究了下这个流程,楼主要是觉得有用可以点我个人信息给我项目加个 star 哈~
1  2  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1488 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 16:39 · PVG 00:39 · LAX 09:39 · JFK 12:39
♥ Do have faith in what you're doing.