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

news/2025/1/11 8:44:31/文章来源:https://www.cnblogs.com/guoxiaoyu/p/18660472

今天,我们将重点探讨对接的业务逻辑。为了帮助大家更直观地掌握其中的规律性,我将通过对比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 技术这块儿的奥秘。特爱跟人交流技术,喜欢把自己的心得和大家分享。还当上了腾讯云创作之星,阿里云专家博主,华为云云享专家,掘金优秀作者。各种征文、开源比赛的牌子也拿了。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/867616.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬盘检测工具|数据恢复

硬盘检测工具设置 # 在settings中开启如下配置,而后关闭数据恢复

VMware ESXi 8.0U3c macOS Unlocker OEM BIOS Huawei (华为) 定制版

VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS Huawei (华为) 定制版VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS Huawei (华为) 定制版 ESXi 8.0U3c 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujitsu (富士…

【Go编程】流程控制

一、流程控制的作用: 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。 二、控制语句的分类: 控制语句分为三类:顺序、选择和循环。 “顺序结构”代表“先执行a,再执行b”的逻辑。 “条件判断结构”代表“如果…,则…”的…

在CDN上搭建支持反向代理的C2服务器(下)

免责声明: 本文技术只做研究之用,禁止用来从事非法用途,如有使用文章中的技术从事非法活动,一切后果由使用者自负,与作者无关。一、摘要 在上一篇文章中, 完成了Microsoft Azure 上的环境准备工作, 已经成功安装并配置了用于 Nginx 反向代理的虚拟机(VM)和用于 Cobalt Strike…

在CDN上搭建支持反向代理的C2服务器(上)

免责声明: 本文技术只做研究之用,禁止用来从事非法用途,如有使用文章中的技术从事非法活动,一切后果由使用者自负,与作者无关。一、摘要 在本文中,将探讨在微软Azure的CDN网络中使用C2域名和Nginx作为反向代理来构建一个红队基础设施。内容包括:C2域的选择和DNS配置、Cobalt St…

换个 AI 写

被遗忘,无法参与,无法长时间停课,对学校或教练组心存疑虑。每月的考试成绩。为了奥运会,并花费了无法停课的时间,以换取比赛课程的月度考试成绩。他们可以通过宣传来间接提高成绩。在未来的职业发展中,她取得了优异的成绩。缺乏时间,对江平在奥运会上取得优异成绩的怀疑…

从Resource中加载shellcode

以下文章来源于Relay学安全 ,作者FireGhost 前言 在开发malware过程中通常有两种加载shellcode方式: 1.把shellcode直接以硬编码的方式写入代码中 2.采用分离加载的方式 制作一个shellcode loader 从本地读取shellcode到内存中进行运行。 本文先讲解第一种方式,这个方式有一…

gRPC:第二代rpc服务

背景 在如今云原生技术的大环境下,rpc服务作为最重要的互联网技术,蓬勃发展,诞生了许多知名基于rpc协议的框架,其中就有本文的主角gRPC技术。一款高性能、开源的通用rpc框架 作者作为一名在JD实习的Cpper,经过一段时间的学习和实践,发现了C++与Java之间的种种不同,这也让…

Tensorflow2.0自定义层

Tensorflow2.0自定义层 tensorflow2.0建议使用tf.keras作为构建神经网络的高级API。 也就是说,大多数TensorFlow API都可用于eager执行模式。 from __future__ import absolute_import, division, print_function, unicode_literals !pip install -q tensorflow==2.0.0-alpha0…

推荐4本书《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》、《AI芯片开发核心技术详解》

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…

arcpy环境搭建

背景 在ArcMap和ArcGIS Pro中,都可以使用arcpy,但是代码都要在相应环境中运行才行。 环境选择 1.在软件安装目录中运行arcpy 对于ArcMap中,可以直接在以下目录中运行arcpy代码: C:\Python27\ArcGIS10.4 对于ArcGIS Pro,可以在以下目录运行arcpy代码: C:\Program Files\Ar…

arcpy搭建环境

背景 在ArcMap和ArcGIS Pro中,都可以使用arcpy,但是代码都要在相应环境中运行才行。 环境选择 1.在软件安装目录中运行python 对于ArcMap中,可以直接在以下目录中运行arcpy代码: C:\Python27\ArcGIS10.4 对于ArcGIS Pro,可以在以下目录运行arcpy代码: C:\Program Files\A…