Loushang AI SDK深入解析:流式输出、工具调用、Reasoning与结构化输出完整指南
【免费下载链接】loushangAI-native agent harness for coding workflows by python: multi-model LLM orchestration, stateful sessions, tool governance, traceable delivery, and provider routing for GPT, Claude, DeepSeek, Qwen, Kimi, GLM, and MiniMax.项目地址https://gitcode.com/gh_mirrors/lo/loushang点击查看免费下载Loushang AI SDKloushang.ai是 Loushang 项目内置的底层模型调用层专为 Python 开发者打造一套 API 同时驾驭 GPT、Claude、DeepSeek、Qwen、Kimi、GLM 和 MiniMax 等主流厂商完整支持流式输出、工具调用、Reasoning 推理与结构化输出。本文带你快速看懂它的核心设计从模型选择到四大进阶能力一篇讲透。 为什么需要统一的 AI SDK直接对接各家模型 API 的痛点很常见协议格式不一Anthropic Messages、OpenAI Chat Completions、OpenAI Responses、鉴权方式不同、流式事件粒度不一致、usage 计费口径有差异。Loushang 的解法是把差异全部收敛在 SDK 内部对上层只暴露一条调用链Model → CallOptions → 认证解析 → 协议适配 → 冻结请求 → 流式事件组装其核心机制是provider:endpoint:model三元组寻址每个模型都通过厂商、端点、模型 ID 三个字段唯一定位端点声明了baseUrl、能力是否支持流式/工具/图片和协议适配器运行时不做隐式回退。这样你拿到的AssistantMessage上始终带有完整的响应来源信息方便审计与排查。架构总览如下图所示图中Agent AI区域展示了模型访问层如何作为准入能力融入整个执行底座 流式输出统一事件流一次终结Loushang 的流式输出以stream()为入口返回AssistantMessageEventStream异步事件流。事件类型定义在 types.py全部事件归一为同一套语义start/text_start/text_delta/text_end文本增量thinking_delta推理过程增量toolcall_start/toolcall_delta/toolcall_end工具调用增量组装done终结事件携带完整AssistantMessage与stop_reasonerror携带类型化错误载荷关键正确性契约值得记住流必须恰好终结一次厂商静默无响应不会被自动补成功error或aborted终结之后不会再产生成功事件。事件流的队列缓冲与终态管理实现在 event_stream/stream.py。典型用法完整可运行示例见 02_stream.pyfrom loushang.ai import ApiKeyAuth, CallOptions, get_model, stream model get_model(moonshot, openai-completions, kimi-k2.6) events await stream( model, {messages: [{role: user, content: 从一数到三}]}, CallOptions(authApiKeyAuth(...), idle_timeout_seconds10), ) async for event in events: if event[type] text_delta: print(event[delta], end) message await events.result() # 拿到最终 AssistantMessage两个超时字段语义清晰timeout_seconds覆盖单次尝试的全程含首包idle_timeout_seconds只约束流式片段之间的空闲时间。️ 工具调用严格校验 并行组装工具治理是 Agent 可靠性的关键。Loushang 的工具链路设计为定义 → 校验 → 执行 → 回传闭环工具 schema 校验实现在 tool/validation.py。它的两个亮点1. 双校验策略。validate_tool_arguments提供严格模式与coerce强制转换模式严格模式拒绝2这种字符串数字coerce模式会转换参数并输出诊断信息转换路径、原类型、目标类型让模型偶尔嘴瓢传错类型不再直接炸掉整轮对话。2. 并行工具调用增量组装。流式场景下多个toolcall_delta事件按content_index增量拼装成完整ToolCall一轮返回多个调用时stop_reason为toolUse可参考 05_parallel_tools.py。离线示例 04_tools.py 演示了完整回传闭环定义add工具 → 收到ToolCall→ 校验参数 → 本地执行 → 用ToolResultMessage把结果带回上下文。另外CallOptions的pairing_mode默认为repair会自动修复历史对话中工具调用后结果缺失的悬空配对而不是让请求直接失败。 Reasoning预算可控的推理过程对支持推理的模型Loushang 通过ReasoningOptions提供统一的推理控制面定义在 options.pyfrom loushang.ai import CallOptions, ReasoningOptions options CallOptions( reasoningReasoningOptions( effortmedium, # 推理力度 budget_tokens2048, # 推理 token 预算 expose_summaryTrue, # 是否暴露推理摘要 ), )设计要点推理配置只解析一次并对照模型能力声明做校验各协议适配器负责把统一的推理参数映射到各自的 wire 协议不同厂商字段完全不同。推理 token 不会重复计入输出 token流式时以独立的thinking_delta事件呈现可与正文text_delta分通道展示。示例见 06_reasoning.py。 结构化输出Schema 即契约当你需要模型返回可直接落库的数据时complete_structured()配合StructuredOutputOptions是标准解法实现位于 structured.pyresult await complete_structured( model, {messages: [{role: user, content: 给出答案与置信分}]}, CallOptions(outputStructuredOutputOptions(modejson_schema, schemaANSWER_SCHEMA)), ) print(result.parsed) # 已是解析好的对象支持两种模式json_object要求返回合法 JSON 对象宽松场景使用json_schema传入 JSON Schema或 Pydantic 风格类型strict 模式下约束更严strict: True时会禁用额外属性两个关键行为能力不匹配时提前失败——如果模型不支持结构化输出或适配器没有对应映射错误会在调用厂商之前抛出避免浪费一次真实请求StructuredOutputResult同时保留raw原始消息和parsed解析结果调试与兜底都方便。可运行示例见 07_structured_output.py。 上手路径与配套资源推荐的学习路线是跟着 examples/ai/ 的 12 个编号示例走它们全部离线运行、不消耗真实额度示例能力01_complete.py完整返回02_stream.py流式事件04_tools.py工具调用与校验05_parallel_tools.py并行工具调用06_reasoning.pyReasoning 选项07_structured_output.py结构化输出模型目录内置覆盖anthropic、openai、deepseek、dashscopeQwen、moonshotKimi、zaiGLM、minimax等十余家厂商目录文件位于 model/models.json自定义 catalog 可用custom_model_file.py加载。 延伸阅读SDK 完整文档docs/en/sdk/README.mdAI 包设计说明src/loushang/ai/README.md错误与重试示例09_errors_retry.pyusage 与成本估算10_usage.py✅ 小结Loushang AI SDK 的四大支柱——统一流式事件、严格工具校验、可控 Reasoning、契约化结构化输出——背后是同一条设计主线把厂商差异冻结在协议适配器内部把正确性契约一次终结、提前失败、usage 不重复计暴露在公共 API 边界。无论你接的是 GPT、Claude 还是 DeepSeek、Kimi上层代码都只需要关心get_model→stream/complete/complete_structured这三步即可得到可审计、可恢复、可治理的模型调用能力。赞分享【免费下载链接】loushangAI-native agent harness for coding workflows by python: multi-model LLM orchestration, stateful sessions, tool governance, traceable delivery, and provider routing for GPT, Claude, DeepSeek, Qwen, Kimi, GLM, and MiniMax.项目地址https://gitcode.com/gh_mirrors/lo/loushang点击查看免费下载相关推荐python-sdk 结构化输出完全指南让 MCP 工具返回类型注解即输出 Schemapython sdk 结构化输出完全指南让 MCP 工具返回类型注解即输出 Schema 输出文章 MCP Python SDK 结构化输出指南从返回类型人工智能MCP 服务MCP Clientsresponsive-html-email-signature完全指南告别邮件签名排版噩梦5分钟打造专业响应式设计responsive html email signature完全指南告别邮件签名排版噩梦5分钟打造专业响应式设计 在数字化办公时代一个专业的邮件签名不仅HsMod炉石插件基于BepInEx的高级游戏体验优化方案HsMod炉石插件基于BepInEx的高级游戏体验优化方案 HsMod是一款基于BepInEx框架开发的炉石传说高级功能增强插件专为追求极致游戏效率和个性化游戏开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

