Planet Python 中文 笔记

Planet Python 中文

Planet Python 网站是一个星球网站,它聚合了来自各种来源的 Python 相关内容,包括博客、新闻网站和其他在线出版物。 该网站为个人提供了一个了解 Python 编程世界最新发展的集中点。网站上的内容包括教程、新闻、项目公告和关于各种 Python 相关主题的讨论。 用户可以访问该网站,以了解 Python 社区、新的发布、会议和使用 Python 编程语言的最佳实践。网站的目的是帮助推广和传播 Python 相关内容,从而促进 Python 社区的增长和发展。

笔记线程

工作中的愤怒通常无益,并为同事营造负面环境。在公司内发现共同愿景并与之对齐,或在存在分歧且变革不可行时予以接受,至关重要。科技行业的一个普遍问题是:如何在快速变化(尤其是涉及人工智能)中避免愤怒。作者认为,感到迷失和焦虑比愤怒更为恰当。焦虑承认对未来的不确定性,而不归咎于他人;愤怒则需要一个目标,并暗示外部存在不当行为。尽管人工智能可能带来生产力提升,但人们担忧这些收益将主要惠及公司而非员工。许多科技领导者对人工智能表示怀疑,担心成本以及来自大型人工智能实验室的竞争。作者建议以拥抱不确定性替代愤怒,这有助于培养好奇心并积极参与新进展。真正的兴奋是另一种替代方案,能带来赋能感和自由感。作者指出,人工智能的益处往往体现在个人项目中,而不仅仅是公司利润。这一转变凸显了领导者所面临的不确定性,许多人表面上表现出信心,私下却心存疑虑。作者自身也体验到对职业和业务的兴奋与不确定性并存的双重状态。虽然愤怒因提供了“反派”而显得更具行动力,但在人工智能等颠覆性变革中,它往往导致注意力错置。尽管这些变革的社会、环境和全球影响令人担忧,但沉溺于对个人的愤怒是无益的。相反,应保持对实验的好奇与兴奋。这种方法将使我们能够就何时何地真正需要抵制做出明智决策。
CdXz5zHNQW_kaNMCAHtWT.webp
Python 3.12.14、3.11.16 和 3.10.21 已发布,仅提供安全修复更新。这些版本修复了多个关键漏洞,包括 tarfile 加固、路径遍历绕过以及涉及 Python 标准库的多个 CVE。强烈建议这些版本的用户,尤其是处理不受信任 tarball 的用户,尽快更新。Codeberg 近期禁止主要由 AI 生成的项目,此举正被审视其作为 GitHub 替代方案的潜在影响。该政策引发了关于代码托管平台应规范软件生成过程,还是应聚焦其行为与影响的讨论。定义并执行“主要由生成代码”的标准存在显著困难,这对这一方法构成了重大挑战。Brett Cannon 指出,在实现 PyPI 可复现构建方面尚缺关键组件。目前尚无标准化方法来记录分发包所源自的确切源代码,或所使用的具体构建工具。解决这些差距需要修改 sdist 元数据,并可能引入 sdist 2.0 版本。可复现构建的主要焦点是确保软件供应链的完整性。目标是使复现过程对创建者而言无缝顺畅,同时为构建后端和安装程序提供必要信息。这可能导致 PyPI 展示独立复现的构建版本,从而为用户提供增强的信任保障。本期由 Pydantic Logfire 赞助,其为 AI 应用提供可观测性。Logfire 提供从代理、大语言模型、API 到数据库乃至基础设施层面的统一追踪。它利用 OpenTelemetry,并允许使用兼容 Postgres 的 SQL 查询所有数据。赞助商强调,即便是 AI 应用,本质上也是工程努力。他们提供免费层级,并提供便捷的开发者入门流程,以便将 Logfire 集成到应用中。其他新闻方面,uv 已转向优先采用后量子密钥交换,以增强其操作的安全性。此更新反映了向整合面向未来的加密方法这一趋势的增长。其他“额外”事项包括 MCP 服务器的升级、通过 Postgres 同步 agentsview、Talk Python 课程的新内容,以及“Lean TDD”有声书的发布。本期以关于一只狗的简短笑话结尾。
Cal Newport 警告称,由 AI 驱动的编码速度可能会侵蚀定义优秀工程实践的关键思维能力。开发者不再主动理解代码,而是面临被动识别的风险,从而与基础理解脱节。尽管有人主张完全回归手工编码,但作者寻求一种平衡之道。这种中间路径在于有意引入“摩擦”,这对学习与技能发展至关重要。技能退化并非源于使用 AI 本身,而是源于将内部建模过程外包。作者区分了技能退化与 AI 生成细微错误代码的潜在风险。为保持所有权与理解力,开发者应重新推导复杂的代码路径,并确保能够解释每一项变更。将 AI 任务限定在定义明确的问题上,有助于让工程师保持参与,并避免代码审查负担过重。Corey Schafer 的方法,如详细提示和彻底的代码审查,提供了保留这种摩擦的实用途径。然而,人类注意力是有限的,因此必须自动化其余任务。此时,“设计即正确”变得至关重要,需采用更严格的系统级检查,如强类型系统和编译期断言。Rust 通过使无效状态无法表示,强制 AI 合规;Python 中的类型检查器和验证模型则起到类似作用。归根结底,负责任地开发中使用 AI,既要求保留对关键决策的控制权以磨砺判断力,也要求实施严格规则以确保 AI 的问责性。软件工程本质上仍是判断与经验的产物,AI 负责自动化繁琐部分。核心要点在于识别并拒绝将最重要的决策委托给 AI,从而确保真正的所有权与健壮的代码。
CdXz5zHNQW_14ZOYttUhz.png
将文本按行拆分看似简单,实则因历史沿革与不断演变的规范而异常复杂。早期计算依赖 ASCII,其中包含用于换行的控制字符,如换行符(LINE FEED, LF)和回车符(CARRIAGE RETURN, CR)。不同的操作系统采用了这些字符的多种组合,导致纯文本的可移植性问题。例如,Windows 使用 CR LF,Unix 使用 LF,经典 Mac OS 使用 CR。Python 通过引入“通用换行”模式解决了这一问题,在打开文件时识别所有三种常见的换行格式。除传统的 CR 和 LF 之外,ASCII 还定义了换页符(FORM FEED, FF)和垂直制表符(VERTICAL TAB, VT),它们同样会导致换行。Unicode 的出现引入了七个新的码点以及 CR LF 序列作为换行指示符。这些包括换行符(LINE FEED)、行定位符(LINE TABULATION)、换页符(FORM FEED)、回车符(CARRIAGE RETURN)、下一行符(NEXT LINE)、行分隔符(LINE SEPARATOR)和段落分隔符(PARAGRAPH SEPARATOR)。此外,Unicode 的双向算法将双向类别为'B'的字符视为段落分隔符,这些字符也起到换行作用。其中包括信息分隔符四(INFORMATION SEPARATOR FOUR)、三(THREE)和二(TWO),其 ASCII 名称分别为文件分隔符(FILE SEPARATOR)、组分隔符(GROUP SEPARATOR)和记录分隔符(RECORD SEPARATOR)。总之,Python 的 splitlines() 方法识别十个不同的码点和一个多码点序列作为换行符。这一全面的集合兼顾了历史惯例与现代 Unicode 标准,用于处理文本行划分。
CdXz5zHNQW_IFrCzZRuFh.png
一家公司正在开发一个用于Postgres AI Hybrid Manager的AI测试框架,该产品将传统Postgres管理与Langflow等AI工具集成在一起。该聊天机器人旨在将产品功能、文档辅助和人工智能工作流程整合到一个对话界面中。测试这样一个基于LLM的智能体具有挑战性,因为它的响应是非确定性的,即使流利也可能存在微妙的错误。该框架通过专注于测试整个聊天轨迹而非最终答案,逐步改进。介绍了关键概念,包括“金色”(完美期望输出)和“评分标准”(优质答案的定性检查表)。在人工智能测试中,LLMs被用作评分标准(Goldens)或评分标准(Goldens)的评判,将复杂的回答转化为通过/不通过的结果。任务完成率(TCR)用于汇总多次评估。测试策略从简单的路由评估开始,检查聊天机器人是否将提示指向正确的专业代理或技能。随着系统从每个工具的代理演变为整合的技能协调代理,路由评估也调整以检查可视性和正确技能的选择。随后,实施了TCR评估,以评估聊天机器人的完整响应是否成功完成了用户任务,使用LLM作为评判的规则和特定评分标准。这导致了两种执行模式:用于提示和评分标准开发的直接模式,以及用于测试完整生产路径的代理模式。该框架还必须处理多步对话,测试单元成为整个对话,而不仅仅是单次回合。这需要在代理模式下保持多个API调用之间的对话状态,或在直接模式下模拟对话状态。评分现在包括每步检查和整体对话评分。所使用的底层测试库是deepeval,公司基于此构建了其流水线、插件系统、CI集成和Langfuse推送。路由作为自定义的“BaseMetric”实现,演示了如何将特定业务规则集成到LLM评估流程中。
CdXz5zHNQW_2wtMsPJlJt.png