智谱AI——智能体开发探索

   日期:2024-12-26    作者:qiy168 移动:http://ljhr2012.riyuangf.com/mobile/quote/23712.html

智谱·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子句处理可能抛出的异常。

代码

 

输出(不使用联网搜索功能的情况下

 

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号