重新定义性价比!人工智能AI聊天ChatGPT新接口模型gpt-3.5-turbo闪电更新,成本降90%,Python3.10接入

重新,定义,性价比,人工智能,ai,聊天,chatgpt,接口,模型,gpt,turbo,闪电,更新,成本,python3,接入 · 浏览次数 : 2216

小编点评

## North Song Poet's Spring Rhapsody The wind whispers secrets, caressing the petals of the Cherry Blossoms, painting them with the vibrant colors of spring. Birds dance in the meadow, graceful and proud, their wings shimmering like the reflection of the rising sun. Flowers sway in the gentle breeze, each petal a fleeting poem of beauty. Spring's embrace paints the world in a symphony of vibrant hues, a testament to the boundless beauty that unfolds. The wind whispers secrets, caressing the petals of the Cherry Blossoms, painting them with the vibrant colors of spring. Birds dance in the meadow, graceful and proud, their wings shimmering like the reflection of the rising sun. Flowers sway in the gentle breeze, each petal a fleeting poem of beauty. The wind whispers secrets, caressing the petals of the Cherry Blossoms, painting them with the vibrant colors of spring. This is the rhythm of North Song poetry, a timeless ode to the beauty and grace of life, forever echoing in the hearts of the people.

正文

北国春迟,春寒料峭略带阴霾,但ChatGPT新接口模型gpt-3.5-turbo的更新为我们带来了一丝暖意,使用成本更加亲民,比高端产品ChatGPT Plus更实惠也更方便,毕竟ChatGPT Plus依然是通过网页端来输出,Api接口是以token的数量来计算价格的,0.002刀每1000个token,token可以理解为字数,说白了就是每1000个字合0.01381人民币,以ChatGPT无与伦比的产品力而言,如此低的使用成本让所有市面上其他所有类ChatGPT产品都黯然失光。

本次让我们使用Python3.10光速接入ChatGPT API的新模型gpt-3.5-turbo。

OpenAI库的SDK方式接入

OpenAI官方同步更新了接口Api的三方库openai,版本为0.27.0,如果要使用新的模型gpt-3.5-turbo,就必须同步安装最新版本:

pip3 install openai==0.27.0

随后建立chat.py文件:

import openai  
  
openai.api_key = "openai的接口apikey"   
  
completion = openai.ChatCompletion.create(  
  model="gpt-3.5-turbo",   
  messages=[{"role": "user", "content": "北国风光,千里冰封,万里雪飘,请接着续写,使用沁园春的词牌"}]  
)  
  
print(completion["choices"][0]["message"]["content"])

程序返回:

瑶池冰缘,雪舞凄美, 隔窗寒意,似乎钻进衣袖。  
寒塘渡鸭,雪中梅影, 孤独是一片银白的姿态。  
冰雪如花,开放在草莓园里, 可爱的雪人,瑟瑟发抖着欢呼。  
北风凛冽,寒暄难挡, 四季明媚,但冬日尤甜美。  
千里冰封,万里雪飘, 窗外天下壮观,此时正是京城美。

闪电般秒回,让用惯了ChatGPT网页端的我们几乎不能适应。

gpt-3.5-turbo,对得起turbo的加成,带涡轮的ChatGPT就是不一样。

ChatGPT聊天上下文

我们知道ChatGPT的最大特色就是可以联系语境中的上下文,换句话说,ChatGPT可以根据之前的回答来优化之后的回答,形成上下文关系,让人机对话更加连贯和富有逻辑性。

这里取决于输入参数中的role参数,每一个role的取值,对应的场景不一样,其中system用于在对话开始时给ChatGPT一个指示或声明,有点像引导词,使得后续的回答更具有个性化和专业化。user是用于给用户提问的或者说是用来给用户输入引导词的。assistant顾名思义,是用于输入ChatGPT的回答内容:

import openai  
  
openai.api_key = "apikey"   
  
  
class ChatGPT:  
    def __init__(self,chat_list=[]) -> None:  
        # 初始化对话列表  
        self.chat_list = []  
      
    # 显示接口返回  
    def show_conversation(self,msg_list):  
        for msg in msg_list:  
            if msg['role'] == 'user':  
                print(f"Me: {msg['content']}\n")  
            else:  
                print(f"ChatGPT: {msg['content']}\n")  
  
    # 提示chatgpt  
    def ask(self,prompt):  
        self.chat_list.append({"role":"user","content":prompt})  
        response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=self.chat_list)  
        answer = response.choices[0].message['content']  
        # 添加历史对话,形成上下文关系  
        self.chat_list.append({"role":"assistant","content":answer})  
        self.show_conversation(self.chat_list)