奇迹MU 1.03H+ 单机架设完全指南:服务端配置与数据库还原实战

奇迹MU 1.03H+ 单机架设完全指南:服务端配置与数据库还原实战

简介:《奇迹架设 1.03H单机版》是一份面向奇迹私服爱好者的服务端资料整合包,专门帮助玩家在个人电脑上搭建经典奇迹1.03H版本的私人游戏服务器。该版本源自二〇〇一年韩国大型多人在线角色扮演游戏“奇迹”,包含新地图、新怪物、新装备以及平…

2026/10/11 10:12:03 阅读更多 →
IOP一致性测试实战:跨系统互操作性验证与工程化落地

IOP一致性测试实战:跨系统互操作性验证与工程化落地

1. 项目背景与核心问题拆解1.1 什么是 IOP 一致性测试IOP,全称 Interoperability,中文一般叫互操作性。一致性测试则是验证某个实现是否符合既定规范的过程。把这两个词拼在一起,IOP 一致性测试的核心目标就一句话:确认两个或多个…

2026/10/11 10:11:02 阅读更多 →
内核报错unable to handle kernel paging request:内存还是驱动?排查全攻略

内核报错unable to handle kernel paging request:内存还是驱动?排查全攻略

后台一报“unable to handle kernel paging request”,群里往往紧接着就有人喊“内存坏了,赶紧换”。这个反应我太熟悉了,因为自己刚入行时也这么喊过,结果折腾半天换了三根内存条,问题纹丝不动,最后发现是…

