关于API的种种

前言

这段时间推出的DeepSeek作为一个新兴的AI模型,在推理能力上已接近行业领头羊OpenAI的产品,尤其在数学、编程及推理任务方面表现突出,其技术创新不仅大幅降低了训练成本,还提高了效率。DeepSeek采取完全开源策略,激励了全球AI社区的发展,并间接促使OpenAI调整其开源与产品费用策略。然而,尽管DeepSeek展现了强大的技术实力和创新能力,但在创造性发挥和理论论证方面仍有待提高,同时面临数据安全等方面的挑战。与之相对,OpenAI通过巨额投资追求极致性能,巩固其在AI领域的领导地位。二者发展路径虽异,但有望通过技术渗透推动整个行业的进步。与此同时,DeepSeek的成功也对英伟达等传统算力巨头构成了挑战,预示着AI领域的新一轮洗牌。

在这样的背景下,作为计算机小白,我也希望可以用到Deepseek的能力,简单一点可以本地部署,复杂一点想做AI Agent,从QQ机器人这种普通的做到给Scientist的Agent。在我跟随网上的教程,准备无脑部署的时候,我发现如下图所示

虽然某种意义上我无法通过注册DeepSeek API来继续部署,但也让我意识到,作为小白,我更想知道API是什么,为什么可以通过API接口来做。

什么是API

你进入一个餐馆,菜单就是API,点菜就是执行API的功能,你不需要知道你点的菜是怎么做的。 ——B站评论

API,即应用程序编程接口(Application Programming Interface),是一组规则、协议或工具,用于构建软件应用。它定义了不同的软件组件如何相互沟通和交互,使得一个软件能够使用另一个软件的功能或者数据,而不需要了解其内部实现的细节。

在API的环境中,“应用程序”指的是任何具有独特功能的软件,而“接口”可以被看作是两个应用程序之间的服务合同。这份合同详细规定了两者之间通过请求和响应进行通信的方式。例如,气象局的软件系统包括每天的天气数据,手机上的天气应用程序通过API与该系统“对话”,并在手机上显示最新的天气信息。简单来说,API就是插座,让灯(程序)可以亮起来,我们不需要知道插座背后是如何发电的,只需要找到合适的插座接上就可以操控灯了。

API的一个重要特点是提供了一种抽象层,隐藏了底层系统的复杂性。这意味着我们可以通过API来访问某个服务或资源,而不必关心这个服务或资源是如何实现的。这大大简化了开发过程,并允许开发者专注于自己的应用程序逻辑,而不是基础架构的细节。

API的种类

  • Web API:通过网络提供的服务,如REST或SOAP,广泛用于网络服务之间的交互。
  • 本地API:为操作系统或特定框架提供的接口。
  • 远程API:允许在网络的不同端点之间进行远程调用,如RPC。
  • 库或框架API:由软件库或框架提供,供开发者在特定语境下使用。

连接API

一、了解API文档

首先,你需要详细阅读API提供商的文档。这一步至关重要,因为API文档提供了所有必要的信息,包括身份验证方式、可用的端点、请求格式和响应格式等。

  • 身份验证:大多数API都需要某种形式的身份验证来保证只有授权用户才能访问资源。常见的身份验证方法包括API密钥、OAuth令牌或JWT(JSON Web Token)。
  • 可用端点:API通常提供多个端点,每个端点对应不同的资源或操作。例如,一个端点可能用于获取用户信息,另一个则用于提交订单。
  • 请求格式:API请求通常包含请求头、请求体以及查询参数。请求头中一般包含身份验证信息和其他元数据;请求体中则是具体的请求数据,常以JSON格式呈现;查询参数用来过滤或排序数据。

二、生成API密钥

一旦你了解了API的认证机制,下一步通常是生成API密钥。这个密钥是独一无二的字符串,用于标识你的应用并验证你的身份。API密钥可以在API提供商的开发者门户中生成,并需要在每次API调用时包含在请求头中。

API密钥每一个都是独一无二的,在复制粘贴的时候请谨慎。

三、配置好自己的环境

要与应用程序接口交互,你需要一个工具或环境来进行 HTTP 请求。一些常用的选项包括

Postman:用于测试和开发 API 的强大图形用户界面工具。
cURL: 一种用于发出 HTTP 请求的命令行工具。
编程语言中的 HTTP 库: 如 Python 中的 requests、JavaScript 中的 axios 或 Java 中的 http.client。

在这里我们以requests为例子

四、发送请求

发送API请求通常需要使用HTTP客户端库,比如Python中的requests库或者JavaScript中的axios库。你需要指定请求的URL、HTTP方法(GET、POST、PUT、DELETE等)、请求头、请求体及查询参数。

cURL示例:

curl -X GET "https://api.example.com/users" -H "Authorization: Bearer YOUR_API_KEY"

Python示例:

import requests

url = 'https://api.example.com/users'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
}
response = requests.get(url, headers=headers)
print(response.json())

五、处理响应

API响应通常包括状态码、响应头和响应体。状态码指示请求的结果(如200表示成功),响应头包含元数据,而响应体包含实际的数据。解析响应体时,你可能需要用到相应的解析库,例如Python中的json库。

以Python为例

response = requests.get(url, headers=headers)
data = response.json()
print(data)

报错情况

在使用 API 时,正确的错误处理至关重要。常见 HTTP 状态代码包括:

  • 200 OK: The request was successful.
  • 400 Bad Request: The request was invalid.
  • 401 Unauthorized: Authentication failed.
  • 404 Not Found: The requested resource does not exist.
  • 500 Internal Server Error: The server encountered an error.

示例:

if response.status_code == 200:
    data = response.json()
elif response.status_code == 401:
    print("Unauthorized request. Check your API key.")
else:
    print(f"Error: {response.status_code}")

六、掌握高级API请求:探索更多可能性

在掌握API的基础知识后,就可以尝试更高级的特性:

分页: 通过分块检索数据来处理大型数据集。
过滤和排序: 请求特定的数据子集。
速率限制 管理应用程序接口的使用,避免触及限制。

以分页为例:

url = "https://api.example.com/user"
params = {
    "page": 1, # 当前页数
    "limit": 10  # 每页显示的数量
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data)

当这个GET请求发送到API服务器时,服务器会根据这些参数返回相应页面的数据。在这个例子下,它将返回第一页的前10条记录。如果想要获取第二页的数据,只需将"page"的值改为2即可。

使用API的最佳实践指南

  • 阅读文档:首先,深入研究API的官方文档,这是开启奇妙旅程的第一步。
  • 环境变量的力量:把API密钥等敏感信息安全地藏在环境变量里,就像给宝藏加上一层隐形保护罩。
  • 优雅地应对错误:构建强大的错误处理机制,确保即使遇到突发状况,你的应用也能保持优雅姿态。
  • 尊重速率限制:时刻留意API的速率限制,设计出符合规定的应用程序,做个守规矩的好公民。
  • 保护你的API密钥:永远不要将API密钥直接写入代码中,利用环境变量或密钥管理工具来守护它们的安全。
  • 彻底测试:使用Postman等工具预先测试你的API请求,确保一切就绪再集成进你的项目中,如同探险前先做足准备。
  • 监控使用情况:密切关注你的API使用情况,预防意外的成本增加或超出限额的情况发生。

文章借鉴:https://www.geeksforgeeks.org/how-to-use-an-api-the-complete-guide/

posted @   威猛先生朴一生  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示