社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

极简 Python:10分钟会用 OpenAI / Kimi API

赛博禅心 • 9 月前 • 252 次点击  

背景

之前写了一份:写给不会代码的你: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


对于其他用户...你自己看着找吧



01
 复制代码

如果你是 OpenAI 的用户,请将下面的代码复制进 Colab:

!pip install openaifrom 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 openaifrom 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 的值。

02
 执行代码

选择代码单元格,点击左侧的“运行”按钮或快捷键 Ctrl + Enter,开始运行代码。 

刚开始运行时,Colab 会安装 OpenAI 库,可能需要几十秒,并输出类似这样的内容:


安装完成后,你会看到回复被打印出来,类似这样:


仔细看这里的中文部分:‘你好!今天我能帮你做什么?’

接口是通的!恭喜你已经成功地与 AI 完成了第一次对话!

03
 获取回复内容

仔细看回复,是不是很奇怪?里面有着 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 openaifrom 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 了!


高级一点

如果每次提问,都要重复改代码,就太累了

所以,我们可以试试函数


01
 函数是啥

函数是一段可以不断被复用的代码,给定输入后,就可以按逻辑给出输出,你可以把很多东西都封装成函数。

举个例子,给手游充值,就是一个函数。现在定义一个函数:充值(金额),输入一个金额后,就会返回对应的结果:

  • 充值(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 的值,比如替换成:鸡哥练习两年半

02
 封装提问

现在,让我们来用更正式的方式来重写上面的调用。


第一步,通过 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」,帮助大家温故知新。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/169549
 
252 次点击