2026/10/11 10:11:02 阅读更多 →

最新新闻

窗口函数 SUM() OVER() 详解:PARTITION BY 与 ORDER BY 的累计计算逻辑

窗口函数 SUM() OVER() 详解:PARTITION BY 与 ORDER BY 的累计计算逻辑

很多人学了窗口函数,一看到SUM() OVER(PARTITION BY ... ORDER BY ...)这种写法还是会懵,特别是ORDER BY加上之后,结果怎么就从“分组总和”变成“累加值”了?这篇文章继续走实战路线,我会把SUM() OVER()从基础语法到进…

2026/10/11 23:40:47 阅读更多 →
数据库课程设计:电力收费系统表结构、触发器与存储过程全解析

数据库课程设计:电力收费系统表结构、触发器与存储过程全解析

简介:《数据库课程设计电力公司收费系统.doc》是一份完整的数据库课程设计报告,面向高校计算机、软件工程等专业学生,适用于电力公司收费管理信息系统设计课题。文档围绕客户、用电类型、员工、用电信息、费用管理、收费登记六大核心数据表展…

2026/10/11 23:40:47 阅读更多 →
JMeter+InfluxDB+Grafana:搭建性能测试实时监控看板

JMeter+InfluxDB+Grafana:搭建性能测试实时监控看板

做性能测试的人基本都经历过这样的场景:JMeter压着压着,突然想知道当前的TPS到底有没有掉链子,响应时间的曲线是不是已经拐头向上,可日志刷得太快根本看不出来。一开始我也用JMeter自带的监听器,结果压测刚跑几分钟&am…

2026/10/11 23:40:47 阅读更多 →
内网安全评估:揭秘ACL权限滥用与横向移动链路

内网安全评估:揭秘ACL权限滥用与横向移动链路

内网安全评估做到第三周的时候,我在一份共享文件夹的ACL导出清单里看到了一个非常扎眼的组名:SHARE MODERATORS。这个组在域里并不显眼,不在本地管理员组,也不在任何域管理组里,可它的权限范围却覆盖了全公司的核心共享…

2026/10/11 23:40:47 阅读更多 →
同城家政服务平台搭建,多商户派单方案详解

同城家政服务平台搭建,多商户派单方案详解

同城家政服务平台搭建:多商户入驻与智能派单方案详解同城家政行业早已从单一门店自营模式,转向多商户平台化联营发展。平台整合全城多家家政公司、个体服务商、持证服务师傅,统一承接用户订单,通过智能调度完成订单分发与履约。相…

2026/10/11 23:39:46 阅读更多 →
PDF加密权限解除实战:用qpdf免费命令行一键解锁

PDF加密权限解除实战:用qpdf免费命令行一键解锁

上周同事甩过来一个PDF,说打印店打不了,让我帮忙看看。我一看,文件本身没坏,是加了权限限制——允许查看,但打印和复制都被锁了。这种问题我一年能遇到几十次:文档在手机上看一点毛病没有,真要用…

2026/10/11 23:39:46 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →