初识大模型:用 ChatGPT API 写出第一个对话程序
Words: 1137Read Time: 3 minLast edited: 2026-8-4
用了大半年 ChatGPT 网页版之后,我终于忍不住想把它接到自己的程序里。起因很小:我在服务器上跑了个定时脚本,想让它每天把一段日志总结成人话发给我。网页版干不了这事,得上 API。
准备工作:账号、Key 和 SDK
先交代背景:我主栈是 .NET/C#,Python 属于现学现卖。好在 OpenAI 官方文档和网上的例子绝大多数是 Python,跟着走最省事。
第一件事是搞清楚:API 和 ChatGPT 网页版是两套体系。Plus 会员那 20 美元是网页版的订阅费,API 调用另外按量计费,得去 platform.openai.com 单独注册、绑支付方式。我先充了 5 美元试水,事实证明写小 demo 根本花不完。
注册完在后台建一个 API Key。注意这串 key 只在创建时完整显示一次,之后只能看到前几位,得马上存好。还有一条铁律:key 不要写死在代码里,更不要提交到 git。GitHub 上有扫描器专门盯着泄露的 key,一泄露账单分分钟爆炸。标准做法是放环境变量:
pip install openai 装的是官方 SDK。提醒一句,1.x 版本的写法和老教程里的 openai.ChatCompletion.create 完全不一样,搜资料时注意甄别,2023 年之前的老文章基本可以跳过。messages 数组:理解三种角色
调用 API 的核心就是一个 messages 数组,每条消息带一个 role:
system:系统提示,给模型立人设、定规矩。用户看不见,但每次都生效。
user:用户说的话。
assistant:模型之前的回复。
这里有个关键认知:API 本身是无状态的。它不像网页版那样记得你上次说了什么,每轮对话都要把历史消息原样带上。所谓多轮对话,其实就是你自己维护一个数组,每次把新消息追加进去,再整体发过去。模型并没有"记性",它只是每轮都把你们的聊天记录重新读了一遍。
动手:命令行多轮对话
明白了原理,代码就很直白,二十来行:
跑起来的效果:输入内容回车,模型回复,历史自动累积,输入 exit 退出。第一次看到自己程序里的模型"记得"我上一轮说的话,还是挺有成就感的——虽然知道它只是把整个数组又读了一遍。
temperature 与账单:两个要注意的地方
temperature 控制输出的随机程度,范围 0 到 2。调低(比如 0.2)回答更确定、更保守,适合提取、分类这类有标准答案的任务;调高更发散,适合头脑风暴。日常对话 0.7 左右比较均衡。我做日志总结时就踩过坑:temperature 用默认值 1 的时候,同一段日志两次总结的措辞差很多,调到 0.3 就稳定了。计费上也要心里有数:
- 输入和输出都收费,输出更贵。以 gpt-3.5-turbo 为例,输入每百万 token 0.5 美元,输出 1.5 美元。
- 一个汉字大概占 1~2 个 token,比英文费 token。
- 多轮对话有个隐藏成本:历史消息每轮都重新计费。聊得越久单轮越贵,所以生产环境一定要限制历史长度,比如只保留最近 10 轮,或者直接粗暴截断。
5 美元跑了一周 demo,账单显示花了不到 2 美分。真正烧钱的是把它丢给真实用户随便用——那是后话了。
Loading...