1 写在前面
本篇文章做学习记录使用,文中若有不妥之处,欢迎批评和指正。因为曾打过有关比赛,使用到了api接口的调用的经验,综合比赛经验和学习经验,写下这篇文章。注意:当学会api接口调用后,会使开发变得更加容易。但应该不仅限于api接口的调用,同时也需要学习api接口的开发。这样才能不断精进。下面内容全是自己心得,没有像官方或者网上的话术,语言可能不华丽,烦请见谅。
2 API接口说明
2.1 什么是api接口
我自己的理解(可能有误,啊哈哈哈哈)就是为了使各大开发者更快完成一个项目功能,api功能开发商提供一个调用地址,每次访问(调用),返回给开发者想要的信息。作为开发者,对于一些复杂的功能,直接采用接口调用方式访问,这样好像更快;对于提供者,编写出来的功能,是不想直接将代码提供给开发者的,所以就开发出了接口,提供给开发者,这样既方便也避免了背后代码的暴露。
2.2 api常见用途
在大部分的开发上,api接口调用的运用是非常广泛的。例如我作为个人开发者,我开发的app或者是桌面应用程序上需要显示一个今日天气的功能,但是我不晓得这个功能背后代码怎么编写,怎么能实时将天气显示出来,这个时候api接口调用就起作用了,市面上会存在天气接口的提供商,只不过有些是付费调用,有些是免费调用。
api接口调用技术已经很完善了,支持大部分语言。像阿里云、腾讯云、华为云提供的很多云上功能,都支持接口调用。比如像:短信验证、图像识别接口、AI大模型接口调用等。
2.3 api接口常见返回格式
对于api接口的返回,常见格式就是json格式,不用我多说,相信大部分人都知道这个格式。当你每次调用后,会返回一串json数据过来。但是这串json数据,有大部分数据是你不需要的,你只需要其中的关键信息,这个时候就涉及到了json数据格式的解析。具体方法,在下文的案例说明,下面附上常见jaon返回的图片:
3 API接口调用测试工具
我喜欢用apipost,能自动生成各种代码。也可以在线使用这个工具。Apipost-API 文档、设计、调试、自动化测试一体化协作平台https://www.apipost.cn/
4 案例
4.1 案例1:调用AI大模型,与AI对话
曾经在打比赛的时候使用过百度智能云模型,但是这里案例采用deepseek的模型调用。下面是具体的步骤。
4.1.1 步骤一
先到deepseek的开发者平台充钱,它的调用非常便宜,为了学习和练手,1-5块钱都很合适。这里是他的网站:DeepSeek 开放平台。下面是该开放平台的界面展示。
4.1.2 步骤二
进行充值后,然后获取自己的apikey,这个是调用里面的一个重要参数,是访问该api接口的鉴权。注意,这个apikey在第一次创建的时候能完整显示,后面就无法完整显示了。所以请务必复制保存。
4.1.3 步骤三
- 查看他的开发者文档,当然你也可以看本教程来实现。但是一个好的开发习惯应该是要阅读官方给出的文档,这样才能形成自己的知识。注意官方文档的代码写法,这些都是值得学习的。
- deepseek提供两种模型的调用,一个是R1模型(具备深度思考的模型),另一个是V3模型。本文采用的是R1模型。下图是两种模型的调用价格。
- 官方给出了两种调用方式,一个是通过openai调用,另一个是通过网络请求的方式,在python语言中可以通过requests库进行实现。本文采用openai方式实现,配合自己的需求实现了获取建议功能,采用python语言,下面是代码示例。
from openai import OpenAI
def run_api(api_key, sensor_data):
try:
client = OpenAI(api_key=api_key, base_url="https://api.deepseek.com")
# 执行 API 请求
response = client.chat.completions.create(
model="deepseek-chat", # 你也可以替换成deepseek-reasoner模型(不含有深度思考的模型)
messages=[
{"role": "system", "content": "你是楼道消防智能管家,具备丰富的消防知识!"}, #赋予系统角色,定义系统的行为
{"role": "user",
"content": f"我制作了基于物联网的楼道消防系统,通过相关的传感器获取了温湿度、烟雾浓度、一氧化碳浓度、火焰强度。"
f"其中温度的值为{sensor_data['temp']}°C, 湿度的值为{sensor_data['humi']}%RH, 烟雾浓度的值为{sensor_data['smoke']}ppm, "
f"一氧化碳浓度为{sensor_data['CO']}ppm, 火焰强度浓度为{sensor_data['fire']}%。请根据这些数据, 提供楼道消防的建议!"},
],# # 赋予用户角色,并发起相关的对话
max_tokens=4096,# 设置最大返回的token数
temperature=1.6,# 这个值越大,结果越随机1-2间选择
stream=False # 是否开启流式返回,流式返回就是返回的结果是分段的,适合长文本的返回,会一下一下的通过json返回
)
# 返回结果
return response.choices[0].message.content
except Exception as e:
# 捕获异常并返回错误信息
return f"请求失败: {str(e)}"
# 示例调用
if __name__ == "__main__":
# 你的 API 密钥
api_key = "***********************"# 替换为你的API密钥
# 示例传感器数据
sensor_data = {
'temp': 30,
'humi': 50,
'smoke': 20,
'CO': 15,
'fire': 5
}
# 调用函数并打印结果
result = run_api(api_key, sensor_data)
print(result)
- 结果会以文本返回,注意不是json返回,如果需要json格式返回,可以尝试流式输出或者是网络请求的写法。返回结果展示如下。
4.2 案例2:调用天气接口,获得今日天气
4.2.1 步骤一
选取天气平台的API提供商,这里随便在网上找了个网站,仅当学习使用。该接口也有详细的使用方法。天气预报-中国气象局免费API - 提供免费接口调用平台
4.2.2 步骤二
开始调用,这里的调用我们采用apipost工具。该工具可以在线调用并且生成各种代码。
5 API调用集成案例示范
我在打比赛的时候,将api接口调用天气的值集成到开发的app中,达到了今日天气的一个看板。下面是相关的一个展示。采用的api服务商是和风天气,下面有他们的网站,该api服务商可以免费的调用,非常不错,推荐使用。可以自己去摸索和风天气api的调用。控制台 | 和风天气https://console.qweather.com/home#/apps?lang=zh
如果有不懂的,遇到问题的,可以私信我交流,相互讨论和学习。api调用方式多种多样,可以通过各种语言进行实现。欢迎交流。