智谱·AI开放平台:https://open.bigmodel.cn/
点击网页右上角“开发工作台”。进入工作台后,可点击进入“文档中心”。
文档中心/接口文档:https://open.bigmodel.cn/dev/api
使用指南:https://open.bigmodel.cn/dev/howuse/introduction
开发指南中,提供了三种指南:
SDK开发
提供的SDK包括Python SDK和Java SDK。
什么是SDK?
SDK,软件开发工具包(Software Development Kit),是一组代码、库、文档和示例代码,用于帮助开发者创建应用程序或软件产品。
SDK 的主要组成部分:
- 工具:包括编译器、调试器、构建工具等,这些工具帮助开发者编写、编译和调试代码。
- 库:预先编写的代码库或框架,可以直接调用以实现某些功能,而无需从头开始编写代码。
- 文档:详细的文档和指南,解释如何使用 SDK 中的各种工具和库。
- 示例代码:提供一些示例代码,帮助开发者快速上手,了解如何实现某些功能。
- API:应用编程接口,定义了与操作系统、服务或其他软件进行交互的方式。
举例:
Android SDK是一种移动应用开发SDK。包含内容:Android Studio、Android API 库、调试工具、模拟器、文档、示例代码。
SDK ≠ (python)第三方库。(python)第三方库可以看作是SDK的一部分;第三方库可以独立存在,不依赖SDK(比如不需要特定的开发工具就可以使用。eg. python的第三方库的使用不需要使用指定的集成开发环境);一个SDK可以有多个第三方库。
SDK用户鉴权
SDK用户鉴权是确保只有经过授权的用户或应用程序可以访问SDK提供的功能和资源的关键机制。
在开发工作台可以查看自己的API key,并将其复制到代码中:
代码示例
智谱平台提供了三种调用方式:同步调用、异步调用和流式调用。调用方式取决于具体模型的支持情况。
观察这三种调用方法的代码,它们的不同之处主要在于为response赋值的函数不同:
- 同步调用、流式调用使用的函数是,其中流式调用在函数中使用额外的参数。
- 异步调用使用的函数是。
具体内容见下文。
同步调用
调用后即可一次性获得最终结果。
代码:
输出:
如果在代码的列表中只保留一个字典的内容,即只向模型输入“作为一名营销专家,请为我的产品创作一个吸引人的slogan”,模型的回答会类似这样:“当然可以!不过我需要先了解一些关于您产品的信息,比如产品类型、特点、目标受众等。这样我才能为您创作一个更贴切、更有吸引力的slogan。请您提供一下相关信息,我会尽快为您想出一个满意的slogan。”也就是说,在列表中多提供user和assistant几个回合的对话信息有机会生成更符合期望的回答(直接在第一个字典的内容中就给出产品的名称,模型也能够提供答案)。
异步调用
调用后会立即返回一个任务ID,然后用任务ID查询调用结果(根据模型和参数的不同,通常需要等待10-30秒才能得到最终结果)。
代码:
如果运行上面的代码,只会输出如下所示任务ID,还不能得到最终的输出。
输出:
使用任务ID查询接口才能获取结果(如下所示),更多内容可见文档关于GLM-4的内容。
代码:
输出:
SSE调用
调用后可以流式的实时获取到结果直到结束。
代码:
输出:
HTTP调用
暂时还没探索。
第三方框架
文档提供了两个第三方框架的示例:OpenAI SDK和Langchain SDK。
OpenAI SDK
在OpenAI SDK中调用智谱AI平台中的模型(如GLM-4)与使用智谱AI的SDK调用本平台模型的代码十分相像,只是的从对象变成了对象。
代码:
Langchain SDK
在这个框架下调用智谱AI平台中的模型(如GLM-4)似乎比使用OpenAI框架要复杂一些。这个框架可以使用Langchain的类来调用模型,也可以使用Langchain的类来调用模型。
这两种类的区别跟Langchain对智能体工作流的定义有关。
使用ChatOpenAI类调用
使用类调用模型时,只需要定义(一个对象,用参数指明调用哪个模型)和(一个对象)。这种调用方式与前面使用OpenAI SDK和Zhipu SDK的方式都比较相像,都需要定义模型和输入的提示内容。
文档中提供的代码只展示了如何使用类调用模型,该代码运行后的输出如下:
输出中并不包含我们期望的回答。如果想要进一步获取回答,应该需要查看Langchain SDK的相关用法,此处暂不做探究。
使用Langchain的AgentExecutor类调用
使用类调用模型时,不仅需要定义和,还需要定义。它们之间的关系可以参考文章《Langchain知识点(下)》中的描述。
文档提供的相关代码提到了,这里应该是涉及到了另外一个平台(一个为人工智能智能体(如大型语言模型,LLMs)和检索增强生成(RAG)应用优化的搜索引擎,旨在提供高效、快速且持久的搜索结果。更详细的内容可以参考文章《【AI】Tavily》),暂不做探究(个人暂时也没有这个平台的API key)。
在运行代码时,可以设置为空列表,表示不使用工具、不需要联网搜索信息、仅使用模型本身的知识来回答问题。
可以使用try子句处理可能抛出的异常。
代码:
输出(不使用联网搜索功能的情况下):