news 2026/9/24 21:00:24

新手村任务:如何用Python调用大模型API,写出你的第一个AI对话脚本?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手村任务:如何用Python调用大模型API,写出你的第一个AI对话脚本?

想学AI应用开发,却不知道从何下手?不用怕,你不需要懂复杂的算法,也不需要昂贵的显卡。今天这篇“保姆级”教程,带你从零开始,用Python写出你的第一个AI对话脚本。包含完整代码、踩坑指南和流式输出优化,新手也能轻松跑通!

一、 写在前面:新手别慌,真的没那么难

很多想转行AI应用开发的新手,上来就被“微调”、“CUDA”、“Transformer”这些词吓退了。其实,AI应用开发本质上就是写代码调用别人已经训练好的“超级大脑”

你不需要训练模型,只需要学会:

  1. 注册一个提供大模型API的平台。
  2. 拿到一串API Key(钥匙)。
  3. 用Python发一个网络请求,把问题塞进去,把答案拿出来。

今天,我们就来完成这个“新手村任务”。准备好你的电脑(普通配置就行,不需要显卡),我们开始!

二、 准备工作(领取你的装备)

在开始写代码之前,我们需要准备两样东西:

1. Python环境

确保你的电脑上安装了Python(3.8以上版本)。在终端输入python --version检查。如果没有,去官网下载安装一下。

2. 获取大模型API Key(新手避坑重点!)

⚠️新手注意:很多教程让你直接去用OpenAI(GPT-4),但这需要海外信用卡和特殊的网络环境,对新手极度不友好。
强烈建议新手先使用国内的大模型平台,比如:DeepSeek(深度求索)、通义千问(Qwen)、智谱GLM。它们通常有免费额度,且注册简单。

DeepSeek为例(因为它的API完全兼容OpenAI格式,价格极便宜且注册简单):

  1. 搜索“DeepSeek 开放平台”并注册。
  2. 进入控制台,点击“API Keys”,创建一个新的Key。
  3. ⚠️ 千万不要把这个Key发给任何人,不要直接写在代码里上传到GitHub!(后面教你怎么安全存)。

三、 动手实操:从“能跑通”到“能聊天”

第一步:安装依赖库

打开你的终端(或者CMD),创建一个新的文件夹,然后输入以下命令安装我们需要的库:

pipinstallopenai python-dotenv

注:虽然很多国内模型不是OpenAI开发的,但为了行业通用,它们通常兼容OpenAI的SDK。

第二步:安全地配置你的API Key

在项目文件夹下新建一个文件,命名为.env,内容如下:

API_KEY=你的真实API_KEY填在这里 BASE_URL=https://api.deepseek.com

注:BASE_URL是模型平台的接口地址,不同平台不一样,去官网文档查一下即可。

第三步:写最基础的代码(非流式)

新建一个chat.py文件,粘贴以下代码:

# pip install openai python-dotenv# ========== 用到的库说明 ==========# os:Python 内置标准库,提供与操作系统交互的功能(如读写环境变量、路径处理)。# 本程序中只用它读取环境变量 os.getenv()。# openai:OpenAI 官方提供的 Python SDK(第三方库),用来调用兼容 OpenAI 接口的大模型 API。# 通过它可以用同样的代码访问 DeepSeek 等兼容 OpenAI 协议的服务。# python-dotenv:第三方库,用于把当前目录下 .env 文件中的键值对加载到环境变量中,# 这样代码就能用 os.getenv() 读到,避免把密钥写死在代码里。# OpenAI:openai 库中的客户端类,实例化后用来发送 API 请求。# load_dotenv:python-dotenv 提供的函数,执行后会读取当前目录下的 .env 文件。importos# 导入 os 模块,后续用它读取环境变量fromopenaiimportOpenAI# 从 openai 库中导入 OpenAI 客户端类fromdotenvimportload_dotenv# 从 python-dotenv 库中导入 load_dotenv 函数load_dotenv()# 调用 load_dotenv(),读取当前目录下的 .env 文件,把其中的 API_KEY、BASE_URL 注入环境变量client=OpenAI(# 创建一个 OpenAI 客户端实例 client,后续用它发起 API 请求api_key=os.getenv("API_KEY"),# os.getenv("API_KEY") 从环境变量读取名为 API_KEY 的值,作为鉴权密钥传入base_url=os.getenv("BASE_URL")# os.getenv("BASE_URL") 读取 API 基础地址,让请求发到对应服务器(这里指向 DeepSeek))response=client.chat.completions.create(# 调用"聊天补全"接口:client.chat.completions 是接口对象,create() 方法发起一次请求,返回结果存入 responsemodel="deepseek-flash",# model 指定使用哪个模型;deepseek-flash 为模型名messages=[# messages 是对话消息列表,必须是列表 [ ],每个元素是一条消息字典{"role":"user","content":"你好,请用一句话介绍你自己!"}# 一条消息:role="user" 表示这是用户角色说的话,content 是消息文本内容])print("AI回复:",response.choices[0].message.content)# 打印结果:response.choices 是模型返回的候选回复列表,[0] 取第一个候选,message 是该候选的消息对象,content 即文本内容

运行这个脚本,如果你在控制台看到了AI的回复,恭喜你,你已经迈出了AI应用开发的第一步!

四、 升级体验:加入“流式输出”(打字机效果)

上面的代码有个缺点:它要等AI全部想完,才一次性把结果打印出来,往往要等好几秒。
真正的AI应用(如ChatGPT),都是一个字一个字往外蹦的(流式输出)。我们怎么实现?

修改chat.py,加入stream=True

importosfromopenaiimportOpenAIfromdotenvimportload_dotenv load_dotenv()client=OpenAI(api_key=os.getenv("API_KEY"),base_url=os.getenv("BASE_URL"))print("AI正在思考中...")# 先打印一句提示语,让用户知道请求已发出、正在等待回复(纯体验,非必需)#开启流式输出response=client.chat.completions.create(# 与 chat.py 不同:因下面 stream=True,这里 response 不再是单个完整结果对象,而是一个“可迭代的数据块流”,要用 for 循环逐块接收model="deepseek-flash",# model 指定使用哪个模型;deepseek-flash 为模型名messages=[# messages 是对话消息列表,必须是列表 [ ],每个元素是一条消息字典{"role":"user","content":"请写一首关于程序员转行AI的诗。"}# 一条消息:role="user" 表示这是用户角色说的话,content 是消息文本内容],stream=True# 关键点:stream=True 开启流式输出;服务器边生成边把内容切成多个 chunk(数据块)陆续返回,而不是等全部生成完再一次性返回)forchunkinresponse:# for 遍历流式返回的 response,每次循环拿到一个 chunk(一个数据块),里面装着这一刻新增的一小段文本ifchunk.choices[0].delta.contentisnotNone:# chunk.choices[0].delta 是本块的“增量内容”(delta=增量,区别于 chat.py 里的 message 完整消息);流式开头/结尾的某些 chunk 的 content 为 None,需判空跳过print(chunk.choices[0].delta.content,end="",flush=True)# 打印这一小段:end="" 让 print 结尾不换行(默认 end="\n" 会换行),把每段紧挨着拼成完整文字;flush=True 立即刷新输出缓冲区,让字符实时显示,从而实现打字机效果

五、 终极形态:写一个能多轮对话的命令行聊天机器人

现在的AI是没有记忆的,你问一句它答一句。为了让AI记住上下文,我们需要把之前的对话记录也传给它。

新建chatbot.py

importosfromopenaiimportOpenAIfromdotenvimportload_dotenv load_dotenv()client=OpenAI(api_key=os.getenv("API_KEY"),base_url=os.getenv("BASE_URL"))# 初始化对话历史(包含系统设定)messages=[{"role":"system","content":"你是一个乐于助人的AI助手,说话要简短幽默。"}]print("🤖 聊天机器人已启动(输入 'quit' 退出)")whileTrue:user_input=input("\n你: ")ifuser_input.lower()=='quit':break# 1. 把用户的话加入历史messages.append({"role":"user","content":user_input})# 2. 请求AIresponse=client.chat.completions.create(model="deepseek-chat",messages=messages,stream=True)# 3. 打印AI回复并收集完整回复文本print("AI: ",end="")ai_reply=""forchunkinresponse:content=chunk.choices[0].delta.contentifcontent:print(content,end="",flush=True)ai_reply+=content# 4. 把AI的回复也加入历史,实现多轮记忆messages.append({"role":"assistant","content":ai_reply})print("\n对话结束,拜拜!")

