引言
在上篇文章,我们详细介绍了LangChain,并且为大家讲解了如何在Anaconda中安装LangChain并调用OpenAI的接口。 但是,调用OpenAI的接口需要花很多的钱,我们如何才能在本地接入其他AI的API呢,例如豆包或者其他一些AI的API,本文章将为你详细解释。
1. API介绍
API(Application Programming Interface,应用程序接口)是一个定义和规范,它允许不同的软件系统之间进行通信和数据交换。API通过一组规则和协议,帮助开发者调用另一个系统的功能或服务,而不需要了解其内部的实现细节。以下是API的主要特点:
- 功能封装:API提供了一组可以被调用的功能或方法,允许开发者通过这些功能来完成特定的任务。例如,某个天气API可能提供了获取天气信息的方法,调用该API就可以获取实时的天气数据。
- 数据交换:API通常用于在应用程序之间交换数据。它规定了请求的格式(如请求体、请求参数)和响应的格式(如JSON、XML),从而使不同的系统可以理解和处理数据。
- 抽象与简化:API隐藏了底层的实现细节,开发者不需要关心具体的实现方式,只需要按照API的文档和规则调用即可。这样极大地简化了开发流程。
- 通信协议:API通常基于一些通信协议进行数据传输,常见的协议有HTTP/HTTPS(Web API),一些API会使用REST、SOAP等架构风格。
2. 为何使用OpenAI库
调用OpenPI的作用主要在于标准化和简化API的定义、使用和集成。OpenAI是一个开放标准,用于描述和定义RESTful API的结构。它提供了一种统一的方式,让开发人员能够直观地了解和调用AI,同时帮助实现自动化和更高效的开发流程。以下是OpenAI的主要作用和优势:
- 定义API规范:OpenAI提供了一种标准化的AI的API定义格式,通常使用JSON或YAML文件来描述API的所有细节,包括端点、请求方法、参数、返回值格式、认证方式等。这样,API的定义清晰明了,方便我们开发人员进行理解和使用。
- 自动生成API文档:通过使用OpenAI规范,开发人员可以自动生成详细的API文档,而无需手动编写。这使得API文档更加一致和易于维护,同时大幅减少手工编写和维护文档的时间。
- 自动化代码生成:OpenAI支持根据规范文件自动生成客户端或服务端的代码,这大大简化了集成工作。开发者可以使用代码生成工具,快速生成API接口的调用代码、数据模型等,从而加快开发进程并减少人为错误。
- 增强API的可测试性:OpenAI支持创建API的Mock服务(虚拟服务),可以在API实际开发完成前进行测试,确保请求和响应符合预期。
- 支持API的版本控制:OpenAI文件可以轻松管理API的版本变化。每次API更新时,通过调整OpenAI定义文件,可以清楚地记录版本变更,并生成相应的文档,帮助维护兼容性和追踪不同版本的差异。
- 提高协作效率:使用OpenAI可以让后端、前端、测试人员、产品经理等团队成员对API有一致的理解。每个人都可以基于同一个OpenAI规范进行开发、测试和验证,减少沟通成本和误解。
- 方便API管理和治理:OpenAI作为标准化文件,便于管理API的生命周期,帮助企业和团队管理和监控不同版本、不同用途的API接口,尤其是对于复杂的系统或大量接口,OpenAI提供了良好的组织和管理手段。
3. 使用OpenAI的库但使用其他AI的API
那么介绍完了有关API的基础只是以及OpenAI这个库的作用,我们接下来就为大家演示在Anaconda中如何使用OpenAI库调用不同的API。
-
安装必要的库
确保安装了requests库(或其他HTTP请求库),用于发送HTTP请求给第三方API。pip install requests -
配置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进行现阶段的学习。 -
编写请求代码
使用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 ?
运行结果如下:
-
处理返回的结果
不同的API返回的结果格式可能不同,一般会是JSON格式。根据API文档解析并提取你需要的数据。 -
适配OpenAI库的接口风格(可选)
如果希望保持与OpenAI库类似的使用体验,可以封装成类似的函数接口,比如封装成generate_text函数,以便于替换和使用。