当前位置: 首页 > article >正文

AI开发-python-langchain框架(--EasyOCR图片文字提取 )

1.概述在人工智能快速发展的今天AI不再仅仅是回答问题的聊天机器人而是正在演变为能够主动完成复杂任务的智能代理。OpenAI的Codex CLI就是这一趋势的典型代表——一个跨平台的本地软件代理能够在用户的机器上安全高效地生成高质量的软件变更。2.内容如果你只把 Codex 当成“更会写代码的 ChatGPT”那你只理解了它 10% 的价值。真正让 Codex 不同的是它背后那套完整、可运行、可反复思考的 Agent Loop智能体循环系统。2.1 Codex 到底和普通大模型有什么区别我们先看一个最普通的大模型交互流程你帮我写一个 Python 脚本模型给你一段代码结束这是一次性生成模型不知道代码能不能运行不知道有没有报错更不知道“下一步该干什么”1. Codex 的真实工作方式完全不同Codex 的思路更像一个新手工程师坐在你电脑前复制代码1 看需求2 写点代码3 运行一下4 报错了看看错误5 改代码6 再运行7 直到成功复制代码这个「反复尝试」的过程就是 Codex Agent Loop。2.2 什么是 Agent LoopAgent Loop 让模型在一个循环里不断思考 → 行动 → 看结果 → 再思考。Codex CLI 的核心不是“一次推理”而是反复展开这个循环模型不是直接给答案而是每一轮只决定我下一步该干什么1. 先忘掉「大模型」把 Codex 当成一个“新人程序员”想象一个刚入职的初级工程师你给他一个任务“帮我把这个项目跑起来并写一个 README。”他会怎么做一定不是“我闭上眼睛一次性把所有事情做对。”而是更接近下面这个过程复制代码1 先看看项目目录结构2 猜一猜怎么运行3 真的运行一下4 发现报错5 根据报错改代码6 再运行7 直到跑通8 最后再总结写 README复制代码注意这个过程中每一步都依赖上一步的结果。这就是 Agent Loop 的直觉来源。2.普通 ChatBot VS Agent根本区别在哪普通 ChatBot 的工作方式复制代码输入问题↓模型“想一想”↓一次性输出答案↓结束复制代码它的特点是只能“想”不能“做”没有真实世界的反馈更像是在考试答题Codex Agent 的工作方式复制代码目标↓想一小步↓做一小步↓看结果↓再想一小步↓……↓完成复制代码它的特点是每一轮只解决一个非常小的问题每一步都基于真实执行结果更像是在真实工作Agent Loop本质上就是把“一次性回答问题”拆成了“多轮小决策”。3. 「Loop」这个词为什么这么重要我们先看一个不展开的情况模型在脑子里想 10 步↓一次性输出最终答案这种方式的问题是中间哪一步想错了你完全不知道没有机会修正对复杂任务非常不稳定而 Agent Loop 是把这 10 步“摊开”复制代码第 1 步我该不该看目录↓第 2 步我该不该运行测试↓第 3 步这个报错是什么意思↓第 4 步我该改哪个文件复制代码这就是 unrolling the loop 的含义把模型原本“在脑子里一次性完成的思考”拆成一轮一轮、可执行、可观察的步骤。4.为什么说「模型不是直接给答案」复杂问题没有人能在“看都没看现场”的情况下一次就给出完美答案。Agent Loop 的设计正是承认了这一点。所以 Codex 的策略是不追求“一次答对”而是追求每一步都有依据每一步都能被验证每一步错了都能修假设你的项目现在是这样“一个 Node 项目运行 npm start 会报错”Codex 的内心独白并不是一句话而是类似这样一轮一轮展开1 我不知道项目结构我需要先看看 → 调用工具ls2 看起来是 Node 项目我应该试着运行 → 调用工具npm start3 报错说缺依赖 → 调用工具npm install4 再运行一次 → npm start5 现在跑通了我可以总结了 → 输出最终回答2.3 把 Agent Loop 拆成 5 个步骤2.3.1 接收用户目标不是马上干活1 用户输入 ≠ 模型直接思考的内容当你在 Codex CLI或任何 Agent 系统里输入一句话比如“帮我给这个项目补一个 README。”很多人会误以为这句话直接被送进模型然后模型开始思考。但实际上在 Agent 系统里这句话的角色更接近于“任务目标Goal”也就是说它只是告诉系统最终你要把事情做到什么状态2 为什么要把“目标”和“过程”分开因为 Agent Loop 的设计理念是目标是稳定的过程是动态变化的举个生活化的例子你的目标是“把房间收拾干净”你并不会一开始就决定先扫地还是先整理桌子垃圾有多少要不要换垃圾袋你只是知道最后要干净Codex 也是一样。用户输入只负责定义“终点”不负责定义“路径”。2.3.2 构造当前上下文Prompt1.Prompt 是“模型看世界的全部信息”这是 Agent Loop 里最关键、也最容易被低估的一步。我们先说一句非常重要的话对模型来说它并不知道“刚刚发生了什么”除非你把这些信息放进 Prompt。所以每一轮 Agent Loop都会重新构造一个 Prompt。2.Prompt 里通常包含哪些东西一个完整的 Prompt通常包含你是谁系统设定你是一个 coding agent你可以修改文件、运行命令你能用什么工具shell文件读写测试运行用户目标比如补 README到目前为止发生了什么我刚才运行了什么命令输出结果是什么有没有报错对模型来说这些内容就是它的“记忆”。3.为什么每一轮都要“重新构造” Prompt举个例子第一轮你还没看过项目结构第二轮你已经知道有哪些文件第三轮你已经看到测试报错如果 Prompt 不更新模型就会永远以为自己什么都不知道所以 Agent Loop 的一个核心动作就是把“刚刚发生的现实结果”翻译成模型能理解的文字再塞回 Prompt。2.3.3 让模型做“下一步决策”1.模型在这一轮只回答一个问题这是 Agent Loop 的灵魂所在。模型不会在这一轮里把所有事情想完。它只做一个非常具体、非常有限的判断“在当前信息条件下我下一步该做什么”2.这个“下一步”通常只有两种可能情况一我还需要更多信息 / 行动模型会说类似“我需要看看目录结构”“我需要跑一下测试”“我需要打开某个文件看看内容”在系统层面这会被表达为Tool Call工具调用情况二信息已经够了可以结束模型会说类似“现在我可以写 README 了”“问题已经修复完成”这时它会直接输出最终回答Agent Loop 结束。3.为什么要限制成“只想一步”因为这是控制复杂度的关键。如果模型一次性想 10 步中间哪一步错了你不知道无法插入真实反馈很难纠正而“一步一想”的好处是每一步都可以被验证错了就马上修对复杂任务更稳2.3.4 如果要干活 → 调工具1.模型自己“不会干活”模型 ≠ 能执行命令的程序模型只能输出文字或结构化指令但它不能真的运行 ls不能真的执行 npm install不能真的写文件2.Tool 的作用把“建议”变成“现实动作”当模型说“我需要运行 ls 看看目录”Agent 系统会1 解析模型输出2 发现这是一个 tool call3 在真实环境里执行命令4 收集真实输出2.3.5 把结果塞回上下文继续循环1.这是 Agent Loop 最“反直觉”的一步很多人会以为工具执行完模型“就知道结果了”其实不然。模型并不知道工具执行结果除非你把结果写进 Prompt。2.现实 → 文本 → PromptAgent 会把刚才的执行结果转成类似这样的内容你刚刚运行了 ls输出是src/package.json然后把这段文字加入 Prompt再发起下一轮模型推理这一步完成后新的一轮 Loop 开始。我们现在可以把这 5 步用一句非常生活化的话说清楚1 把当前情况告诉模型2 让模型决定下一小步3 把真实结果反馈回去4 直到模型觉得“可以收工了”3.Agent Loop代码示例前面我们讲了很多概念Agent Loop、目标、Prompt、工具、反馈……现在我们用一段最小但完整的代码把这些概念全部落到实处。复制代码class SimpleAgent:def __init__(self, llm):self.llm llmself.history []def run(self, goal):while True:prompt self.build_prompt(goal)response self.llm(prompt)# 如果模型说“完成了”if response[type] final:print(response[text])break# 如果模型要用工具if response[type] tool_call:result self.execute_tool(response)self.history.append(result)def build_prompt(self, goal):return {goal: goal,history: self.history}def execute_tool(self, call):if call[name] shell:return os.popen(call[command]).read()复制代码这段代码不是生产级但它100%体现了 Agent Loop 的本质结构。下面我们从整体 → 局部 → 每一行的“为什么”来拆。1.先整体理解这段代码在干什么它在做一件事不断把“当前状态”交给模型让模型决定下一步然后根据结果更新状态直到模型说“可以结束了”。可以理解为“你先想一步 → 我帮你干 → 把结果告诉你 → 你再想一步”2.class SimpleAgentAgent 不是模型而是“调度者”Agent ≠ 模型LLMllm负责“思考 / 决策”Agent负责“循环 / 执行 / 状态管理”Agent 的角色更像是一个项目经理 执行助理。3.__init__Agent 的“长期记忆”在哪里self.llm 是什么它是一个函数或对象输入Prompt输出模型的“下一步决策”你可以把它理解成response 大模型(prompt)4.self.history 为什么这么重要这是整个 Agent Loop 的核心状态。history 里存的不是聊天记录而是你刚刚执行了什么命令命令输出了什么有没有报错它是“现实世界发生过的事情”的文本化记录如果没有 history模型每一轮都会“失忆”永远不知道自己刚才干过什么5.run 方法Agent Loop 的真正入口def run(self, goal):这里的 goal就是你输入的那句“帮我给这个项目加一个 README”它只做一件事定义终点不定义路径。6.while True为什么 Agent 必须是“死循环”这行代码非常关键。很多人一看到“死循环”会下意识觉得不优雅但在 Agent 里没有循环就没有 Agent为什么因为 Agent 的工作模式是不知道要循环多少轮不知道什么时候信息才“足够”只能一轮一轮试结束条件不是写死的而是由模型决定的。7.build_prompt模型“看到的世界”是怎么来的prompt self.build_prompt(goal)这是 Agent Loop 中最容易被忽略但最重要的一步。def build_prompt(self, goal):return {goal: goal,history: self.history}它做的事情非常简单但意义非常大把“目标 已发生的事实”打包交给模型。8.response self.llm(prompt)模型只做一件事response self.llm(prompt)这一行看似简单其实决定了整个 Agent 的风格。模型在这里不会写完整代码一次性解决所有问题它只回答一个问题“在当前 prompt 条件下我下一步该做什么”我们用一句完整的流程复述Agent 把目标 历史交给模型模型说“下一步干这个”Agent 去真实执行Agent 把结果记录下来回到第 1 步直到模型说“可以结束了。”4.总结Codex Agent 的真正价值并不在于它“写代码有多快”而在于它被设计成一个可以反复思考和行动的系统。通过 Agent Loop模型不再试图一次性给出完美答案而是像真实工程师一样先尝试、再观察、再修正逐步推进目标完成。这种“思考 → 执行 → 反馈 → 再思考”的循环机制让复杂问题被自然拆解成一连串可验证的小步骤也让错误变成系统的一部分而不是失败的终点。皆衬涤跃