六、 新手避坑指南(血泪总结)

  1. 报错AuthenticationError:大概率是API Key填错了,或者.env文件没读取到。检查Key前后有没有空格。
  2. 报错Connection error:检查网络,或者BASE_URL填错了。一定要去平台官方文档复制准确的地址。
  3. 千万别把Key硬编码在代码里:一定要用我上面教的dotenv方法,或者设置环境变量。一旦Key泄露,别人会瞬间刷爆你的余额。
  4. Token超限:大模型的记忆是有限的(比如128K)。多轮对话太久,历史记录太长,就会报错。解决方案是限制历史记录条数,或者对历史记录做摘要(这个我们以后讲)。

七、 总结与下一步计划

到这里,你已经成功用Python打通了“调用大模型API”的全链路。你学会了:
1.获取API Key并安全配置
2.安装SDK并发送请求
3实现流式打字机效果
4.用代码维护多轮对话记忆

下一步可以玩什么?

  • 进阶1:用FastAPI把这段代码包成接口,前端用Vue/React写个网页界面。
  • 进阶2:引入LangChain,给AI挂载一个“查天气”的工具,让它变成智能体(Agent)。
  • 进阶3:结合本地PDF文档,搭建一个RAG知识库问答系统。

如果你跟着做跑通了,欢迎在评论区留言“打卡”!遇到任何报错,也欢迎把错误截图发在评论区,我会尽力帮大家解答。点赞收藏,你的AI应用开发之路不迷路!


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 20:59:55

IDM下载原理与网络调度优化指南

1. 为什么IDM不是“下载快”那么简单——它本质是一套可调度的下载资源管理系统IDM,全称Internet Download Manager,很多人第一反应就是“比浏览器自带下载快”,但这个认知停留在表层。我用IDM超过八年,从Windows 7时代一路跟到Wi…

作者头像 李华
网站建设 2026/9/24 20:59:53

工业大模型实战:四层架构与三大关键技术落地指南

1. 这不是又一个“大模型”概念炒作,而是工厂里正在跑起来的工业神经中枢“工业大模型”这五个字最近在制造业技术会议、自动化展会和设备厂商白皮书里出现的频率,已经超过了“数字孪生”和“智能产线”——但绝大多数人听到这个词的第一反应是&#xff…

作者头像 李华
网站建设 2026/9/24 20:56:29

法律大模型微调实战:Qwen2.5-7B与LLaMA-Factory全流程指南

简介:这份资源面向自然语言处理入门与进阶开发者,聚焦大语言模型在垂直领域的微调实践,解决法律场景下模型理解专业术语与生成准确回答的问题。内容基于Qwen2.5-7B-Instruct架构,配合LLaMA-Factory框架,并使用DISC-Law…

作者头像 李华
网站建设 2026/9/24 20:55:36

Python GIL深度解析:全局解释器锁的原理、影响与绕开方案

面试的时候被问到“Python的GIL是什么”,很多人的第一反应是:“全局解释器锁,多线程没法利用多核。”这个回答不能说错,但它就像把一座冰山描述成“水面上那块白色物体”。GIL背后牵扯到CPython的内存管理模型、垃圾回收机制、多线…

作者头像 李华
网站建设 2026/9/24 20:54:31

C#与MySQL图书管理系统实战:sln解决方案、CRUD与事务避坑指南

简介:这份资源是面向计算机相关专业在校学生与教师的 C# 图书管理系统课程设计完整方案,基于 .Net Framework WinForm 与 MySQL 8.0.21 开发,适合作为期末大作业、课程设计或入门进阶练习。功能覆盖用户登录、图书入库与维护、权限管理、借书…

作者头像 李华
网站建设 2026/9/24 20:52:45

手机拍照+NeRF三维重建:从COLMAP到Python训练的完整落地指南

简介:这份资源面向计算机视觉、三维重建方向的学习者与毕业设计开发者,提供一套基于NeRF、用手机拍摄物体图片即可完成三维重建的Python工程。包内包含可本地编译运行的源码、配套数据集与文档说明,评审分达95分以上,难度适中&…

作者头像 李华