这里每一次会话都会加入chat_list的聊天列表,角色为assistant,为了让ChatGPT分析上下文,下面开始测试:

if __name__ == '__main__':  
  
    chat = ChatGPT()  
  
    chat.ask("你是一位南宋词人,词风婉约,有点类似李清照女士,请使用蝶恋花词牌描写北国春光")

程序返回:

Me: 你是一位南宋词人,词风婉约,有点类似李清照女士,请使用蝶恋花词牌描写北国春光  
  
ChatGPT: 北国春光,清冽宜人。望眼欲穿的远山如翠起伏,遥远而缥缈。层层叠叠的林木,新绿徜徉,婆娑摇曳。风儿吹起,沁人心脾,点点梅花飘至,宛如仙境。  
  
花间蝶恋,春色满园。莺莺燕燕,鸟鸣花落,时时惹人遐思。碧空万里,蓝天白云,彩云飘飘,缤纷夺目。柳絮飘飘,轻羽翩翩,小河潺潺,流水声声,婉转动人。  
  
清风拂面,落英缤纷。听着草虫唱起,充满阳光的气息,轻轻飘荡,仿佛一条无形的小河,展开春天的美好,留下美好的记忆。人间万象,却只有这春色无边,似乎奔向远方的快乐。

此时再次发问:

chat.ask("请使用另外一种粗狂阳刚的风格再写一遍上面的词")

程序返回:

Me: 请使用另外一种粗狂阳刚的风格再写一遍上面的词  
  
ChatGPT: 北国春光,不柔不媚,金色的阳光照在地上,充满了男子气概。  
草原上风吹不断,那些疯狂的野花,在春风中舞蹈。  
看!那些猛禽静静地盘旋在高空,监视着整片草原,威武雄壮。  
花丛间,一只雄性蜂鹰跃跃欲飞,看上去仿佛要冲破天际。  
这里的春天有时带着风沙,但这并不能阻止狂放豪迈的草原奔腾前行,而这样的北国春光,怎会轻易被遗忘!

虽然内容有些尬,但确实联系了上下文。

需要注意的是,token不仅计算ChatGPT的接口返回内容,也会计算用户的发送内容,token的计算方法不是简单的一词一个,例如中文输入,一个中文汉字占2个字节数,而对于一次中文测试中,50个汉字被算为100个tokens,差不多是英文的一倍,而token还计算api发送中的角色字段,如果像上文一样实现上下文操作,就必须发送ChatGPT接口返回的历史聊天列表,这意味着ChatGPT上下文聊天的成本并不是我们想象中的那么低,需要谨慎使用。

原生ChatGPT接口异步访问

除了官方的SDK,新接口模型也支持原生的Http请求方式,比如使用requests库:

pip3 install requests

直接请求openai官方接口:

import requests  
h = {  
    'Content-Type': 'application/json',  
    'Authorization': 'Bearer apikey'  
}  
d = {  
    "model": "gpt-3.5-turbo",  
    "messages":[{"role": "user", "content": "请解释同步请求和异步请求的区别"}],  
    "max_tokens": 100,  
    "temperature": 0  
}  
u = 'https://api.openai.com/v1/chat/completions'  
r = requests.post(url=u, headers=h, json=d).json()  
print(r)

程序返回:

{'id': 'chatcmpl-6qDNQ9O4hZPDT1Ju902coxypjO0mY',   
'object': 'chat.completion',   
'created': 1677902496, 'model': 'gpt-3.5-turbo-0301',   
'usage': {'prompt_tokens': 20, 'completion_tokens': 100, 'total_tokens': 120},   
'choices': [{'message':   
{'role': 'assistant',   
'content': '\n\n同步请求和异步请求是指在客户端向服务器发送请求时,客户端等待服务器响应的方式不同。\n\n同步请求是指客户端发送请求后,必须等待服务器响应后才能继续执行后续的代码。在等待服务器响应的过程中,客户端的界面会被阻塞,用户无法进行'},   
'finish_reason': 'length', 'index': 0}]}

ChatGPT原生接口也支持异步方式请求,这里使用httpx:

pip3 install httpx

编写异步请求:

h = {  
    'Content-Type': 'application/json',  
    'Authorization': 'Bearer apikey'  
}  
d = {  
    "model": "gpt-3.5-turbo",  
    "messages":[{"role": "user", "content": "请解释同步请求和异步请求的区别"}],  
    "max_tokens": 100,  
    "temperature": 0  
}  
u = 'https://api.openai.com/v1/chat/completions'  
  
import asyncio  
import httpx  
  
async def main():  
    async with httpx.AsyncClient() as client:  
        resp = await client.post(url=u, headers=h, json=d)  
        result = resp.json()  
        print(result)  
  
asyncio.run(main())

程序返回:

{'id': 'chatcmpl-6qDNQ9O4hZPDT1Ju902coxypjO0mY',   
'object': 'chat.completion',   
'created': 1677902496, 'model': 'gpt-3.5-turbo-0301',   
'usage': {'prompt_tokens': 20, 'completion_tokens': 100, 'total_tokens': 120},   
'choices': [{'message':   
{'role': 'assistant',   
'content': '\n\n同步请求和异步请求是指在客户端向服务器发送请求时,客户端等待服务器响应的方式不同。\n\n同步请求是指客户端发送请求后,必须等待服务器响应后才能继续执行后续的代码。在等待服务器响应的过程中,客户端的界面会被阻塞,用户无法进行'},   
'finish_reason': 'length', 'index': 0}]}

我们也可以将异步请求方式封装到对话类中,完整代码:

import openai  
import asyncio  
import httpx  
  
openai.api_key = "apikey"   
  
h = {  
    'Content-Type': 'application/json',  
    'Authorization': f'Bearer {openai.api_key}'  
}  
d = {  
    "model": "gpt-3.5-turbo",  
    "messages":[{"role": "user", "content": "请解释同步请求和异步请求的区别"}],  
    "max_tokens": 100,  
    "temperature": 0  
}  
u = 'https://api.openai.com/v1/chat/completions'  
  
  
class ChatGPT:  
    def __init__(self,chat_list=[]) -> None:  
        # 初始化对话列表  
        self.chat_list = []  
  
    # 异步访问  
    async def ask_async(self,prompt):  
  
        d["messages"][0]["content"] = prompt  
        async with httpx.AsyncClient() as client:  
            resp = await client.post(url=u, headers=h, json=d)  
            result = resp.json()  
            print(result)  
  
      
    # 显示接口返回  
    def show_conversation(self,msg_list):  
        for msg in msg_list:  
            if msg['role'] == 'user':  
                print(f"Me: {msg['content']}\n")  
            else:  
                print(f"ChatGPT: {msg['content']}\n")  
  
    # 提示chatgpt  
    def ask(self,prompt):  
        self.chat_list.append({"role":"user","content":prompt})  
        response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=self.chat_list)  
        answer = response.choices[0].message['content']  
        # 添加历史对话,形成上下文关系  
        self.chat_list.append({"role":"assistant","content":answer})  
        self.show_conversation(self.chat_list)  
  
  
if __name__ == '__main__':  
  
    chat = ChatGPT()  
  
    chat.ask("你是一位南宋词人,词风婉约,有点类似李清照女士,请使用蝶恋花词牌描写北国春光")  
  
    chat.ask("请使用另外一种粗狂阳刚的风格再写一遍上面的词")  
  
    asyncio.run(chat.ask_async("请解释同步请求接口和异步请求接口的区别"))

结语

低成本ChatGPT接口模型gpt-3.5-turbo更容易接入三方的客户端,比如微信、QQ、钉钉群之类,比起ChatGPT网页端,ChatGPT接口的响应速度更加迅速且稳定,ChatGPT,永远的神,没有之一,且不可替代,最后奉上异步上下文封装项目,与君共觞:github.com/zcxey2911/chatgpt_api_Contextual_async

与重新定义性价比!人工智能AI聊天ChatGPT新接口模型gpt-3.5-turbo闪电更新,成本降90%,Python3.10接入相似的内容:

重新定义性价比!人工智能AI聊天ChatGPT新接口模型gpt-3.5-turbo闪电更新,成本降90%,Python3.10接入

