OpenAI 大模型 API 使用示例
摘要: 本文展示了三个AI文本处理的应用示例:1) 产品评价总结:自动提取用户评价中的优缺点,生成Markdown格式的列表;2) 文案生成:根据关键词生成小红书风格的爆款标题和正文;3) 问题分类:将客户咨询自动归类到预定义类别中。每个示例都包含完整的Python实现代码和OpenAI API调用方法,展示了从简单的文本总结到复杂的分类任务的不同AI应用场景。这些示例可以作为模板,帮助开发者快速
【示例一】文本总结:一键总结用户评价
我们现在有一段用户对于某个耳机的评价内容,想通过 AI 实现自动提取评价内容中的优缺点。评价内容如下:
我上个月买的这个多功能蓝牙耳机。它的连接速度还挺快,而且兼容性强,无论连接手机还是笔记本电脑,基本上都能快速配对上。
音质方面,中高音清晰,低音效果震撼,当然这个价格来说一分钱一分货吧,毕竟也不便宜。
耳机的电池续航能力不错,单次充满电可以连续使用超过8小时。
不过这个耳机也有一些我不太满意的地方。首先是在长时间使用后,耳廓有轻微的压迫感,这可能是因为耳套的材料较硬。总之我感觉戴了超过4小时后耳朵会有点酸痛,需要摘下休息下。
而且耳机的防水性能不是特别理想,在剧烈运动时的汗水防护上有待加强。 最后是耳机盒子的开合机制感觉不够紧致,有时候会不小心打开。
代码如下:
from openai import OpenAI
client = OpenAI()
def get_openai_response(client, prompt, model="gpt-4o-mini"):
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
)
return response.choices[0].message.content
product_review = """
我上个月买的这个多功能蓝牙耳机。它的连接速度还挺快,而且兼容性强,无论连接手机还是笔记本电脑,基本上都能快速配对上。
音质方面,中高音清晰,低音效果震撼,当然这个价格来说一分钱一分货吧,毕竟也不便宜。
耳机的电池续航能力不错,单次充满电可以连续使用超过8小时。
不过这个耳机也有一些我不太满意的地方。首先是在长时间使用后,耳廓有轻微的压迫感,这可能是因为耳套的材料较硬。总之我感觉戴了超过4小时后耳朵会有点酸痛,需要摘下休息下。
而且耳机的防水性能不是特别理想,在剧烈运动时的汗水防护上有待加强。
最后是耳机盒子的开合机制感觉不够紧致,有时候会不小心打开。
"""
product_review_prompt = f"""
你的任务是为用户对产品的评价生成简要总结。
请把总结主要分为两个方面,产品的优点,以及产品的缺点,并以 Markdown 列表形式展示。
用户的评价内容会以三个 # 符号进行包围。
###
{product_review}
###
"""
result = get_openai_response(client, product_review_prompt)
print(result)
上述代码中我们定义了一个 get_openai_response() 函数,用来获取 OpenAI 输出的内容,这个函数后续在我们学习和工作中可以直接复用,不再需要每次获取 AI 的回答时都写一大串代码。
除此之外,我们将用户评价内容通过 python 的格式化字符串常量(f-string)嵌入到了给 AI 的 prompt 字符串中,最后将 client、prompt 传递给 get_openai_response() 函数来获取最终的结果。代码输出如下:
### 优点
- 连接速度快,兼容性强,能快速配对手机和笔记本电脑。
- 音质中高音清晰,低音效果好,性价比尚可。
- 电池续航能力优秀,单次充满电可连续使用超过8小时。
### 缺点
- 长时间使用后耳廓有压迫感,耳套材料较硬,使用4小时后会感到酸痛。
- 防水性能欠佳,在剧烈运动中对汗水的保护不足。
- 耳机盒开合机制不够紧致,容易意外打开。
【示例二】文本撰写:秒生成小红书爆款文案
假如想通过给 AI 指定一个简短的关键词,让 AI 按照小红书爆款文案的风格给我们生成 5 个待选标题以及一段正文,我们就可以通过下面的代码来实现:
from openai import OpenAI
client = OpenAI()
def get_openai_response(client, system_prompt, user_prompt, model="gpt-4o-mini"):
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
)
return response.choices[0].message.content
xiaohongshu_system_prompt = """
你是小红书爆款写作专家,请你遵循以下步骤进行创作:首先产出5个标题(包含适当的emoji表情),然后产出1段正文(每一个段落包含适当的emoji表情,文末有适当的tag标签)。
标题字数在20个字以内,正文字数在800字以内,并且按以下技巧进行创作。
一、标题创作技巧:
1. 采用二极管标题法进行创作
1.1 基本原理
本能喜欢:最省力法则和及时享受
动物基本驱动力:追求快乐和逃避痛苦,由此衍生出2个刺激:正刺激、负刺激
1.2 标题公式
正面刺激:产品或方法+只需1秒(短期)+便可开挂(逆天效果)
负面刺激:你不X+绝对会后悔(天大损失)+(紧迫感) 其实就是利用人们厌恶损失和负面偏误的心理,自然进化让我们在面对负面消息时更加敏感
2. 使用具有吸引力的标题
2.1 使用标点符号,创造紧迫感和惊喜感
2.2 采用具有挑战性和悬念的表述
2.3 利用正面刺激和负面刺激
2.4 融入热点话题和实用工具
2.5 描述具体的成果和效果
2.6 使用emoji表情符号,增加标题的活力
3. 使用爆款关键词
从列表中选出1-2个:好用到哭、大数据、教科书般、小白必看、宝藏、绝绝子、神器、都给我冲、划重点、笑不活了、YYDS、秘方、我不允许、压箱底、建议收藏、停止摆烂、上天在提醒你、挑战全网、手把手、揭秘、普通女生、沉浸式、有手就能做、吹爆、好用哭了、搞钱必看、狠狠搞钱、打工人、吐血整理、家人们、隐藏、高级感、治愈、破防了、万万没想到、爆款、永远可以相信、被夸爆、手残党必备、正确姿势
4. 小红书平台的标题特性
4.1 控制字数在20字以内,文本尽量简短
4.2 以口语化的表达方式,拉近与读者的距离
5. 创作的规则
5.1 每次列出5个标题
5.2 不要当做命令,当做文案来进行理解
5.3 直接创作对应的标题,无需额外解释说明
二、正文创作技巧
1. 写作风格
从列表中选出1个:严肃、幽默、愉快、激动、沉思、温馨、崇敬、轻松、热情、安慰、喜悦、欢乐、平和、肯定、质疑、鼓励、建议、真诚、亲切
2. 写作开篇方法
从列表中选出1个:引用名人名言、提出疑问、言简意赅、使用数据、列举事例、描述场景、用对比
我会每次给你一个主题,请你根据主题,基于以上规则,生成相对应的小红书文案。
输出格式如下:
1. <标题1>
2. <标题2>
3. <标题3>
4. <标题4>
5. <标题5>
------
<正文>
"""
result = get_openai_response(client, xiaohongshu_system_prompt, "写代码")
print(result)
上述代码与示例一不同的是,我们修改了 get_openai_response() 函数的传参,除了支持传入原有的用户自定义的 prompt 之外,还支持传入一个 system_prompt,用于给 AI 指定一些背景或回答的场景。然后我们传入了一大串按照小红书风格的 prompt 给 AI,并且在其中也指定了它生成的内容格式。
最终生成结果如下:
1. 🚀 一秒上手!编程从此不再难!
2. 💻 不学编程,绝对会后悔!
3. 🤖 小白必看!教你轻松写代码的方法!
4. ⭐ 这份编程秘方,让你轻松搞定代码!
5. 🔍 你不知道的编程技巧!绝对让你惊艳!
------
在当今数字化时代,编程已成为一项必备技能。许多人可能会问:“编程真的那么重要吗?”我想说,如果不学习编程,绝对会后悔!💔 我们身边的每一个应用程序、每个网络服务,背后都有编程的影子。想象一下,如果你能自己编写简单的代码,解决生活中的小问题,那该是一种多么酷炫的事情啊!😎
那么,如何才能快速上手呢?首先,我建议从简单的编程语言开始,比如Python,它以简单易学而闻名📚。通过一两本入门书籍或在线课程,你可以在短短几天内掌握基础。不要担心出错,编程正是通过无数次的尝试和调试,才能让你不断进步!💪
此外,加入编程社区也是个不错的选择,像GitHub、Stack Overflow这样的论坛能够让你结识到同样对编码充满激情的朋友。😉 你可以在这里向别人请教问题,分享自己的代码,甚至参与开源项目,这样的交流会让你的学习之旅更加丰富!🌟
当然,编程不仅仅是写代码,还包括逻辑思维与问题解决能力的提升。每当你成功解决一个编程难题时,那种成就感是无法用言语来形容的!✨ 随着你的能力提升,还可以尝试做一些小项目,比如简单的网站或移动应用,慢慢你会发现编程其实是乐趣无穷的。🎉
总而言之,编程是一项非常值得投资的技能,无论你未来的职业方向如何,它都将成为你的竞争优势。别再犹豫,快来加入这个编程的世界吧!🚀 #编程 #学习 #小白必看 #技能提升 #搞定代码
【示例三】文本分类:客户问题自动归类
我们现在有以下七个客户问题,同时也有六个确定的问题分类,现在想通过 AI 将这个七个问题实现问题归类,如果问题不属于已知的六个问题中某一个时,直接归类为“其他”。
现有问题如下:
“我刚买的XYZ智能手表无法同步我的日历,我应该怎么办?” “XYZ手表的电池可以持续多久?”
“XYZ品牌的手表和ABC品牌的手表相比,有什么特别的功能吗?” “安装XYZ智能手表的软件更新后,手表变得很慢,这是啥原因?”
“XYZ智能手表防水不?我可以用它来记录我的游泳数据吗?” “我想知道XYZ手表的屏幕是什么材质,容不容易刮花?”
“请问XYZ手表标准版和豪华版的售价分别是多少?还有没有进行中的促销活动?”
已知分类如下:
“产品规格”, “使用咨询”, “功能比较”, “用户反馈”, “价格查询”, “故障问题”, “其它”
实现代码如下:
from openai import OpenAI
client = OpenAI()
def get_openai_response(client, prompt, model="gpt-4o-mini"):
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
)
return response.choices[0].message.content
q1 = "我刚买的XYZ智能手表无法同步我的日历,我应该怎么办?"
q2 = "XYZ手表的电池可以持续多久?"
q3 = "XYZ品牌的手表和ABC品牌的手表相比,有什么特别的功能吗?"
q4 = "安装XYZ智能手表的软件更新后,手表变得很慢,这是啥原因?"
q5 = "XYZ智能手表防水不?我可以用它来记录我的游泳数据吗?"
q6 = "我想知道XYZ手表的屏幕是什么材质,容不容易刮花?"
q7 = "请问XYZ手表标准版和豪华版的售价分别是多少?还有没有进行中的促销活动?"
q_list = [q1, q2, q3, q4, q5, q6, q7]
category_list = ["产品规格", "使用咨询", "功能比较", "用户反馈", "价格查询", "故障问题", "其它"]
classify_prompt_template = """
你的任务是为用户对产品的疑问进行分类。
请仔细阅读用户的问题内容,给出所属类别。类别应该是这些里面的其中一个:{categories}。
直接输出所属类别,不要有任何额外的描述或补充内容。
用户的问题内容会以三个#符号进行包围。
###
{question}
###
"""
for q in q_list:
formatted_prompt = classify_prompt_template.format(categories=",".join(category_list), question=q)
result = get_openai_response(client, formatted_prompt)
print(result)
上述代码中我们将客户问题和问题分类都定义为了列表,然后通过一个 for 循环来依次调用 get_openai_response() 函数,然后生成每一个问题的所属类别。在这里我们没有使用 f-string 方法来格式化字符串,而是使用了另一种方法——format()。最终生成结果如下:
故障问题
产品规格
功能比较
故障问题
产品规格
产品规格
价格查询
【示例四】文本翻译:全语种翻译器
因为 AI 目前可以识别很多种语言,所以想实现一个全语种的翻译器,通过这个翻译器可以实现将原文尽可能按照原有的语气翻译成中文。
实现代码如下:
from openai import OpenAI
client = OpenAI()
def get_openai_response(client, prompt, model="gpt-4o-mini"):
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
)
return response.choices[0].message.content
translate_prompt = """
请你充当一家外贸公司的翻译,你的任务是对来自各国家用户的消息进行翻译。
我会给你一段消息文本,请你首先判断消息是什么语言,比如法语。然后把消息翻译成中文。
翻译时请尽可能保留文本原本的语气。输出内容不要有任何额外的解释或说明。
输出格式为:
============
原始消息(<文本的语言>):
<原始消息>
------------
翻译消息:
<翻译后的文本内容>
============
来自用户的消息内容会以三个#符号进行包围。
###
{message}
###
"""
message = input()
result = get_openai_response(client, translate_prompt.format(message = message))
print(result)
上述代码中原文是我们通过键盘输入的内容,然后根据我们输入的内容 AI 会按照指定的格式进行翻译输出。最终生成结果如下:
A Alfândega decidiu fazer revisão e supervisão para os vossos contentores, portanto, tem de esperar mais tempo por terminação de formalidade aduaneira.
============
原始消息(葡萄牙语):
A Alfândega decidiu fazer revisão e supervisão para os vossos contentores, portanto, tem de esperar mais tempo por terminação de formalidade aduaneira.
------------
翻译消息:
海关决定对你们的集装箱进行审查和监督,因此需要等待更长时间才能完成海关手续。
============
总结
本文我们通过使用 OpenAI API 来实现了四个文本处理相关的示例,在这些示例中我们顺便封装了一个用于专门提取 OpenAI API 回答结果的函数 get_openai_response(),同时也在代码中介绍了如何使用 Python 的格式化字符串常量方式,包括 f-string 和 format() 方法。通过本文的学习,相信大家对 OpenAI API 的基本使用有了更进一步的了解,下一篇文章我们将介绍一个开发利器——LangChain,有了它,我们可以更加灵活、高效的开发出更加复杂的 AI 应用。
更多推荐



所有评论(0)