目录
一、智谱AI
1.GLM-4
Ⅰ、基础能力(英文)
Ⅱ、指令跟随能力(中英)
Ⅲ、对齐能力(中文)
智谱 AI GLM 教程
Ⅳ、长文本能力
Ⅴ、多模态 – 文生图能力
2.智谱AI调用
Ⅰ、安装包
Ⅱ、导入智谱AI模块
Ⅲ、使用API调用智谱大模型
Ⅳ、获取模型的回答结果
Ⅴ、流式输出模型的回答
二、将智谱AI接口整合在LangChain中
1.类定义:ZhipuAIGLM4 继承自 LLM
Ⅰ、类属性
Ⅱ、构造函数 __init__
2.方法实现:核心功能封装
Ⅰ、属性 __llm_type__
Ⅱ、核心方法 invoke
Ⅲ、兼容方法 _call
Ⅳ、流式方法 stream
3.实例化与调用:使用示例
4.与LangChain的集成
Ⅰ、消息类型兼容
Ⅱ、接口适配
5.完整代码
三、在LangChain中手动封装智谱模型
1.导入模块与类型声明
2.类定义:ZhipuAIGLM4 继承自 LLM
3.构造函数 __init__
4.属性 __llm_type
5.核心方法 invoke
6.兼容方法 _call
7.流式方法 stream
8.实例化与调用实例
9.完整代码
四、调用以LangChain封装好的智谱模型
代码运行流程
1.导入自定义模型类并实例化
2.调用invoke方法(单轮对话)
3.传入历史对话调用invoke方法(多轮对话)
4.流式调用 stream 方法
5.直接调用 invoke 方法并访问回复内容
6.查看调用的智谱模型类型
7.完整代码
脚步虽缓,不停则远。梦想在心,坚持成真。
—— 25.5.24
新一代基座大模型GLM-4,整体性能相比GLM3全面提升60%,逼近GPT-4;支持更长上下文;更强的多模态;支持更快推理速度,更多并发,大大降低推理成本;同时GLM-4增强了智能体能力。
Ⅰ、基础能力(英文)
GLM-4 在 MMLU、GSM8K、MATH、BBH、HellaSwag、HumanEval等数据集上,分别达到GPT-4 94%、95%、91%、99%、90%、100%的水平。

Ⅱ、指令跟随能力(中英)
GLM-4在IFEval的prompt级别上中、英分别达到GPT-4的88%、85%的水平,在Instruction级别上中、英分别达到GPT-4的90%、89%的水平。

Ⅲ、对齐能力(中文)
GLM-4在中文对齐能力上整体超过GPT-4。

Ⅳ、长文本能力
我们在LongBench(128K)测试集上对多个模型进行评测,GLM-4性能超过 Claude 2.1;在「大海捞针」(128K)实验中,GLM-4的测试结果为 128K以内全绿,做到100%精准召回。

Ⅴ、多模态 – 文生图能力
CogView3在文生图多个评测指标上,相比DALLE3 约在 91.4% ~99.3%的水平之间。

GLM-4 实现自主根据用户意图,自动理解、规划复杂指令,自由调用网页浏览器、Code Interpreter代码解释器和多模态文生图大模型,以完成复杂任务。 简单来讲,即只需一个指令,GLM-4会自动分析指令,结合上下文选择决定调用合适的工具。
GLM-4能够通过自动调用python解释器,进行复杂计算(例如复杂方程、微积分等),在GSM8K、MATH、Math23K等多个评测集上都取得了接近或同等GPT-4 All Tools的水平。
GLM-4 能够自行规划检索任务、自行选择信息源、自行与信息源交互,在准确率上能够达到 78.08,是GPT-4 All Tools 的116%。
GLM-4 能够根据用户提供的Function描述,自动选择所需 Function并生成参数,以及根据 Function 的返回值生成回复;同时也支持一次输入进行多次 Function 调用,支持包含中文及特殊符号的 Function 名字。这一方面GLM-4 All Tools 与 GPT-4 Turbo 相当。
智谱AI新用户可以体验领取免费tokens:
网站链接: 智谱
Ⅰ、安装包
首先,在使用前应该先安装智谱大模型的安装包:
使用清华园安装:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple ZhipuAI
Ⅱ、导入智谱AI模块
ZhipuAI():
Ⅲ、使用API调用智谱大模型
智谱大模型客户端对象.chat.completions.create():

Ⅳ、获取模型的回答结果

Ⅴ、流式输出模型的回答
智谱大模型客户端对象.chat.completions.create():