北国春迟,春寒料峭略带阴霾,但ChatGPT新接口模型gpt-3.5-turbo的更新为我们带来了一丝暖意,使用成本更加亲民,比高端产品ChatGPT Plus更实惠也更方便,毕竟ChatGPT Plus依然是通过网页端来输出,Api接口是以token的数量来计算价格的,0.002刀每1000个token,token可以理解为字数,说白了就是每1000个字合0.01381人民币,以ChatGPT无

[转帖]BPF的可移植性和CO-RE (Compile Once – Run Everywhere)

https://www.cnblogs.com/charlieroro/p/14206214.html 在上一篇文章中介绍了提高socket性能的几个socket选项,其中给出了几个源于内核源码树中的例子,如果选择使用内核树中的Makefile进行编译的话,可能会出现与本地头文件冲突的情况,如重复定

带你掌握数仓的作业级监控TopSQL

摘要:目前TopSQL功能被用户广泛使用,是性能定位、劣化分析、审计回溯等重要的基石,为用户提供覆盖内存、耗时、IO、网络、空间等多方面的监控能力。 本文分享自华为云社区《GaussDB(DWS)监控工具指南(一)作业级监控TopSQL》,作者:幕后小黑爪 。 1、引言: 监控系统是智能化管理和自动

[转帖]性能调优——小小的log大大的坑

https://segmentfault.com/a/1190000042434642 引言 “只有被线上服务问题毒打过的人才明白日志有多重要!”我先说结论,谁赞成,谁反对?如果你深有同感,那恭喜你是个社会人了:) 日志对程序的重要性不言而喻,轻巧、简单、无需费脑,程序代码中随处可见,帮助我们排查定

GaussDB(DWS)性能调优:indexscan导致的性能问题识别与优化

摘要:通常跑批加工场景下,都是大数量做关联操作,通常不建议使用索引。有些时候因为计划误判导致使用索引的可能会导致严重的性能问题。本文从一个典型的索引导致性能的场景重发,剖析此类问题的特征,定位方法和解决方法 本文分享自华为云社区《GaussDB(DWS)性能调优:indexscan导致的性能问题识别

【Playwright+Python】系列教程(五)元素定位

一、常见元素定位 定位器是 Playwright 自动等待和重试能力的核心部分。简而言之,定位器代表了一种随时在页面上查找元素的方法,以下是常用的内置定位器。 1、按角色定位 按显式和隐式可访问性属性进行定位 语法:page.get_by_role() Dom结构示例1: 示例代码1: page.g

数据库系列:MySQL慢查询分析和性能优化

1 背景 我们的业务服务随着功能规模扩大,用户量扩增,流量的不断的增长,经常会遇到一个问题,就是数据存储服务响应变慢。 导致数据库服务变慢的诱因很多,而RD最重要的工作之一就是找到问题并解决问题。 下面以MySQL为例子,我们从几个角度分析可能产生原因,并讨论解决的方案。 2 定位慢查询的原因并优化

记Codes 重新定义 SaaS模式开源免费研发项目管理平台——多事项闭环迭代的创新实现

市面上老一点的项目管理工具迭代下只含任务,其他一些新的项目管理工具迭代下包含了需求、任务和缺陷。迭代下只包含任务显然很不合理;只有需求、任务和缺陷,也是有问题的。且看文中详解。。。。。。

零拷贝并非万能解决方案:重新定义数据传输的效率极限

本文讨论了零拷贝在优化数据传输效率方面的局限性。尽管零拷贝技术在减少数据传输过程中的内存拷贝次数方面有很大的优势,但它并非适用于所有情况。文章介绍了一些其他的优化方法,如异步I/O和直接I/O的组合、根据文件大小选择不同的优化方式。至此,我们的计算机基础专栏就结束了,不知道大家有没有发现,操作系统底层提供了丰富的解决方案来支持应用程序的复杂性和可扩展性。对于任何工作中遇到的问题,我们都可以从操作系统的角度寻找解决方法。

【转帖】ChatGPT重塑Windows!微软王炸更新:操作系统全面接入,Bing也能用插件了

https://cloud.tencent.com/developer/article/2291078?areaSource=&traceId= 金磊 丰色 西风 发自 凹非寺 量子位 | 公众号 QbitAI 一夜之间,微软彻底重新定义了PC交互。 因为这一次,它把Bing和ChatGPT插件的能