- 博客(376)
- 收藏
- 关注
原创 Python中的`__call__`(模板方法)和`_call`(钩子方法)
Python中__call__和_call方法分别承担模板方法和钩子方法的角色。__call__作为模板方法定义固定流程(如饮品制作步骤),对外提供统一调用入口;_call作为钩子方法由子类实现具体逻辑(如不同饮品的制作细节)。这种设计分离了固定流程和可变实现,父类控制流程框架,子类专注业务定制。在LangChain框架中,Chain类的__call__管理通用流程,子类通过实现_call完成具体任务处理,体现了模板方法模式的核心思想。
2026-01-26 11:33:25
613
原创 LlamaIndex:使用向量数据库进行检索,loaded_query_engine.query(“..........?“)
前文“但它没有用到高大上的“向量数据库”,而是内存中的简易向量存储(),且persist只是将内存索引保存为本地文件(而非真正的向量数据库),这显然不符合生产环境的需求。本文将其改造为向量数据库方案:以为例,完整演示对接流程,同时说明核心改动逻辑。
2026-01-22 12:03:04
585
原创 你知道 Pandas 中 `pd.get_dummies()` 会生成哪些独热的新列么?
摘要:pd.get_dummies()是Pandas中将分类变量转换为哑变量(0-1编码)的核心函数。默认生成的新列名遵循"原列名_分类值"格式,支持通过参数自定义前缀和分隔符。重要参数drop_first=True可删除每个分类的首个哑变量列,避免线性模型中的多重共线性问题。该函数支持处理字符串/数值型分类值,自动忽略空值,并能指定特定列进行转换。注意树模型对共线性不敏感,而线性回归等模型必须处理共线性问题。
2026-01-20 23:24:03
730
原创 LlamaIndex:从文档中进行检索
LlamaIndex是一个从文档中高效提取信息的工具,通过将文档转换为可查询的索引结构。它将文档拆分为语义节点(Node),为每个节点生成向量嵌入,构建向量索引。用户可灵活选择嵌入模型(如OpenAI默认模型、开源本地模型或云厂商模型),通过简单的API调用实现文档内容检索。该工具特别适合处理未结构化存储的文档信息,支持语义查询,返回相关段落而非整个文档。
2026-01-19 16:48:12
647
原创 langchain_experimental.plan_and_execute的三个组件:PlanAndExecute、load_chat_planner、load_agent_executor
摘要:LangChain 实验性模块 plan_and_execute 采用“规划-执行”范式,将复杂任务拆解为规划与执行两个独立阶段。核心组件包括 PlanAndExecute(协调器)、load_chat_planner(任务拆解)和 load_agent_executor(步骤执行)。Planner 生成结构化步骤列表,Executor 按序调用工具执行,适用于多步骤任务场景(如库存查询→定价计算→配送安排)。
2026-01-18 19:25:19
630
原创 LangChain 中的「工具(Tool)」和「工具包(Toolkit)」漫谈
LangChain工具与工具包是大模型落地应用的关键组件,作为连接大模型与现实业务的桥梁。工具通过load_tools函数自动加载,无需手动导入,如serpapi工具来自langchain_community库。查询工具的方法包括查阅官方文档、代码内自查及通过报错反推。使用工具需满足依赖安装和环境变量配置等前置条件。工具名称可通过tool_factory.get_available_tools()获取,拼写错误时会提示可用工具列表。
2026-01-18 12:21:47
759
原创 LangChain的提示模板template中的{tool_names}和{agent_scratchpad}
LangChain的提示模板中{tool_names}和{agent_scratchpad}变量会自动填充,无需手动指定。{tool_names}由LangChain的ReAct Agent在执行时从工具列表动态提取,{agent_scratchpad}则记录Agent思考过程。create_react_agent函数内置了ReAct模板变量的处理逻辑,建立变量与工具信息的映射关系。AgentExecutor执行时自动填充所有变量,生成完整提示词发送给大模型。
2026-01-17 19:12:19
591
原创 Pandas核心数据结构:Series与DataFrame
Pandas库的核心数据结构Series和DataFrame是处理结构化数据的基础。Series是带索引的一维数组,每个值对应唯一索引;DataFrame则是二维表格,由多个Series组成,每列可存储不同数据类型。Series支持索引取值、映射转换(map)和聚合计算(mean/sum)等操作。DataFrame支持行列选择(iloc/loc)、列赋值、分组聚合(groupby)和缺失值处理(fillna)等功能。两者可相互转换。
2026-01-16 22:52:01
738
原创 KFold时,两个关联“编号”的迭代器:`folds.split(...)` 和 `enumerate(...)`
本文介绍了sklearn.model_selection.KFold中两个迭代器的区别与联系。folds.split()是原始迭代器,生成K折的训练/验证索引对,具有惰性生成、仅可遍历一次的特性。enumerate()是包装迭代器,为每个索引对添加递增的折数标签。两者形成"split→enumerate"的迭代器链条,前者提供核心索引,后者添加计数功能。文章通过代码示例验证了迭代器的特性,并解释了enumerate()的基本用法,包括自定义起始索引和查看完整内容的方法。
2026-01-16 22:46:55
528
原创 比较OpenAI 中“ChatCompletion API”与“ Assistants API”的Tools Call/Functions Call(工具调用)
OpenAI的ChatCompletion API和Assistants API在Function Call功能上存在显著差异。ChatCompletion API采用轻量级手动模式,开发者需自行处理参数解析、上下文管理和多轮调用,适合简单场景;而Assistants API提供托管式自动化服务,平台自动管理工具调用流程和对话状态,支持多工具组合和长对话,更适合复杂应用。核心区别在于:前者灵活可控但开发复杂,后者高效易用但灵活性稍逊。
2026-01-16 13:17:15
610
原创 python的高级技巧:Pandas中的`iloc[]`和`loc[]`
摘要:Pandas中的iloc[]和loc[]是数据索引的核心方法,主要区别在于索引依据:iloc基于整数位置(左闭右开),loc基于标签(包含终点)。iloc适用于按物理顺序取数,如取前5行;loc适用于按逻辑标签取数,如按行/列名查询。两者都支持布尔索引,但loc更直观。注意默认整数索引时两者结果可能相同但逻辑不同,且切片规则差异是常见陷阱。实际应用中应根据需求选择:顺序操作用iloc,标签查询用loc。
2026-01-15 22:49:30
548
原创 python的高级技巧:通过字典映射实现函数动态调用
本文介绍了一种Python高级技巧——通过字典映射实现函数动态调用。该方法利用Python函数作为一等对象的特性,将函数名与函数对象存储在字典中,实现通过字符串动态选择和执行函数。文章包含完整示例代码,展示了如何定义函数字典、处理参数解包和异常捕获,并测试了多种调用场景。核心优势包括替代大量if-elif语句、解耦函数选择与执行、支持动态扩展等。典型应用场景包括OpenAI回调、CLI工具、插件架构等。文中还提供了避坑指南,强调参数匹配和安全性注意事项,并进一步展示了支持关键字参数的扩展实现。
2026-01-15 16:11:54
599
原创 Pandas的高效分类特征编码(牛逼的一行):data[f].map(dict(zip(data[f].unique(), range(0, data[f].nunique()))))
摘要:本文介绍了一种基于Pandas的高效分类特征编码方案,通过一行代码data[f].map(dict(zip(data[f].unique(), range(0, data[f].nunique()))))即可将文本分类特征转换为数值形式。该方案通过获取唯一值、生成连续整数、构建映射字典、全列替换四步完成编码,相比sklearn的LabelEncoder更高效,特别适合大规模数据集。文中详细拆解了代码组件,提供了完整示例和避坑指南,强调需提前处理缺失值并注意编码顺序问题。
2026-01-14 22:57:09
583
原创 OpenAI Assistants API中,user_message中的三种模式:零代码、低代码、全代码
OpenAI Assistants API的code_interpreter功能支持三种PPT生成模式:无代码、低代码和全代码。无代码模式通过自然语言描述需求,云端直接生成PPT文件;低代码模式获取云端生成的Python代码,经本地修改后运行生成PPT;全代码模式直接提交完整代码在云端执行。三种方式分别适合不同技术水平的用户,无代码最简单,全代码最灵活。示例展示了无代码和低代码的具体实现,包括文件上传、自然语言指令发送、代码提取和本地执行等关键步骤,体现了AI辅助开发的高效性。
2026-01-14 16:27:29
673
原创 OpenAI Assistants API中的异步与轮询:threads.runs.list、threads.runs.retrieve、hreads.messages.list
本文探讨了OpenAI Assistants API中threads.runs.list和threads.messages.list的应用模式。通过Python代码示例展示了完整工作流程:先轮询threads.runs.list确认任务完成,再提交新任务并轮询runs.retrieve确认执行完成,最后通过threads.messages.list获取新增助手回复。文章还提供了将流程拆分为两个异步程序的方案,通过本地JSON文件实现任务提交端和结果获取端的通信。
2026-01-13 19:19:29
623
原创 OpenAI Assistants API 中 client.beta.threads.messages.create方法,兼谈一星*和两星**解包
本文介绍了OpenAI Assistants API中的client.beta.threads.messages.create方法,这是向指定对话线程(Thread)添加消息的核心接口。该方法支持创建用户消息(role="user")或助手回复(role="assistant"),并可作为上下文供后续对话使用。* 解包:把列表/元组拆成位置参数(按顺序传值,核心是“顺序匹配”);** 解包:把字典拆成关键字参数(按key传值,核心是“名称匹配”)
2026-01-12 12:05:33
969
原创 OpenAI中,索引取值与点取值:message.content[0].text.value
本文解析了OpenAI API返回数据中常见的message.content[0].text.value综合取值写法,重点区分列表索引取值([])和对象属性点取值(.)的使用场景。通过基础字典/列表结构和SDK封装对象的对比示例,说明在纯字典结构中使用dict[key]和list[index]取值,而在OpenAI对象中优先使用点取值结合列表索引的混合方式。文章还指出了常见错误用法,并强调虽然OpenAI对象兼容字典式取值,但推荐使用点取值规范。最后通过多内容块消息示例展示了列表索引的实际应用价值。
2026-01-11 18:34:43
1022
原创 OpenAI Assistants API架构:运动员threads有装备assistants,比赛run时,由messages.list记事,由runs.list裁判
摘要:本文通过运动员与教练的生动类比,形象阐释了OpenAI Assistants API的核心机制。将threads比作独立运动员,assistants视为定制教练与装备包,run对应完整比赛回合,messages.list则是赛事记录员。该类比精准映射了API的线程独立性、助手规则约束、执行过程及消息存储特性,并配合代码示例展示了线程创建、助手配置、运行执行和消息查询的全流程。通过这种运动场景的对应关系,使复杂的API架构变得直观易懂。(150字)
2026-01-11 15:23:02
847
原创 OpenAI Assistants环境中的“assistants中的instructions”与“threads中的messages”
OpenAI Assistants API 中,instructions 和 messages 是两个关键参数,分别定义助手的全局行为准则和单次对话的上下文内容。instructions 作为助手的"出厂设置",作用于所有线程,需通过 assistants.update 修改;而 messages 作为线程的"聊天记录",仅影响当前对话,通过 threads.messages.create 动态追加。两者协同工作:instructions 提供行为框架,message
2026-01-11 12:39:12
846
原创 LLM大模型的付费管理流程(以OpenAI 为例)
OpenAI API的付费管理完全由云服务端主导,客户端和大模型端仅承担“传递身份”和“上报数据”的辅助角色,最大化降低客户端的开发成本;
2025-12-30 15:10:14
813
原创 OpenAI Assistants API中代码解释器工具:配置tools=[{“type“:“code_interpreter“}]
OpenAI Assistants API的代码解释器工具"code_interpreter"通过GPT-4-turbo自动完成自然语言到Python代码的转换,在隔离沙箱中执行并返回结果。用户只需配置tools=[{"type":"code_interpreter"}]即可启用该功能,无需编写任何代码。该工具支持从简单计算到复杂数据分析的全场景处理,包括数值运算、数据处理、可视化及文件操作等。相比LangChain需要开发者手动封装工具,Open
2025-12-30 14:52:27
784
原创 LangChain 和 OpenAI Assistants API 在 “工具调用” 的区别
LangChain和OpenAI Assistants API在工具调用机制上存在根本差异。LangChain采用"LLM决策+平台执行"模式,开发者需编写工具调用衔接代码,但可自由接入各类自定义工具;而Assistants API采用"LLM端闭环"模式,由大模型自主完成工具调用,仅支持OpenAI内置工具。前者灵活性高但开发复杂,后者易用性强但受限于平台功能。选择取决于具体需求:需调用私有工具或重视数据隐私时选LangChain;追求快速实现通用功能时选Assis
2025-12-30 13:10:06
754
原创 剖析OpenAI 大模型端:它是一个高度封装的分布式系统
摘要:OpenAI大模型端是一个高度封装的分布式系统,采用四层架构设计。基础大模型集群(如GPT-4-turbo)负责推理决策和结果整合;工具执行引擎层实际运行代码解释器等工具;算力调度层管理资源分配;结果标准化层统一结果格式。各层分工明确,形成"决策-执行-整合"闭环,使开发者无需关心底层实现。这种设计将工具调用全流程封装,显著降低了开发门槛,是OpenAI区别于LangChain等框架的核心优势。
2025-12-30 12:01:52
742
原创 OpenAI 的核心架构范式——客户端(Client Layer)→ 云服务端(Cloud Service Layer)→ 大模型端(Model Layer)的三层分层架构
OpenAI Assistants API采用三层架构设计:客户端层负责轻量化的请求交互,云服务端作为核心中间件处理任务调度和状态管理,大模型端执行智能推理和计算。该架构通过职责分层实现解耦,采用异步协同机制适配大模型特性,并标准化封装降低开发者门槛。优势包括各层独立迭代、高可用性、易用性和资源管控,平衡了性能与开发效率,是AI服务化的典型范式。
2025-12-30 11:12:08
883
原创 调用client.beta.threads.runs.create后交由OpenAI云服务器端的处理
本文详细解析了OpenAI云服务器端处理Run任务的完整生命周期流程,核心是异步非阻塞的任务管理机制。当客户端提交任务后,云服务经历6个阶段:任务入队(queued)、调度预处理、执行(in_progress)、结果写入Thread、状态最终固化(completed/failed/cancelled)和客户端结果获取。整个过程通过状态转换驱动,客户端需轮询状态来获取最终结果。关键点包括:1) runs.create是异步提交而非等待;2) 结果持久化在Thread中;3) 需通过轮询监控状态变化。这种设计实
2025-12-30 09:34:23
821
原创 OpenAI Assistants API:Run如何撮合需求、能力与流程
OpenAI Assistants API中的Run组件是关键引擎,负责整合助手能力、线程工作态和用户需求三大要素,提交给大模型执行。本文通过鲜花价格计算案例,展示了Run如何撮合这些要素:创建助手定义计算能力(Assistant),建立独立工作环境(Thread),提交具体需求后,Run将其打包提交云端处理并返回结果。这种设计实现了低耦合(各要素可独立修改)、符合人类协作思维(类似单独聊天窗口提问),支持轻量化任务执行(单次Run对应具体任务)。Run的撮合机制让开发者无需关注底层细节,通过简单API调用
2025-12-29 19:06:04
561
原创 三连创建:client.beta.assistants.create、client.beta.threads.create、client.beta.threads.runs.create
OpenAI中使用assistant的三连创建:创建assistant(assistant = client.beta.assistants.create)、创建线程(thread = client.beta.threads.create)、创建Run(run = client.beta.threads.runs.create)
2025-12-29 09:56:24
404
原创 Chat Completions API中的三种role:“system“,“user“,“assistant“
三角色:system定规则、user提问题、assistant存回复,是 OpenAI 对话 API 的基础;Assistants API 的assistant对象是 “大的智能体”,而 Chat Completions API 的assistant角色是 “这个智能体发消息时的标签”。
2025-12-28 22:04:08
884
原创 科普:API调用方式与人工交互方式使用大模型云服务的对比
摘要: OpenAI API调用与LLM应用页面访问存在本质差异。API面向开发者,支持程序级自动化调用,具备高度定制化(JSON输出、参数调整)、批量处理、系统集成能力,适合企业级应用(如电商客服集成)。应用页面则面向普通用户,仅支持人工交互,功能受限(固定自然语言回复、单次查询)。典型场景对比显示,API在效率(千次/秒调用)、数据控制(隐私策略)、成本核算(按Token计费)方面优势显著,而网页版仅适用于零散问答。核心区别在于API将LLM作为“工具”嵌入系统,应用页面则作为独立“产品”使用。
2025-12-25 11:10:19
1003
原创 大模型应用中,创建OpenAI客户端的三种方式
创建OpenAI客户端有如下三种方式:1、client = OpenAI()2、client = OpenAI(api_key="你的API密钥")3、client = OpenAI( api_key="你的DeepSeek API密钥", # 替换为自己的DeepSeek密钥 base_url="https://api.deepseek.com/v1" # DeepSeek的API基础地址(国内可直连))
2025-12-25 11:04:48
734
原创 类别不平衡的处理:过采样与欠采样
本文探讨了机器学习中样本不平衡问题的解决方法及其对不同算法的影响。首先分析了"对类间分布敏感"的算法(如逻辑回归、SVM、GBDT等),指出这些算法在样本不平衡时会偏向多数类,导致少数类识别效果差。解决方法包括调整类间分布(过采样/欠采样)或调整损失权重。 其次讨论了过采样的有效性,强调过采样不会让以分布为前提的算法必然失效,关键在于选择不破坏类内特征分布的过采样方法(如SMOTE),并严格区分训练集和测试集。对于极度敏感的算法(如朴素贝叶斯),建议优先使用重加权代替过采样。 最后比较了
2025-12-24 11:46:15
833
原创 科普:.NET应用开发的环境搭建
你若要进行.NET新应用开发,需要搭建**开发运行环境**(包含SDK和工具)并使用其主流**开发语言**。步骤如下:1. 安装.NET 8 SDK(LTS版本,开发核心)。 2. 安装Visual Studio 2022(功能全)或VS Code(轻量)。 3. 用C#作为开发语言(主流且易用)。 4. 通过创建控制台项目验证环境,再根据需求开发具体应用。
2025-11-15 15:43:03
942
原创 科普:LLM中的网页工具:Fetch与GeneralSearch
为了获得最新信息以及事实信息,LLM需要以工具方式搜索网页,本文给出工具及使用方式,即LLM中的网页工具:Fetch与GeneralSearch
2025-11-14 22:58:25
1560
原创 科普:VB(Visual Basic)和VBS(VBScript)
VB(Visual Basic)和VBS(VBScript)均由微软开发,语法上有一定关联,但定位、功能和应用场景差异显著。VB是“重量级”编译型语言,适合开发复杂应用;VBS是“轻量级”脚本语言,适合简单自动化场景。两者语法相似(如变量声明、流程控制),但功能和定位完全不同。
2025-11-13 21:21:12
970
原创 科普:LLM领域中的“样本(sample)”、“指令(instruction)”和“提示词(prompt)”
摘要:在LLM领域,"指令"是样本中的关键任务描述字段(如"翻译英文"),用于引导模型理解任务目标;而"样本"是包含指令、输入和输出的完整学习单元(如{"instruction":"翻译","input":"Hi","output":"你好"})。二者主要在训练阶段发挥作用,其中预训练样本无需指令,而指令微调样本必须包含指令。与之
2025-11-10 16:18:55
675
原创 在Linux环境中启动了Jupyter Notebook服务器,如何在Windows的VS Code中编辑和运行.ipynb文件(需要Linux环境中配好的虚拟环境)
如果你的Linux环境是本机的(比如通过WSL [Windows Subsystem for Linux] 在Windows上运行的Linux子系统),并且在这个Linux环境中启动了Jupyter Notebook服务器,那么在Windows的VS Code中编辑和运行.ipynb文件会很简单,核心是利用VS Code对WSL的原生支持和Jupyter的本地连接能力。
2025-10-15 23:55:17
1019
原创 Python 开发中:`.ipynb`(Jupyter Notebook 文件)和 `.py`(Python 脚本文件)
在 Python 开发中,源码常用两种文件:.ipynb(Jupyter Notebook 文件)和 .py(Python 脚本文件),通常先用.ipynb文件进行原型开发,再用 .py文件做成产品。在这两阶段之间,需要一个软件资产转换,为此,这里为你提供一个非常适用的程序ipynb2py.py:它将.ipynb文件中的代码单元格合并成一个.py文件。
2025-10-14 10:55:22
990
原创 科普:在分布式系统日志分析中的概念:`span`、`child_spans` 和 `trace`
在软件运行日志分析(尤其是分布式系统追踪)中,span、child_spans 和 trace 是分布式追踪(Distributed Tracing)领域的核心概念,用于描述请求在系统中的流转路径和执行细节。
2025-10-13 22:06:26
606
原创 科普:Python 中, `return`与`yield` (及<generator object fibonacci at 0x.........>)
<generator object fibonacci at 0x0000017FF0903850>(地址可能不同)。即:这里直接打印 `gen` 就会显示生成器对象的信息,而不是斐波那契数列的具体值——这是生成器“惰性计算”的特性决定的(不会提前生成数据,而是生成生成器的对象,然后由生成器的对象按需生成数据)。我们比较`return`与`yield`两关键字:他俩都是用于在函数中返回值的关键字,但它们的行为和适用场景有本质区别,核心差异在于**是否终止函数执行**以及**返回值的方式
2025-10-12 22:45:18
567
原创 科普:LLM应用编程中,response.choices[0].message[‘content‘]与response.choices[0].message.content
本文对比了在LLM应用编程中获取模型回复内容的两种写法:response.choices[0].message['content'](字典键访问)和response.choices[0].message.content(对象属性访问)。核心区别在于数据结构访问方式不同:前者适用于字典类型,后者适用于对象属性。使用OpenAI官方Python库时,两种方式结果一致,因为返回的message对象同时支持两种访问。建议优先使用.content属性写法,更符合Python习惯且可读性更强。但需注意不同语言或库可能仅
2025-10-10 08:39:52
406
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