极简 Python:10分钟会用 OpenAI / Kimi API
共 6259字,需浏览 13分钟
·
2024-05-01 16:48
背景
之前写了一份:写给不会代码的你:20分钟上手 Python + AI,但感觉还不够简单粗暴。
于是就有了这篇 10 分钟版的,让你快速的开始使用各 AI 厂的 API。
作为准备工作,请先打开 Colab 的网站,并新建一个笔记本。
网址: https://colab.research.google.com
基础版
一切之前,你需要先获取你 API key
对于 OpenAI 用户,访问这里:
https://platform.openai.com/api-keys
对于 Kimi 用户,访问这里:
https://platform.moonshot.cn/console/api-keys
对于其他用户...你自己看着找吧
如果你是 OpenAI 的用户,请将下面的代码复制进 Colab:
!pip install openai
from openai import OpenAI
client = OpenAI(
api_key="sk-yTmYibGsJ637VUkki2GZUzZ9vh7EWFEJ",
)
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "你好"}
])
print(completion)
如果你是其他 AI 的用户,以 Kimi 为例,复制这个:
!pip install openai
from openai import OpenAI
client = OpenAI(
api_key="sk-yTmYibGsJ637VUkki2GZUzZ9vh7EWFEJ",
base_url="https://api.moonshot.cn/v1"
)
completion = client.chat.completions.create(
model="moonshot-v1-8k",
messages=[
{"role": "user", "content": "你好"}
])
print(completion)
注意:你要把 api_key 换成你的
细心的你会发现,无论是什么 AI API,大家的接口调用方法,都几乎一致。唯变化的,是 base_url 和 model 的值。
选择代码单元格,点击左侧的“运行”按钮或快捷键 Ctrl + Enter,开始运行代码。
刚开始运行时,Colab 会安装 OpenAI 库,可能需要几十秒,并输出类似这样的内容:
安装完成后,你会看到回复被打印出来,类似这样:
仔细看这里的中文部分:‘你好!今天我能帮你做什么?’
接口是通的!恭喜,你已经成功地与 AI 完成了第一次对话!
仔细看回复,是不是很奇怪?里面有着 id、choices 这样的词。
其实,这就像一个包裹,AI 的回复内容被装在了好几层「盒子」里面。我们要一层一层地打开,才能看到最里面的回复内容。 completion 就是最外面的那个大「盒子」,我们需要先打开它。 接下来是 choices,"choices"的意思是「选择」,这里面装着几个备选的回复,但通常我们只需要第一个。
在 Python 里,我们用 [0] 来表示第一个。再打开 choices[0],我们会看到一个叫 message 的盒子。这里面装的就是 ChatGPT 的回复了,但还差一点点。 最后,message 里面还有一层叫 content 的盒子,打开它,我们就能看到 ChatGPT 的回复内容了。
所以,想要看到 ChatGPT 的回复,我们需要一步一步地「拆盒子」: completion → choices → [0] → message → content 在代码里,就是这样写: completion.choices[0].message.content。
现在,让我们把 print(completion) 改成 print(completion.choices[0].message.content) :
!pip install openai
from openai import OpenAI
client = OpenAI(
api_key="sk-yTmYibGsJ637VUkki2GZUzZ9vh7EWFEJ",
)
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "你好"}
])
print(completion.choices[0].message.content)
这时候再运行代码,你就能看到 ChatGPT 干净利落的回复了:
虽然这些"盒子"的名字看起来有点复杂,但你只需要记住用 completion.choices[0].message.content 就能打开最后一个"盒子",看到回复内容。 以后如果你在学习 Python 时遇到了类似的情况,不要害怕,就想象成在拆一个套娃,一层一层地打开,最后你就能得到你想要的结果了。
到这里,你已经学会使用 OpenAI API 了!
高级一点
如果每次提问,都要重复改代码,就太累了
所以,我们可以试试函数
函数是一段可以不断被复用的代码,给定输入后,就可以按逻辑给出输出,你可以把很多东西都封装成函数。
举个例子,给手游充值,就是一个函数。现在定义一个函数:充值(金额),输入一个金额后,就会返回对应的结果:
充值(0元),返回:「想一想,不充钱你会变得更强吗?」
充值(6元),返回:「想一想,就充这么一点,你会变得更强吗?」
充值(618元),返回:「想一想,再充一点,你就更强了」
充值(114514元),返回:「你真是个大冤种」
再来个,可放在代码里的例子,诗词填空:_______,从此君王不早朝
def poem(s):
print(f"{s},从此君王不早朝")
在这个代码里,把值放到 s 所在的位置,然后调用,它就会把你输入的内容+“从此君王不早朝”一并输出,比如:
poem("春宵苦短日高起")
poem("但使龙城飞将在")
poem("我为将军解战袍")
poem("鸡哥练习两年半")
则你会得到:
春宵苦短日高起,从此君王不早朝
但使龙城飞将在,从此君王不早朝
我为将军解战袍,从此君王不早朝
鸡哥练习两年半,从此君王不早朝
注意:这里说一些代码规范
def poem(s): 其中的 def 是定义函数的意思,poem 是函数名,s 是参数名。
def 是固定写法,别改
poem 和 s 你随便改,看你喜欢
print(f"{s},从此君王不早朝"):是函数的输出
在函数里,内容都要有一个缩进(我通常是打一个 tab)
print() 的括号是英文括号
f"{s},从此君王不早朝" 的意思是,将"{s},从此君王不早朝"中的{s}替换成 s 的值,比如替换成:鸡哥练习两年半
现在,让我们来用更正式的方式来重写上面的调用。
第一步,通过 pip 安装 openai 的库,并运行(因为,你并不需要每次运行代码前,都重新安装一遍环境):
!pip install openai
第二步,定义一个名为 ask 的函数,将之前的提问代码封装起来,然后运行,如:
from openai import OpenAI
client = OpenAI(
api_key="sk-yTmYibGsJ637VUkki2GZUzZ9vh7EWFEJ"
)
def ask(question):
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": f"{question}"}
])
print(completion.choices[0].message.content)
这里我问了 GPT-3.5 三个问题:
ask("陨石为什么总落在坑里?")
ask("ATM 机里一般有几个工作人员?")
ask("GPT-5 啥时候发布?")
运行后,得到了:
陨石总落在坑里是因为坑可以提供一定程度的保护和集中力量,有助于减轻陨石冲击时的压力和破坏力。此外,坑也可能会吸引和引导陨石朝向更集中的区域落下。因此,陨石在落下时通常会选择坑陷落。
通常情况下,ATM 机内部不需要工作人员驻守。ATM 机是自助式设备,用户可以直接在机器上进行各种操作,如取款、存款、转账等。不过ATM 机由银行或金融机构负责维护和监控,他们可能会派遣技术人员定期检查和维护机器。
目前还没有官方消息表明GPT-5什么时候发布。OpenAI可能会在未来一两年内发布GPT-5或其他技术升级版本,但具体时间表尚不清楚。建议关注OpenAI官方发布的消息以获取最新动态。
到这里,你已经足以用 OpenAI API 来处理各种日常工作了!
最后
如果你希望学习更多模型的调用,比如声音转文字、文字转图片,或者更加细致的定义处理风格(严谨还是更有创意的),可以参考 OpenAI 的官方文档。
文档地址:
https://platform.openai.com/docs/api-reference
接下来本大聪明还会「以实用为核心」,再更新一篇新手极其友好的「Python Cheat Sheet」,帮助大家温故知新。