首页 > 编程语言 >nb python 语法

nb python 语法

时间:2024-08-02 10:31:59浏览次数:7  
标签:content python nb messages response 语法 pbar True chunk

在 bytesized32 的开源代码里面看到了一个玄学内容。

while True:
        try:

            stream = call_gpt(stream=True, model=model, messages=messages, **kwargs)
            pbar = tqdm(stream, unit="token", total=kwargs.get("max_tokens", 8*1024), leave=False)
            for chunk in pbar:
                time.sleep(0.01)  # Should help with Errno 104: Connection reset by peer https://stackoverflow.com/questions/383738/104-connection-reset-by-peer-socket-error-or-when-does-closing-a-socket-resu
                chunk_content = chunk.choices[0].delta.content

                if chunk_content:
                    response += chunk_content
                    pbar.set_postfix_str(f"...{response[-70:]!r}")

                    nb_tokens = count_tokens(chunk_content)
                    pbar.update(nb_tokens)
            else:
                pbar.close()
                break

        except (openai.APITimeoutError, openai.APIError, ChunkedEncodingError, ReadError, RemoteProtocolError) as e:
            if isinstance(e, openai.APIError):
                print("*****", e.type)
                if "An error occurred during streaming" not in e.message:
                    raise e

            # Append the response we received so far to messages.
            if len(messages) == 1:
                messages.append({"role": "assistant", "content": response})

            messages[-1] = {"role": "assistant", "content": response}
            print(e)

仔细看看 try except 的 try 最后面 else 和上面的 for 缩进一致,真的很玄学!

ChatGPT 给的解释是

在 Python 中,for 循环后面的 else 子句只有在循环没有被 break 语句中断的情况下才会执行。也就是说,如果 for 循环正常完成迭代而没有提前退出,else 子句就会执行。

所以说如果 for 循环中的内容因为 API 寄了,就不会进行 pbar.close(),然后在 except 里面把之前生成的内容作为 assistant 的回复 append 到 message 最后面。因为最外层是一个 while True,所以这样的实现可以有效避免 api 失效对整个 pipeline 的影响。

太酷啦!

emm 其实我自己玩这个的时候也遇到了其它问题,比如 api 调用被 chunk 掉了,生成一个文字交互游戏代码,最后主函数写到 if __nam 就不写了。这个问题我觉得把 while True 改改就能解决,你怎么看!

标签:content,python,nb,messages,response,语法,pbar,True,chunk
From: https://www.cnblogs.com/yspm/p/18338156/elseAfterforloopNotes

相关文章

  • Python:下载数据集
    打开网站:搜索        ​​​​​​https://www.kaggle.com直接下载即可(要登陆注册哦),下载完成一定要放到桌面哦,因为读取的是当前目录 在网页上打开上一篇文章所讲的HelloWorld,如果没有安装请跳转http://t.csdnimg.cn/NDJpG输入:importpandasaspddf=pd.read......
  • (四)Python中的字符串类型及操作
    一、字符串类型的表示在Python中,字符串可以使用单引号(')、双引号(")、三引号('''或""")来表示#使用单引号string1='Hello,World!'#使用双引号string2="Hello,World!"#使用三引号string3='''Hello,World!''&......
  • python格式化字符串漏洞
    在python中格式化字符串的方法有如下四种第一种:%操作符,沿袭了C语言的风格>>>name='Bob'>>>'Hello,%s'%name"Hello,Bob"第二种:string.Template,利用标准库中的模板字符串类进行字符串格式化.>>>name='Bob'>>>fromstringimport......
  • python需要学习的基础库
    Python在数据分析和机器学习领域非常强大,得益于其丰富的库和框架。以下是一些常用的数据分析和机器学习库,以及推荐的学习资源网站:数据分析库NumPy:提供高性能的多维数组对象和用于处理数组的工具。它是许多科学计算库的基础。学习资源:NumPy官方文档Pandas:为数据分析提供了......
  • python3之语音合成pyttsx3库使用
    pyttsx3pyttsx3是一个Python库,‌用于将文本转换为语音输出。‌它支持多种操作系统,‌包括Windows和macOS,‌并且提供了丰富的功能来控制文本到语音的转换过程。‌importpyttsx3msg="HelloWorld!"pyttsx3.speak(msg)engine=pyttsx3.init()engine.say(msg)engine.run......
  • Python 进行数据可视化(Matplotlib, Seaborn)
    数据可视化是数据科学和分析中的重要工具,它通过图形表示数据,使得复杂的数据变得易于理解和分析。在Python中,最常用的两个数据可视化库是Matplotlib和Seaborn。Matplotlib1.简介Matplotlib是一个用于生成二维图形的Python库。它提供了类似于Matlab的绘图接口,使用户能够轻松......
  • Python 学习中的 API,如何调用API ?
    1.1API的定义API,全称是ApplicationProgrammingInterface(应用程序编程接口)。它是一组定义好的协议和工具,用于在软件应用程序之间进行通信。API可以简化软件开发,使不同的应用程序能够相互协作。它是软件开发中非常关键的组成部分,因为它提供了一种标准化的方式来访问某些功能,......
  • 27、Python之面向对象:方生方死?对象生命周期是如何管理的
    引言前面关于面向对象的几篇文章,其实主要围绕着面向对象的第一个核心理念——封装,进行面向对象的介绍。从类、对象的静态构成的角度,对类与对象的定义及使用进行介绍。在进入面向对象另外两个理念的介绍之前,我觉得有必要对Python中对象的生命周期管理进行一些介绍,从而知道我们......
  • Python cv2库 批量压缩图片jpg、png 脚本
    效果图:(1)压缩前:10.9M   (2)压缩后:1.46M(3)直接上代码,#设置压缩质量0-100,0最差,100最好compression_params=[int(cv2.IMWRITE_JPEG_QUALITY),50]importcv2importosPATH=r'F:\aa_jpg'#压缩该路径下的图片,压缩后会保存到原路径defresizeImage(f......
  • 深度学习扫盲——PIL(python图像处理库)
    PIL(PythonImagingLibrary)库,也称为Pillow,是Python中广泛使用的PIL。它提供了丰富的图像处理功能,支持几乎所有图片格式的存储、显示和处理,能够完成图像的缩放、裁剪、叠加以及图像添加线条、图像和文字等操作。以下是对PIL库(Pillow)的详细介绍:一、基本介绍定义:PIL是PythonImagin......