使用智谱 GLM-4-9B 和 SiliconCloud 云服务快速构建一个编码类智能体应用

本文主要是介绍使用智谱 GLM-4-9B 和 SiliconCloud 云服务快速构建一个编码类智能体应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本篇文章我将介绍使用智谱 AI 最新开源的 GLM-4-9B 模型和 GenAI 云服务 SiliconCloud 快速构建一个 RAG 应用,首先我会详细介绍下 GLM-4-9B 模型的能力情况和开源限制,以及 SiliconCloud 的使用介绍,最后构建一个编码类智能体应用作为测试。

本文首发自博客 使用智谱 GLM-4-9B 和 SiliconCloud 云服务快速构建一个编码类智能体应用

我的新书《LangChain编程从入门到实践》 已经开售!推荐正在学习AI应用开发的朋友购买阅读,此书围绕LangChain梳理了AI应用开发的范式转变,除了LangChain,还涉及其他诸如 LIamaIndex、AutoGen、AutoGPT、Semantic Kernel等热门开发框架。
LangChain编程从入门到实践

GLM-4-9B 有多强

智谱家 GLM-4-9B 模型的发布,可以称得上大模型开源领域的又一个里程碑事件,除了开源行为本身值得肯定,我觉得开源出来的模型可以接入线上应用直接使用,可能对我们做应用层的开发者意义更大。话不多说,看 GLM-4-9B 的介绍:

首先 GLM-4-9B 模型结构与 GLM-3-9B 变化不大,主要是模型层数由 28 增加到 40,词表大小由 65024 扩充到 151552、支持的上下文长度支持从 32K、128K 扩展到 128K、1M(GLM-4-9B-Chat-1M),做应用最关注的就是长上下文(多轮对话记忆保持、各种阅读助手、长文本理解等常见场景)能力和 Function Call 能力(工具调用,构建智能体应用的基础)。

1M 的上下文长度(约 200 万中文字符)方面,GLM-4-9B 在大海捞针测试中全绿。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不过根据英伟达研究团队最近新提出的名为RULER的新基准,这里选用的测试方法(测试的 LWM 声称上下文长度 1M,实际不到 4K)测出来的结果有水分,这个我还会自己测试下。

上下文长度虚标严重

Function Call 能力也属于 gpt-4-turbo 级别,使用 Berkeley Function-Calling Leaderboard 测试集,这个对我来说比较有说服力,有兴趣的可以看看测试集设计,不过毕竟测试集公开,混在训练集里也不好说,这个我也按照相同思路设计了对应的私有中文测试集,引入之前也会再跑一次作为交叉验证。

ModelOverall Acc.AST SummaryExec SummaryRelevance
Llama-3-8B-Instruct58.8859.2570.0145.83
gpt-4-turbo-2024-04-0981.2482.1478.6188.75
ChatGLM3-6B57.8862.1869.785.42
GLM-4-9B-Chat81.0080.2684.4087.92

虽然开源,但也存在限制,就是学术研究免费,商业用途需要登记且必须遵守相关条款和条件,详见 Github 项目介绍:https://github.com/THUDM/GLM-4

SiliconCloud 有多好用

SiliconCloud 是硅基流动推出的 GenAI 云服务,这是国内同类产品中我体验最好的一家,便宜且推理速度还快,国外已经有很多类似服务了,比如 Banana, Replicate, Beam, Modal 、OctoAI、ModelZ、BentoML等,这类服务主要用于私有模型或常见开源模型托管,通过它们自研的推理加速引擎、大模型基础设施优化能力,大幅降低大模型的部署及推理成本,降低 AI 应用的成本,加速 AI 产品的落地 。

推理价格

SiliconCloud 便宜又快的原因就在于硅基流动自研的 LLM 推理加速引擎 SiliconLLM ,支持 Llama3、Mixtral、DeepSeek、Baichuan、ChatGLM、Falcon、01-ai(零一万物开源的模型)、GPT-NeoX 等模型加速,下面是 SiliconLLM 与推理框架vLLM(伯克利大学 LMSYS 组织开源)、Tensorrt-LLM(英伟达开源)的性能比较。

SiliconLLM与vLLM、Tensorrt-LLM性能比较

最后补充一组我自己本地随手测试的 API 调用服务吞吐:

  1. 首次响应时间与最快响应时间差Latency saved 0.03s): 表示首次响应时间与最快响应时间之间的差异,这个指标可以反映出大模型 API 服务在处理请求时的波动。
  2. 优化后的首 token 响应时间Optimized TTFT 0.36s):是指在多次请求中,最快的一次首 token 响应时间。
  3. 首 token 响应时间中位数Median TTFT 0.03s ):是指在所有请求中,首 token 响应时间的中位数,即一半的请求首 token 响应时间比这个值快,另一半比这个值慢。中位数可以提供一个更稳健的性能指标,因为它不受极端值的影响。
  4. 生成的 token 数量Tokens: 19):表示在请求过程中生成的 token 总数。
  5. token 生成速率79 tokens/sec): 表示每秒生成的 Token 数量,这是衡量大模型 API 服务处理能力的一个指标。
  6. 总时间Total time: 0.59s): 表示从开始发送 HTTP 请求到接收到最后一个 token 的时间,这是整个请求处理过程的总耗时

API吞吐

构建编码类智能体应用

首先前往官网 👉 https://cloud.siliconflow.cn/auth/login 注册 SiliconCloud 账号,无需手机号,邮箱注册即可(值得一提,新用户注册可以得到 42 元免费额度用于体验,相当于 3 亿 tokens),按流程注册,保存好生成的 API-KEY。

生成API密钥

开始之前先设置好 SiliconCloud 的 GLM-4-9B-Chat 模型, API 调用方式也与 OpenAI 兼容 ,所以可以直接使用 OpenAI SDK (langchain_openai)来访问 SiliconCloud 上的任意模型。

import os
from langchain_openai import ChatOpenAI
sc_api_key = os.getenv("SC_API_KEY")
llm = ChatOpenAI(base_url="https://api.siliconflow.cn/v1",api_key=sc_api_key,model="zhipuai/glm4-9B-chat")

后续代码和这篇文章 DeepSeek-V2 到底有多强?写一个 AI 编码 Agent 测测看(附详细代码)基本一致,也有着详细解释过程,这里不再赘述,后台回复 DeepSeek可获取完整代码。

这篇关于使用智谱 GLM-4-9B 和 SiliconCloud 云服务快速构建一个编码类智能体应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1040662

相关文章

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2