深入解析 Spring AI 系列:以OpenAI与Moonshot案例为例寻找共同点

今天,我们将重点探讨对接的业务逻辑。为了帮助大家更直观地掌握其中的规律性,我将通过对比OpenAI与《月之暗面》中的Moonshot两个案例来阐述这一点。通过这样的对比,大家可以更清晰地看到,这些对接业务的整体框架其实非常相似。换句话说,我们要做的工作只是其中的一小部分,但它同样是关键的一环。

好了,接下来我们就开始深入了解这个话题。

模型对接

我们首先需要找到关键的 model 类,所有的具体逻辑实际上都集中在这里。从这部分代码入手,我们可以对比一下两者之间的差异。通过观察,我们会发现,实际上这段代码的结构和写法几乎是固定的,遵循了一定的模式。所有的对接解析逻辑都封装在那些被折叠的部分中。如图所示:

image

OpenAI方法中的第二个参数实际上也是自适应的,主要用于其内部实现,具体细节将在后续内容中进一步讲解。需要强调的是,这个参数并非强制性的,是否使用取决于具体接口的需求和实现方式。至于流式处理,它与其他常见方法基本相似,具体实现细节可以参照以下示意图:

image

这段代码的主要目的是通过 OpenAI API 进行聊天请求,处理响应并构建最终的 ChatResponse 对象。它还包含了对工具调用的处理逻辑,允许递归调用以处理复杂的对话场景。

参数解析

可以看到方法内部还是有很多参数的,我们简单看下。

  • prompt:这个并不是我们常说的一段人设文本,而是外层Chatclient带回来的参数封装成了prompt对象而已。
  • PROVIDER_NAME:模型公司的名字,一个字符串,如:openai、ollama、moonshot等
  • CHAT_MODEL_OPERATION:一个枚举类主要用来实现接口的默认方法。通过记录一些信息帮助开发者分析和监控聊天模型的行为。
  • observationConvention:客户自定义的观测数据,这里默认为DEFAULT_OBSERVATION_CONVENTION。
  • observationContext:用于存储和管理聊天模型交换的元数据
  • observationRegistry:和观察相关,但默认是不观察。

剩下的基本都是很简单的理解了。和工具调用有关,暂时不分析。

详细说下DEFAULT_OBSERVATION_CONVENTION类,它主要用于为聊天模型操作生成观测数据(如名称、低基数和高基数键值对)。具体功能如下:

  • 获取观测名称:返回默认的观测名称。
  • 生成上下文名称:根据请求模型生成上下文名称。
  • 生成低基数键值对:包括AI操作类型、提供者、请求模型和响应模型。
  • 生成高基数键值对:包括请求和响应的各种参数,如频率惩罚、最大令牌数等。

总结

通过对OpenAI与《月之暗面》中Moonshot案例的对比,我们可以清晰地看到,尽管每个业务对接的实现有所不同,但其整体框架和逻辑结构却高度相似。无论是在模型选择、参数解析,还是流式处理的实现上,都遵循了相同的基本模式。这些对接过程中的每一个小细节,虽然看似琐碎,但它们在整个系统中发挥着至关重要的作用。


我是努力的小雨,一个正经的 Java 东北服务端开发,整天琢磨着 AI 技术这块儿的奥秘。特爱跟人交流技术,喜欢把自己的心得和大家分享。还当上了腾讯云创作之星,阿里云专家博主,华为云云享专家,掘金优秀作者。各种征文、开源比赛的牌子也拿了。

💡 想把我在技术路上走过的弯路和经验全都分享出来,给你们的学习和成长带来点启发,帮一把。

🌟 欢迎关注努力的小雨,咱一块儿进步!🌟

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/6146.html

(0)
LomuLomu
上一篇 2025 年 1 月 13 日 上午6:17
下一篇 2025 年 1 月 13 日 上午7:17

相关推荐

  • 详解:促销系统整体规划

    大家好,我是汤师爷~ 今天聊聊促销系统整体规划。 各类促销活动的系统流程,可以抽象为3大阶段: B端促销活动管理:商家运营人员在后台系统中配置和管理促销活动,包括设定活动基本信息、使用规则、选择适用商品等核心功能。 C端促销活动参与:消费者在前台系统中浏览和参与促销活动,并在下单时获得相应的价格优惠或其他权益。 促销效果分析:通过促销活动的数据采集和分析功能…

    2025 年 1 月 10 日
    46200
  • Java 并发编程:ReentrantLock 锁与 AQS

    大家好,我是栗筝i,这篇文章是我的“栗筝i的Java技术栈”专栏的第030篇作品。在这个专栏中,我将不断为大家带来涵盖Java技术全领域的深入内容。本专栏旨在帮助那些已经具备一定Java开发基础,并且渴望全面掌握Java技术体系以丰富自身技术储备的开发者。同时,每篇文章都会提供丰富的代码示例和详尽的知识点总结,非常适合初学者和即将参加工作面试的求职者。当然,…

    未分类 2024 年 12 月 28 日
    56000
  • 华为OD机试E卷 –分苹果 –24年OD统一考试(Java & JS & Python & C & C++)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码 python算法源码 c算法源码 c++算法源码 题目描述 A、B 两个人把苹果分为两堆,A 希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9 (1100 + 0101 = 9),B 的计算规则是十进制加法,包括正常进位,B 希…

    未分类 2024 年 12 月 31 日
    49100
  • 万字图文:SaaS业务架构、价值流、业务能力、业务流程、业务对象、组织架构

    大家好,我是汤师爷~ 本文为读者提供一个SaaS业务架构的系统性框架,探讨业务架构分析的核心要素,帮助SaaS企业深入剖析目标客户的业务模式,全面理解他们的业务架构。 无论你是SaaS创业者、产品经理还是架构师,本文内容都将为你的系统设计和决策提供帮助。 1 目标与步骤 SaaS业务架构需要区分两种视角:SaaS企业自身的业务架构、SaaS服务客户的业务架构…

    2025 年 1 月 14 日
    49100
  • 华为OD机试E卷 –数大雁–24年OD统一考试(Java & JS & Python & C & C++)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码 python算法源码 c算法源码 题目描述 一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由几只大雁发出。具体:1.大雁发出的完整叫声为”quack“,因为有多只大雁同一时间嘎嘎作响,所以字符串中可能会混合多个”quack”2.大雁会依次完整…

    未分类 2025 年 1 月 14 日
    92400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信