注:Pydantic v2 要求所有类属性(尤其是作为模型字段的属性)必须显式声明类型
Ⅰ、类属性
:维护多轮对话的上下文,格式与智谱 API 要求的参数一致。
:初始化智谱 AI 的 SDK 客户端,持有 API 密钥。
Ⅱ、构造函数 __init__
ZhipuAI():智谱 AI(Zhipu.AI)提供的 Python SDK 客户端类的构造函数,用于初始化与智谱大模型的连接,获取调用 API 的客户端对象。
Ⅰ、属性 __llm_type__
@property:装饰器(Decorator),用于将类方法转换为只读属性或可读写属性。它允许开发者以属性访问的形式调用方法,同时隐藏实现细节,控制数据的访问、修改和删除行为。
Ⅱ、核心方法 invoke
isinstance():Python 内置函数,用于判断一个对象是否是某个类或类型的实例,或是否是其中多个类或类型中的一个。
to_string():将对象转换为字符串表示形式,通常用于处理非字符串类型的输入(如 LangChain 的 对象),确保输入符合模型接口要求。
append():Python 列表的实例方法,用于向列表末尾添加一个元素,原地修改列表,无返回值。
client.chat.completions.create():智谱 AI SDK 中用于调用对话模型 API 的核心方法,支持多轮对话和流式输出,返回模型生成的响应。
Ⅲ、兼容方法 _call
Ⅳ、流式方法 stream
yield: 是一个关键字,用于定义生成器函数(Generator Function)。生成器是一种特殊的迭代器,具有延迟计算(Lazy Evaluation)的特性,适用于处理大规模数据或需要逐块生成结果的场景。
核心作用:
① 创建生成器:带有 的函数不再是普通函数,而是生成器函数。调用生成器函数不会立即执行代码,而是返回一个生成器对象,只有当使用 或迭代( 循环)时才会执行函数体。
② 暂停与恢复执行:当执行到 时,函数会暂停执行,并返回 后的值。下次调用 或继续迭代时,函数从暂停处恢复执行,直到遇到下一个 或函数结束。
③ 逐块生成数据:适用于需要逐步生成结果的场景(如读取大文件、流式数据处理),避免一次性加载所有数据到内存,节省资源。
Ⅰ、消息类型兼容
返回值是 LangChain 的标准消息类型,可直接用于等组件,实现多轮对话逻辑。
Ⅱ、接口适配
通过和方法适配 LangChain 的和接口,支持无缝集成到 LangChain 的代理(Agent)或链(Chain)中。

:用于声明列表类型(如对话历史 的类型为 )。
:LangChain 的基础 LLM 类,自定义模型需继承此类。
:智谱 AI 的 Python SDK 客户端类,用于调用模型 API。
:LangChain 的 AI 消息类型,用于封装模型回复。
:存储多轮对话的历史记录,每个元素为 格式的字典。
:智谱 AI 客户端对象,用于发起 API 请求。
:调用父类()的构造函数,完成 LangChain 框架所需的初始化。
:实例化智谱 AI 客户端,需将 替换为实际申请的 API 密钥。
ZhipuAI():智谱 AI(Zhipu.AI)提供的 Python SDK 客户端类的构造函数,用于初始化与智谱大模型的连接,获取调用 API 的客户端对象。
@property:装饰器(Decorator),用于将类方法转换为只读属性或可读写属性。它允许开发者以属性访问的形式调用方法,同时隐藏实现细节,控制数据的访问、修改和删除行为。
isinstance():Python 内置函数,用于判断一个对象是否是某个类或类型的实例,或是否是其中多个类或类型中的一个。
to_string():将对象转换为字符串表示形式,通常用于处理非字符串类型的输入(如 LangChain 的 对象),确保输入符合模型接口要求。
append():Python 列表的实例方法,用于向列表末尾添加一个元素,原地修改列表,无返回值。
智谱语言模型实例.chat.completions.create():智谱 AI SDK 中用于调用对话模型 API 的核心方法,支持多轮对话和流式输出,返回模型生成的响应。
isinstance():Python 内置函数,用于判断一个对象是否是某个类或类型的实例,或是否是其中多个类或类型中的一个。
to_string():将对象转换为字符串表示形式,通常用于处理非字符串类型的输入(如 LangChain 的 对象),确保输入符合模型接口要求。
append():Python 列表的实例方法,用于向列表末尾添加一个元素,原地修改列表,无返回值。
智谱语言模型实例.chat.completions.create():智谱 AI SDK 中用于调用对话模型 API 的核心方法,支持多轮对话和流式输出,返回模型生成的响应。
yield: 是一个关键字,用于定义生成器函数(Generator Function)。生成器是一种特殊的迭代器,具有延迟计算(Lazy Evaluation)的特性,适用于处理大规模数据或需要逐块生成结果的场景。
核心作用:
① 创建生成器:带有 的函数不再是普通函数,而是生成器函数。调用生成器函数不会立即执行代码,而是返回一个生成器对象,只有当使用 或迭代( 循环)时才会执行函数体。
② 暂停与恢复执行:当执行到 时,函数会暂停执行,并返回 后的值。下次调用 或继续迭代时,函数从暂停处恢复执行,直到遇到下一个 或函数结束。
③ 逐块生成数据:适用于需要逐步生成结果的场景(如读取大文件、流式数据处理),避免一次性加载所有数据到内存,节省资源。
从自定义模块 中导入 类,该类封装了智谱 GLM-4 模型的调用逻辑。

发布者:Ai探索者,转载请注明出处:https://javaforall.net/264226.html原文链接:https://javaforall.net