相关文章:

AI开发-python-langchain框架(--EasyOCR图片文字提取 )

1.概述在人工智能快速发展的今天,AI不再仅仅是回答问题的聊天机器人,而是正在演变为能够主动完成复杂任务的智能代理。OpenAI的Codex CLI就是这一趋势的典型代表——一个跨平台的本地软件代理,能够在用户的机器上安全高效地生成高质量的软件变…...

Wechatsync插件安装避坑指南:从GitHub下载到Chrome开发者模式加载全流程

Wechatsync插件安装避坑指南:从GitHub下载到Chrome开发者模式加载全流程 在内容创作多平台分发的时代,Wechatsync作为一款开源同步工具,能显著提升创作者的工作效率。但许多用户由于无法访问Chrome应用商店,不得不选择手动安装方式…...

i.MX6U嵌入式开发:从底层逻辑吃透GPIO初始化,告别死记硬背

在i.MX6U嵌入式开发入门阶段,GPIO初始化是绕不开的基础知识点,很多新手刚接触时,往往只会照搬代码,完全不理解每一行代码的意义,一旦换个引脚、换个外设,就无从下手。今天我就用「从0到1搭积木」的方式&…...

学Simulink——基于Simulink的CLLC谐振变换器双向对称控制

目录 手把手教你学Simulink——基于Simulink的CLLC谐振变换器双向对称控制​ 摘要​ 一、背景与挑战​ 1.1 为什么CLLC + 对称控制是“天作之合”?​ 1.2 设计目标​ 二、系统架构与核心控制推导​ 2.1 整体架构:双向能量流动的“旋转门”​ 2.2 对称控制律推导(核心…...

国际标准采用程度是指国家标准对国际标准或国外先进标准的采纳程度,是标准化工作中的核心概念

国际标准采用程度是指国家标准对国际标准或国外先进标准的采纳程度,是标准化工作中的核心概念。根据教材内容及我国现行标准化规范,可分为以下三类: 1. 等同采用(IDT / idt) 指国家标准等同于国际标准,仅存…...

从一坨面条代码开始——V1最小原型

🧠 专栏:「当AI学会发脾气」—— 一个类脑认知系统的诞生记 副标题:7个版本迭代Python脚本,教会AI像人一样焦虑、兴奋、犯错和成长 这是一个从零开始构建"有情绪的AI"的完整记录。不需要深度学习框架,不需要…...

DataX:从原理到实战,构建企业级数据同步平台的完整指南

1. DataX核心架构解析:从插件机制到调度框架 第一次接触DataX时,最让我惊讶的是它的插件化设计。这就像乐高积木一样,Reader和Writer插件可以自由组合。比如上周帮某电商客户做MySQL到Elasticsearch的数据迁移,直接选用mysqlreade…...

房东网络/合租上网必看:如何用一台新路由器安全搭建自己的“子网”(华硕/腾达路由器设置详解)

租房网络隔离实战:用路由器打造隐私子网的完整指南 合租公寓里最尴尬的瞬间,莫过于发现室友能通过局域网看到你的智能电视播放记录,或是NAS里的私人文件突然出现在邻居的设备列表里。这种"网络裸奔"的体验,正是我们需要…...

Cadence Allegro测试点从入门到精通:手把手教你创建合规的10/50mil过孔焊盘与底层开窗

Cadence Allegro测试点设计全解析:从工艺规范到实战优化 在高速PCB设计领域,测试点不仅是功能验证的窗口,更是连接设计与制造的工艺桥梁。当一块六层板以5GHz频率运行时,一个不符合规范的测试点可能导致整批产品在ICT测试环节报废…...

从芯片到应用:AD8302对数检波器在射频信号测量中的实战解析

1. AD8302芯片:射频工程师的"瑞士军刀" 第一次接触AD8302是在五年前的一个天线调谐项目中,当时需要实时监测两个频段的信号强度差异。传统方案要用两套检波电路加ADC采集,而这块指甲盖大小的芯片居然能同时搞定幅度和相位测量——这…...

容器镜像构建优化实践

容器镜像构建优化实践 随着云原生技术的普及,容器镜像已成为应用部署的核心载体。镜像体积过大、构建速度慢、安全性不足等问题常常影响开发和运维效率。如何通过优化构建实践提升镜像性能,成为开发者关注的焦点。本文将从多个角度探讨容器镜像构建的优…...

软件报告管理化的信息汇总与呈现

在数字化浪潮席卷全球的今天,企业每天产生的数据量呈指数级增长。如何高效汇总、分析并呈现这些数据,成为提升决策效率的关键。软件报告管理化应运而生,它通过系统化的信息整合与可视化呈现,将海量数据转化为清晰、直观的决策依据…...

# 7天从零搞定GBase培训——数据库知识真的可以平移

7天从零搞定GBase培训——数据库知识真的可以平移 背景 接到一个任务:给甲方做GBase数据库培训。要求覆盖GBase 8s(事务型)和GBase 8a(分析型MPP)两个产品。 问题来了:我从来没碰过GBase。 官方给了一批产品…...

前端构建产物分析

前端构建产物分析:优化性能的关键路径 在现代前端开发中,构建工具(如Webpack、Vite、Rollup等)已成为项目开发的标配。它们将源代码转换为浏览器可执行的静态资源,但构建产物的质量直接影响页面加载速度、用户体验和S…...

如何让AI成为你的超级助手——GLM Coding两步法实战

如何让AI成为你的超级助手——GLM Coding两步法实战用了这么久AI,发现大部分人要么不会问,要么问得太细。真正的AI高手,都是分两步走:没想清楚时用来迭代思考,想清楚后直接让它写代码。问题背景 去年年底,我…...

跨越虚拟壁垒:在VMware Fusion中成功导入Parallels Desktop macOS虚拟机实战

1. 为什么需要跨虚拟机平台迁移macOS系统 最近在折腾Mac上的虚拟机时,遇到了一个很有意思的问题。本来想在VMware Fusion里直接安装macOS系统,结果试了好几次都蓝屏失败。这让我想起之前用Parallels Desktop(以下简称PD)安装macOS…...

WarcraftHelper:5大核心功能让魔兽争霸3在现代电脑上完美重生

WarcraftHelper:5大核心功能让魔兽争霸3在现代电脑上完美重生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为经典魔兽争霸3在…...

敏捷开发中的闪电晋升策略:软件测试从业者的破局之道

在当今以“敏捷”和“快”为关键词的软件开发时代,职业发展轨迹也正在被重塑。对于软件测试从业者而言,传统的、线性的晋升阶梯已显乏力,新的环境呼唤新的策略。敏捷开发以其迭代、协作和持续交付的特性,在催生技术变革的同时&…...

终极指南:如何让Switch手柄在电脑上完美运行游戏

终极指南:如何让Switch手柄在电脑上完美运行游戏 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.com/gh_mi…...

从OpenStreetMap到高德/百度:Leaflet地图源切换与自定义瓦片图层全攻略

从OpenStreetMap到高德/百度:Leaflet地图源切换与自定义瓦片图层全攻略 在国内开发地图应用时,直接使用OpenStreetMap(OSM)往往会遇到访问速度慢、坐标偏移等问题。本文将深入探讨如何通过Leaflet实现地图源的灵活切换,重点解决国内开发者最关…...

项目经理实战:用Excel快速计算项目SV、CV、SPI、CPI(附免费模板下载)

项目经理实战:用Excel快速计算项目SV、CV、SPI、CPI(附免费模板下载) 在快节奏的项目管理环境中,每周的进度汇报和成本控制往往让项目经理焦头烂额。当管理层突然要求提供项目健康状态报告时,能够快速计算出关键绩效指…...

ENVI+ArcGIS联合实现遥感分类精度评估(优化分层抽样策略)

1. 遥感分类精度评估的核心挑战 做遥感分类的朋友们应该都深有体会,最头疼的不是前期分类过程,而是后期验证环节。我去年帮某林业局做林地分类项目时,光是验证环节就返工了三次。传统简单随机抽样最大的问题是容易漏掉小面积地类——有次在20…...

【深度学习】Mixup: 突破传统数据增强的邻域风险最小化实践

1. 从数据增强到Mixup:为什么我们需要突破传统方法 记得我第一次训练图像分类模型时,把所有经典数据增强方法都用上了——随机裁剪、水平翻转、颜色抖动。效果确实比不用增强要好,但在测试集上的准确率总是差强人意。直到接触了Mixup&#xf…...

别再只会Ctrl+F了!PyCharm 2023.3里这5个隐藏搜索技巧,让找代码快10倍

PyCharm 2023.3:解锁专业开发者必备的5个高阶搜索策略 在大型Python项目开发中,代码搜索效率直接决定了开发速度。当项目规模膨胀到数千个文件、数十万行代码时,传统的一层层目录翻阅或简单的全局搜索(CtrlF)已经无法满…...

告别配置烦恼:CLion + Qt + CMake 一站式开发环境实战指南

1. 为什么选择CLion开发Qt项目 作为一个长期在Qt和C领域摸爬滚打的开发者,我尝试过几乎所有主流IDE。最初用Qt Creator,后来转战Visual Studio,最终在CLion找到了最佳平衡点。JetBrains家的IDE有个共同特点——它们都是为开发者体验而生的工具…...

嵌入式系统开发规范

嵌入式系统开发规范:构建高效可靠的智能基石 在物联网和智能设备快速发展的今天,嵌入式系统作为硬件与软件融合的核心载体,其开发质量直接影响产品性能和可靠性。规范的开发流程不仅能提升代码可维护性,还能降低后期维护成本。本…...

如何修复固定定位头部容器中悬浮下拉菜单的错位问题

本文详解如何通过统一使用 position: relative 与 top/left 归零策略,配合 flex 布局精准控制头部元素位置,解决因混合定位方式导致的下拉菜单偏移、图标文字错位等问题,并实现类似《cyberpunk 2077》官网的响应式悬浮导航效果。 本文详…...

盖茨皮带主流齿型的优势与应用 ——HTD/GT2/GT3 技术解析与场景选型指南

关键词:盖茨皮带;皮带齿型;HTD 同步带;GT2 同步带;GT3 同步带;工业传动;精密传动一、引言:齿型决定传动性能同步带齿型是影响传动效率、负载能力、稳定性的核心因素。传统梯形齿存在…...

C#怎么操作PDF合并拆分 C#如何用代码将多个PDF合并成一个或拆分成多个文件【工具】

<p>PdfPig 是 C# 中最稳的 PDF 合并/拆分方案&#xff0c;无许可证风险、API 清晰&#xff1b;iTextSharp v4.x 不支持新标准&#xff0c;易生成损坏文件。</p>用 PdfPig 合并 PDF 最稳&#xff0c;别碰 iTextSharp 旧版直接说结论&#xff1a;C# 做 PDF 合并/…...

如何在网页中实现国际象棋棋子的拖拽与格点吸附功能.txt

MongoDB副本集节点卡在RECOVERING状态的根本原因只有两个&#xff1a;一是无法追上主节点oplog&#xff08;oplog过短或过旧&#xff09;&#xff0c;二是全量同步中途失败且未重试成功&#xff1b;其他如网络、磁盘、权限等问题只是诱因&#xff0c;不直接导致卡住。为什么 Mo…...