2024青训营×AI班第一课补,本地非OpenAI接口的调用

147 阅读5分钟

引言

在上篇文章,我们详细介绍了LangChain,并且为大家讲解了如何在Anaconda中安装LangChain并调用OpenAI的接口。 但是,调用OpenAI的接口需要花很多的钱,我们如何才能在本地接入其他AI的API呢,例如豆包或者其他一些AI的API,本文章将为你详细解释。

1. API介绍

API(Application Programming Interface,应用程序接口)是一个定义和规范,它允许不同的软件系统之间进行通信和数据交换。API通过一组规则和协议,帮助开发者调用另一个系统的功能或服务,而不需要了解其内部的实现细节。以下是API的主要特点:

  1. 功能封装:API提供了一组可以被调用的功能或方法,允许开发者通过这些功能来完成特定的任务。例如,某个天气API可能提供了获取天气信息的方法,调用该API就可以获取实时的天气数据。
  2. 数据交换:API通常用于在应用程序之间交换数据。它规定了请求的格式(如请求体、请求参数)和响应的格式(如JSON、XML),从而使不同的系统可以理解和处理数据。
  3. 抽象与简化:API隐藏了底层的实现细节,开发者不需要关心具体的实现方式,只需要按照API的文档和规则调用即可。这样极大地简化了开发流程。
  4. 通信协议:API通常基于一些通信协议进行数据传输,常见的协议有HTTP/HTTPS(Web API),一些API会使用REST、SOAP等架构风格。

2. 为何使用OpenAI库

调用OpenPI的作用主要在于标准化和简化API的定义、使用和集成。OpenAI是一个开放标准,用于描述和定义RESTful API的结构。它提供了一种统一的方式,让开发人员能够直观地了解和调用AI,同时帮助实现自动化和更高效的开发流程。以下是OpenAI的主要作用和优势:

  1. 定义API规范:OpenAI提供了一种标准化的AI的API定义格式,通常使用JSON或YAML文件来描述API的所有细节,包括端点、请求方法、参数、返回值格式、认证方式等。这样,API的定义清晰明了,方便我们开发人员进行理解和使用。
  2. 自动生成API文档:通过使用OpenAI规范,开发人员可以自动生成详细的API文档,而无需手动编写。这使得API文档更加一致和易于维护,同时大幅减少手工编写和维护文档的时间。
  3. 自动化代码生成:OpenAI支持根据规范文件自动生成客户端或服务端的代码,这大大简化了集成工作。开发者可以使用代码生成工具,快速生成API接口的调用代码、数据模型等,从而加快开发进程并减少人为错误。
  4. 增强API的可测试性:OpenAI支持创建API的Mock服务(虚拟服务),可以在API实际开发完成前进行测试,确保请求和响应符合预期。
  5. 支持API的版本控制:OpenAI文件可以轻松管理API的版本变化。每次API更新时,通过调整OpenAI定义文件,可以清楚地记录版本变更,并生成相应的文档,帮助维护兼容性和追踪不同版本的差异。
  6. 提高协作效率:使用OpenAI可以让后端、前端、测试人员、产品经理等团队成员对API有一致的理解。每个人都可以基于同一个OpenAI规范进行开发、测试和验证,减少沟通成本和误解。
  7. 方便API管理和治理:OpenAI作为标准化文件,便于管理API的生命周期,帮助企业和团队管理和监控不同版本、不同用途的API接口,尤其是对于复杂的系统或大量接口,OpenAI提供了良好的组织和管理手段。

3. 使用OpenAI的库但使用其他AI的API

那么介绍完了有关API的基础只是以及OpenAI这个库的作用,我们接下来就为大家演示在Anaconda中如何使用OpenAI库调用不同的API。

  1. 安装必要的库
    确保安装了requests库(或其他HTTP请求库),用于发送HTTP请求给第三方API。

    pip install requests
    
  2. 配置API的URL和密钥
    获取你要调用的AI API的访问URL和API密钥(例如AWS、Google、Azure等AI服务的API)。
    如果各位同学,暂时没有能力去购买API进行自己的开发,我们也可以在掘金平台的LangChain实战课中先使用预编译好的环境进行开发,或是前往popjane/free_chatgpt_api: 🔥 公益免费的ChatGPT API,Free ChatGPT API,GPT4 API,可直连,无需代理,使用标准 OpenAI APIKEY 格式访问 ChatGPT,可搭配ChatGPT-next-web、ChatGPT-Midjourney、Lobe-chat、Botgem、FastGPT、沉浸式翻译等项目使用使用免费提供的API进行现阶段的学习。

  3. 编写请求代码
    使用requests库,构建与第三方AI服务的API请求。以下是一个调用其他AI API的基本示例,假设该API使用了RESTful的接口。

import os
import openai

\# optional; defaults to `os.environ['OPENAI_API_KEY']`
openai.api_key = "你的api_key"

\# all client options can be configured just like the `OpenAI` instantiation counterpart
openai.base_url = "base_url"

completion = openai.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {
            "role": "user",
            "content": "Hello world!",
        },
    ],
)
print(completion.choices[0].message.content)

\# 正常会输出结果:Hello there! How can I assist you today ?

运行结果如下: image.png

  1. 处理返回的结果
    不同的API返回的结果格式可能不同,一般会是JSON格式。根据API文档解析并提取你需要的数据。

  2. 适配OpenAI库的接口风格(可选)
    如果希望保持与OpenAI库类似的使用体验,可以封装成类似的函数接口,比如封装成generate_text函数,以便于替换和使用。