TinyFish Web Agenting 平台技术分析一、新闻概述1. 标题TinyFish：从 Web Scraping 到 Web Agenting 的技术范式转变2. 发布时间2025 年 1 月 31 日3. 来源X (Twitter) @techNmak二、核心内容1. 事件摘要A. 主要内容TinyFish 发布新一代 Web 数据获取平台，宣称传统 Web Scraping 已经过时，Web Agenting 时代正式到来。B. 核心亮点用自然语言替代 CSS 选择器统一 API 接口处理任意数量目标网站真实浏览器自动化，非模拟请求企业级基础设施，生产环境就绪2. 关键信息A. 产品定位将整个实时 Web 转变为单一 API 接口B. 核心价值输入：自然语言指令（如 "查找 X 的可用性"）目标：1 个或 100 个 URL输出：结构化 JSON 数据C. 技术特点访问实时 Web，非模拟处理动态 JavaScript 内容内置日志、错误处理、结构化数据3. 背景介绍A. 痛点分析传统 Web Scraping 面临的核心问题：CSS 选择器（div > .class > span）在网站更新时频繁失效为每个新目标构建自定义 Bot 浪费工程时间B. 技术演进从基于选择器的静态抓取，向基于智能 Agent 的动态交互转变三、详细报道1. 主要内容A. One API, Many Sites（统一 API，多站点支持）核心特点：无论访问 1 个还是 50 个 URL，使用相同的接口契约开发者专注于业务逻辑目标TinyFish 处理导航、点击、输入等底层操作技术优势：graph LR A[开发者] -->|自然语言指令| B[TinyFish API] B -->|统一契约| C[目标网站1] B -->|统一契约| D[目标网站2] B -->|统一契约| E[目标网站N] C -->|结构化数据| B D -->|结构化数据| B E -->|结构化数据| B B -->|JSON响应| AB. Real Automation（真实自动化）核心能力：不仅是"读取"页面内容真实交互：填写表单、多步骤导航、处理动态 JS 内容技术对比：传统 ScrapingTinyFish Web Agenting静态 HTML 解析真实浏览器执行选择器定位元素自然语言理解无法处理 JS 交互完整 JS 执行环境单步数据提取多步骤流程自动化C. Production Ready（生产就绪）企业级特性：大型企业使用的基础设施内置日志系统错误处理机制结构化数据输出架构设计：graph TB subgraph 开发者侧 A[自然语言指令] B[业务逻辑层] end subgraph TinyFish 平台 C[API 网关] D[Agent 编排层] E[浏览器池] F[日志系统] G[错误处理] end subgraph 目标网站 H[(网站1)] I[(网站2)] J[(网站N)] end A --> C C --> D D --> E E --> H E --> I E --> J H --> D I --> D J --> D D --> F D --> G F --> B G --> B D --> B2. 技术细节A. 技术栈推测基于描述，可能采用：浏览器自动化：Playwright 或 PuppeteerAI 理解层：LLM 驱动的自然语言处理任务编排：工作流引擎管理多步骤操作数据提取：结构化输出映射B. 与传统方案对比维度传统 ScrapingWeb Agenting维护成本高（选择器频繁失效）低（AI 适应页面变化）扩展性需为每个站点定制统一接口自动适配交互能力仅限静态内容完整浏览器交互开发效率低高技术门槛中等低（自然语言）C. 适用场景价格监控（电商、旅游）数据聚合（新闻、招聘）自动化测试（表单提交流程）竞品分析（动态内容获取）-供应链监控（库存、价格）3. 数据与事实A. 市场反响发布后短时间内获得 7,812 次浏览技术社区关注度较高B. 商业模式企业级基础设施对外提供服务面向开发者的 API 产品四、影响分析1. 行业影响A. 技术趋势Web Scraping 向 AI Agent 演进是大势所趋自然语言交互将成为数据获取的标准接口传统爬虫工具面临升级压力B. 竞争格局与传统爬虫工具（Scrapy、BeautifulSoup）形成差异化竞争与其他 AI Agent 平台（如 MultiOn）进入同一赛道可能催生更多"API 化"的 Web 交互服务2. 用户影响A. 开发者降低技术门槛：无需精通选择器和 DOM 结构提升开发效率：快速适配新目标网站减少维护成本：页面变化无需修改代码B. 企业数据获取成本降低业务响应速度提升可扩展性增强C. 网站面临更智能的数据访问压力可能需要升级反爬虫策略API 开放可能成为新趋势3. 技术趋势A. AI Agent 范式从"指定怎么做"到"说明做什么"AI 负责理解和执行细节人类专注于业务逻辑B. Web 即 API网页本身成为 API 接口UI 交互可通过 API 触发前后端边界进一步模糊C. 生态影响可能催生新一代开发工具测试自动化领域将受益数据集成成本降低五、各方反应1. 官方定位定位为企业级基础设施强调生产环境就绪主张 Web Scraping 已经过时2. 技术社区评价A. 积极观点自然语言接口是未来方向降低数据获取门槛统一 API 提升开发效率B. 关注点成本问题（企业级基础设施费用）可靠性和稳定性验证法律和合规性（数据获取边界）C. 质疑声音真实场景中的复杂度可能被低估性能和延迟问题与专业爬虫工具的效能对比3. 潜在挑战A. 技术挑战复杂交互场景的准确率性能优化（大规模并发）异常处理和恢复B. 商业挑战定价策略SLA 保证客户获取成本C. 法律风险数据获取合规性robots.txt 尊重知识产权边界六、相关技术1. 同类产品MultiOn：AI Agent 驱动的 Web 自动化Browse AI：无代码 Web 抓取机器人Apify：Web 抓取和自动化平台PhantomBuster：云端自动化工具2. 技术栈参考Playwright：微软出品的浏览器自动化工具Puppeteer：Chrome DevTools Protocol 封装Selenium：传统浏览器自动化框架3. 相关概念Web Scraping：传统网页数据抓取RPA（机器人流程自动化）：业务流程自动化AI Agent：AI 驱动的智能代理七、总结TinyFish 代表了 Web 数据获取技术的演进方向：从依赖脆弱选择器的传统 Scraping，转向基于 AI 理解的 Web Agenting。其核心价值在于用自然语言替代技术细节，用统一接口降低复杂度，用真实浏览器实现完整交互能力。这一趋势反映了 AI Agent 范式在更广泛领域的渗透：将复杂的技术细节抽象化，让开发者专注于业务逻辑本身。对于数据密集型业务和需要频繁获取 Web 内容的应用场景，这类平台将带来显著的生产力提升。然而，生产环境的大规模应用仍需验证其可靠性、成本效益和法律合规性。Web Scraping 的"死亡"可能为时尚早，但 Web Agenting 的时代确实已经到来。参考资料Tech with Mak on X: "Web Scraping is dead. Web Agenting is here."
Computer History Museum 推出 OpenCHM 数字门户技术分析
Computer History Museum 推出 OpenCHM 数字门户技术分析一、新闻概述1. 标题Computer History Museum 推出 OpenCHM 数字门户，向全球开放其庞大藏品2. 发布时间2026 年 1 月 21 日3. 来源Computer History Museum（计算机历史博物馆）官方新闻稿二、核心内容1. 事件摘要A. 主要内容Computer History Museum（CHM）宣布推出 OpenCHM，这是一个新的数字门户，为全球访问其无与伦比的收藏品提供渠道。B. 核心亮点由 Gordon and Betty Moore Foundation 资助的开放数字平台提供全球访问权限，打破物理空间限制集成先进的搜索工具和策展内容提供 API 开发者门户，支持技术集成2. 关键信息A. 发布内容OpenCHM 数字门户正式上线B. 重要数据多年数字化计划的重大里程碑持续数字化将定期添加更多历史材料覆盖文档、图像、软件、实物等多种类型藏品C. 涉及产品/技术OpenCHM 数字门户Qi 馆藏管理系统（由 KeepThinking 开发）3. 背景介绍A. 前置背景Computer History Museum 是解码技术及其对世界持续影响的领先博物馆，拥有 incomparable collection of computing artifacts（无与伦比的计算 artifacts 收藏）。B. 相关上下文这是 CHM 多年数字化计划的重大里程碑，旨在将实体藏品转化为全球可访问的数字资源。三、详细报道1. 主要内容A. 功能更新OpenCHM 平台的主要功能包括：高级搜索工具：配备智能过滤器，可搜索文档、图像、软件、实物等，允许用户探索特定的 artifacts、档案和口述历史策展人精选和故事：突出具有远见的先驱者和突破性创新亮点和发现墙：展示稀有和标志性的 artifacts我的专辑：赋能用户创建、保存和分享包含所选材料的自定义文件夹开发者门户：提供 API 访问、示例代码和注册B. 技术架构OpenCHM 的技术架构设计体现了现代数字博物馆平台的最佳实践：graph TB subgraph 用户层 A1[学者] A2[教师] A3[学生] A4[公众] end subgraph OpenCHM 平台 B1[搜索工具] B2[策展内容] B3[发现墙] B4[我的专辑] B5[开发者门户] end subgraph 核心系统 C1[Qi 馆藏管理系统] C2[数字化资源库] end A1 --> B1 A2 --> B2 A3 --> B3 A4 --> B4 A1 --> B5 B1 --> C1 B2 --> C1 B3 --> C2 B4 --> C2 B5 --> C1 C1 --> C2C. 技术特点由 KeepThinking 设计并协作开发采用创新的 Qi 馆藏管理系统作为底层支撑提供开放的 API 接口，支持第三方集成持续数字化流程，定期添加新内容D. 用户体验设计策展叙述与自主探索相结合智能过滤器支持精准检索自定义专辑功能支持个性化收藏与分享适应从专家到普通公众的不同用户群体2. 数据与事实A. 藏品类型文档图像软件实物 artifacts口述历史B. 用户群体学者教师学生普通公众3. 项目资金来源OpenCHM 由 Gordon and Betty Moore Foundation 以及其他慷慨捐助者资助。Gordon and Betty Moore Foundation 项目总监 Janet Coffey 表示：基金会对 CHM 向更广泛受众开放独特收藏的前景感到兴奋，平衡 CHM 历史学家和领域专家引人入胜的策展叙述与探索个人兴趣的工具和能力，使该平台真正引人注目。Moore Foundation 重视 OpenCHM 团队对深思熟虑的设计和文档的承诺，希望这将激励并使其他组织能够更开放地分享他们的收藏。四、影响分析1. 行业影响A. 数字博物馆发展趋势OpenCHM 的推出代表了数字博物馆领域的重要发展趋势：从实体展览向数字化可访问性转变开放 API 促进数据共享和创新应用用户生成内容（自定义专辑）增强参与度B. 技术影响Qi 馆藏管理系统的应用为其他博物馆提供了参考开放 API 模式可能成为行业标准数字化工作流程的最佳实践文档将惠及整个行业2. 用户影响A. 研究者全球访问权限消除了地理限制高级搜索工具提高研究效率API 支持批量数据获取和分析B. 教育工作者丰富的策展内容可直接用于教学口述历史提供第一手资料自定义专辑功能便于课程材料组织C. 普通公众降低了解计算历史的门槛发现墙展示激发兴趣和好奇心个性化收藏功能支持知识分享D. 迁移成本无需迁移，免费开放访问用户可以选择性使用感兴趣的功能3. 技术趋势A. 开放数据运动OpenCHM 体现了文化遗产机构向开放数据转型的趋势，通过 API 和开发者门户促进数据的再利用和创新应用。B. 用户体验优先平台设计平衡了专业研究和大众探索的需求，智能搜索和个性化功能提升了用户体验。C. 持续数字化项目强调持续数字化进程，确保历史材料不断被添加到平台，体现了动态发展的理念。五、各方反应1. 官方回应CHM 总裁兼首席执行官 Marc Etkind 表示：OpenCHM 旨在激发发现、点燃好奇心，让数字时代的故事对各地每个人都更容易接触。我们正在为新受众解锁收藏。2. 业内评价A. 资助方观点Gordon and Betty Moore Foundation 对项目表示支持，认为平台的平衡设计和开放文档将为其他机构树立榜样。B. 设计方评价KeepThinking 作为协作设计方，其 Qi 馆藏管理系统为平台提供了创新的技术支撑。3. 用户反馈由于平台刚刚发布，用户反馈尚待收集。根据设计目标，预期将获得以下反馈：正面评价：搜索功能强大、内容丰富、界面友好关注点：API 稳定性、内容更新频率、移动端体验六、相关链接1. 官方公告Computer History Museum 官方网站OpenCHM 数字门户2. 相关机构Gordon and Betty Moore FoundationKeepThinking（Qi 系统开发商）3. 技术文档OpenCHM 开发者门户（包含 API 文档和示例代码）参考资料Computer History Museum Launches Digital Portal to Its Vast Collection - CHM
Octopus LLM API 聚合服务技术分析一、概述1. 项目简介Octopus 是一个面向个人的 LLM API 聚合与负载均衡服务，旨在为用户提供统一接入多个大语言模型提供商的能力。项目采用 Go 语言后端结合 Next.js 前端的架构设计，提供简洁优雅的 Web 管理界面。2. 核心价值A. 统一接入通过单一服务接入 OpenAI、Anthropic、Gemini 等多个 LLM 提供商，简化多模型调用流程。B. 成本优化支持多 API Key 轮询使用，智能选择最低延迟的端点，帮助用户优化使用成本和响应速度。C. 协议兼容实现 OpenAI Chat、OpenAI Responses、Anthropic API 等多种协议的无缝转换，降低客户端集成复杂度。二、系统架构1. 技术栈graph TB Client[客户端] --> API[Octopus API] API --> LB[负载均衡层] LB --> Channel1[OpenAI 通道] LB --> Channel2[Anthropic 通道] LB --> Channel3[Gemini 通道] Channel1 --> Provider1[提供商1] Channel1 --> Provider2[提供商2] Channel2 --> Provider3[提供商3] Channel3 --> Provider4[提供商4] API --> DB[(数据库)] API --> Cache[内存缓存] Cache --> DB Web[Web管理面板] --> API2. 组件说明A. 后端服务（Go）提供统一的 API 接口实现负载均衡和协议转换处理通道管理和请求路由统计数据收集与存储B. 前端管理界面（Next.js）通道配置与管理模型分组与负载均衡策略设置价格管理与统计数据展示系统配置与监控C. 数据存储支持 SQLite、MySQL、PostgreSQL存储通道配置、模型信息、统计数据自动创建表结构三、核心功能1. 通道管理通道是连接 LLM 提供商的基本配置单元。A. 多通道聚合支持同时配置多个 LLM 提供商的通道，每个通道包含：基础 URL多个 API Key多个端点地址B. 智能端点选择每个通道支持配置多个端点，系统自动选择延迟最短的端点进行请求。C. 协议类型支持协议类型自动追加路径应用场景OpenAI Chat/chat/completions对话补全OpenAI Responses/responses结构化响应Anthropic/messagesClaude 模型Gemini/models/:model:generateContentGemini 模型★ Insight ─────────────────────────────────────自动路径拼接设计：用户只需提供基础 URL，系统根据通道类型自动追加 API 路径，这种设计降低了配置复杂度，减少了用户错误。多端点智能选择：通过实时监测各端点延迟，自动选择最优路径，这种动态优化机制能有效提升用户体验。─────────────────────────────────────────────────2. 分组管理与负载均衡分组将多个通道聚合为一个统一的外部模型名称。A. 负载均衡模式graph LR Request[请求] --> Router{负载均衡器} Router -->|轮询| CH1[通道1] Router -->|随机| CH2[通道2] Router -->|故障转移| CH3[通道3] Router -->|加权| CH4[通道4] CH1 --> Provider1[提供商1] CH2 --> Provider2[提供商2] CH3 --> Provider3[提供商3] CH4 --> Provider4[提供商4]B. 模式详解模式描述适用场景轮询按顺序依次使用各通道通道能力相近，需要均匀分配请求随机随机选择可用通道通道能力相近，不需要严格顺序故障转移优先使用高优先级通道，失败时切换有主备通道之分，需要高可用性加权按配置权重分配请求通道能力不同，需要按比例分配★ Insight ─────────────────────────────────────故障转移机制：高优先级通道优先使用，失败时自动降级到低优先级通道，这种设计确保了服务的高可用性，避免了单点故障。加权负载均衡：通过权重配置实现按能力分配请求，这种方式既充分利用了高能力通道，又避免了过载风险。─────────────────────────────────────────────────3. 协议转换系统支持在不同 API 协议之间进行无缝转换。A. 转换流程sequenceDiagram participant C as 客户端 participant O as Octopus participant P as LLM 提供商 C->>O: OpenAI 格式请求 O->>O: 协议转换 O->>P: Anthropic 格式请求 P-->>O: Anthropic 格式响应 O->>O: 协议转换 O-->>C: OpenAI 格式响应B. 转换优势客户端无需修改代码即可切换模型提供商统一使用 OpenAI SDK 调用所有模型降低多模型集成复杂度4. 价格管理A. 数据来源从 models.dev 自动同步模型价格创建通道时自动添加新模型的价格信息支持用户手动设置自定义价格B. 价格优先级优先级来源说明高价格管理页面用户手动设置的价格低models.dev自动同步的默认价格★ Insight ─────────────────────────────────────价格同步机制：从 models.dev 自动获取价格数据，减少了手动维护工作，同时允许用户覆盖默认价格，兼顾了自动化和灵活性。统计数据批量写入：统计数据先存储在内存中，定期批量写入数据库，这种设计避免了频繁 I/O 操作对性能的影响。─────────────────────────────────────────────────5. 统计分析A. 统计指标请求数量Token 消耗量成本追踪通道性能数据B. 数据持久化策略统计数据先存储在内存中按配置的时间间隔批量写入数据库程序正常退出时确保数据持久化四、部署与配置1. 快速部署A. Docker 部署docker run -d --name octopus \ -v /path/to/data:/app/data \ -p 8080:8080 \ bestrui/octopusB. Docker Compose 部署wget https://raw.githubusercontent.com/bestruirui/octopus/refs/heads/dev/docker-compose.yml docker compose up -d2. 配置文件配置文件默认位于 data/config.json，首次启动时自动生成。A. 完整配置示例{ "server": { "host": "0.0.0.0", "port": 8080 }, "database": { "type": "sqlite", "path": "data/data.db" }, "log": { "level": "info" } }B. 数据库配置数据库类型配置值连接字符串格式SQLitesqlitedata/data.dbMySQLmysqluser:password@tcp(host:port)/dbnamePostgreSQLpostgrespostgresql://user:password@host:port/dbname?sslmode=disable3. 环境变量所有配置选项均可通过环境变量覆盖，格式为 OCTOPUS_ + 配置路径。环境变量配置选项说明OCTOPUS_SERVER_PORTserver.port服务端口OCTOPUS_SERVER_HOSTserver.host监听地址OCTOPUS_DATABASE_TYPEdatabase.type数据库类型OCTOPUS_DATABASE_PATHdatabase.path数据库连接字符串OCTOPUS_LOG_LEVELlog.level日志级别五、客户端集成1. OpenAI SDKfrom openai import OpenAI client = OpenAI( base_url="http://127.0.0.1:8080/v1", api_key="sk-octopus-your-api-key", ) completion = client.chat.completions.create( model="octopus-gpt-4o", messages=[ {"role": "user", "content": "你好"}, ], ) print(completion.choices[0].message.content)2. Claude Code编辑 ~/.claude/settings.json：{ "env": { "ANTHROPIC_BASE_URL": "http://127.0.0.1:8080", "ANTHROPIC_AUTH_TOKEN": "sk-octopus-your-api-key", "ANTHROPIC_MODEL": "octopus-sonnet-4-5", "ANTHROPIC_SMALL_FAST_MODEL": "octopus-haiku-4-5" } }3. Codex编辑 ~/.codex/config.toml：model = "octopus-codex" model_provider = "octopus" [model_providers.octopus] name = "octopus" base_url = "http://127.0.0.1:8080/v1"编辑 ~/.codex/auth.json：{ "OPENAI_API_KEY": "sk-octopus-your-api-key" }★ Insight ─────────────────────────────────────统一接口设计：通过 Octopus 作为中间层，所有客户端都可以使用统一的 API 格式调用不同提供商的模型，这种设计大大简化了多模型集成的复杂度。兼容性优先：完全兼容 OpenAI SDK 和其他主流工具的接入方式，用户无需修改现有代码即可接入 Octopus。─────────────────────────────────────────────────六、安全注意事项1. 默认凭据默认用户名：admin默认密码：admin首次登录后必须立即修改密码2. 关闭注意事项使用 Ctrl+C 或 SIGTERM 信号正常关闭确保统计数据正确写入数据库避免使用 kill -9 等强制终止方式七、技术亮点1. 前端资源嵌入前端构建产物嵌入到 Go 二进制文件中，部署时无需额外的前端服务器，简化了部署流程。2. 多数据库支持支持 SQLite、MySQL、PostgreSQL，用户可以根据需求选择合适的数据库，从单机部署到集群部署均可覆盖。3. 智能统计数据管理内存缓存 + 批量写入的策略，在保证数据完整性的同时，最大化了系统性能。4. 优雅的协议转换支持多种主流 LLM API 协议的互转，降低了用户切换模型提供商的成本。八、适用场景1. 个人开发者需要同时使用多个 LLM 提供商希望简化多模型调用流程需要统一的成本管理和统计分析2. 小型团队需要共享多个 API Key需要负载均衡提高可用性需要统一的模型调用接口3. 应用集成为应用提供统一的 LLM 接入层降低多模型集成复杂度便于模型切换和成本控制参考资料Octopus GitHub 仓库
IPSpot：Python IP 地址地理位置查询工具技术分析一、新闻概述1. 标题IPSpot：支持 IPv4/IPv6 的 Python IP 地址与地理位置查询库2. 发布时间2025 年 1 月 26 日3. 来源GitHub 开源项目：openscilab/ipspot二、核心内容1. 事件摘要A. 主要内容OpenSciLab 发布了一款名为 IPSpot 的 Python 库，用于获取系统的公网和内网 IP 地址，并提供地理位置信息查询功能。B. 核心亮点支持 IPv4 和 IPv6 双栈查询提供公网和内网地址检测集成多个 API 提供商，具备故障转移机制提供 Python 库和 CLI 两种使用方式支持地理位置信息查询（国家、城市、经纬度等）2. 关键信息A. 版本信息当前版本：0.7PyPI 已发布支持 Python 3B. 功能特性公网 IPv4/IPv6 查询内网 IPv4/IPv6 识别地理位置信息（可选）多 API 提供商支持自动重试和回退机制C. 涉及技术Python 3REST API 调用IPv4/IPv6 网络协议地理位置服务3. 背景介绍A. 应用场景IPSpot 主要用于网络诊断、地理位置识别、安全审计等场景，帮助开发者快速获取系统的网络地址信息。B. 相关上下文传统的 IP 查询工具通常只支持单一协议或单一 API 源，IPSpot 通过多 API 源和故障转移机制提高了可靠性。三、详细报道1. 主要功能A. 公网 IP 查询支持通过多个 API 提供商获取公网 IP 地址：IPv4 API：ip-api.com、ipinfo.io、ip.sb、ident.me、tnedi.me 等IPv6 API：ip.sb、ident.me、tnedi.me、ipleak.net 等B. 内网 IP 识别自动检测系统的内网地址：IPv4：如 192.168.x.x、10.x.x.xIPv6：如 fe80:: 开头的链路本地地址C. 地理位置信息可选查询地理位置数据，包括：国家和地区城市经纬度坐标时区组织/ISP 信息2. 技术架构graph TB User[用户] -->|API调用| Library[IPSpot库] User -->|CLI命令| CLI[命令行工具] Library --> APIManager[API管理器] CLI --> APIManager APIManager -->|策略选择| APISel[API选择器] APISel --> API1[ip-api.com] APISel --> API2[ipinfo.io] APISel --> API3[ip.sb] APISel --> APIMore[其他API...] API1 -->|失败| Fallback[故障转移] API2 -->|失败| Fallback API3 -->|失败| Fallback Fallback --> APISel API1 -->|成功| Response[响应数据] API2 -->|成功| Response API3 -->|成功| Response Response --> Parser[数据解析器] Parser --> Result[格式化输出]D. 技术特点多 API 源支持：支持 16 个 IPv4 API 提供商支持 9 个 IPv6 API 提供商可指定特定 API 或使用自动模式故障转移机制：自动模式（auto）：按顺序尝试所有 API安全模式（auto-safe）：仅尝试可靠的 API支持自定义重试次数和延迟灵活的配置选项：可配置超时时间支持指数退避重试可关闭地理位置查询3. 使用方式A. Python 库方式基本用法：from ipspot import get_public_ipv4, get_private_ipv4 # 获取公网 IPv4 result = get_public_ipv4() # 返回：{'status': True, 'data': {'ip': 'xx.xx.xx.xx', 'api': 'ip-api.com'}} # 获取内网 IPv4 result = get_private_ipv4() # 返回：{'status': True, 'data': {'ip': '10.36.18.154'}}带地理位置：from ipspot import get_public_ipv4, IPv4API result = get_public_ipv4( api=IPv4API.IP_API_COM, geo=True, timeout=10 ) # 返回包含地理位置的详细信息B. 命令行方式基本查询：ipspot指定 API：ipspot --ipv4-api="ipinfo.io"仅查询 IP（不含地理位置）：ipspot --no-geo4. API 提供商对比A. IPv4 API 支持API 提供商特点ip-api.com支持地理位置ipinfo.io支持地理位置ip.sb支持 IPv4/IPv6ident.me简单快速tnedi.me轻量级ipapi.co支持详细地理信息ipleak.netDNS 泄露检测my-ip.io基础 IP 查询ifconfig.co网络配置信息reallyfreegeoip.org免费地理位置freeipapi.com免费 APImyip.la亚洲优化ipquery.io查询工具ipwho.is详细 IP 信息wtfismyip.com简单查询B. IPv6 API 支持API 提供商特点ip.sb支持 IPv6ident.me支持 IPv6tnedi.me支持 IPv6ipleak.netIPv6 泄露检测my-ip.ioIPv6 支持ifconfig.coIPv6 支持reallyfreegeoip.orgIPv6 地理位置myip.laIPv6 支持freeipapi.comIPv6 API四、技术细节分析1. 设计模式A. 策略模式IPSpot 使用策略模式实现多 API 支持，允许用户选择不同的 API 提供商，并在运行时切换。B. 故障转移模式通过自动尝试下一个可用的 API，确保服务的可靠性。C. 工厂模式根据用户指定的 API 类型或自动模式，创建相应的 API 客户端。2. 错误处理A. 重试机制支持自定义最大重试次数可配置重试延迟支持指数退避算法B. 超时控制可设置请求超时时间防止长时间等待无响应的 API3. 数据结构A. 标准响应格式{ 'status': True, # 请求状态 'data': { # 数据内容 'ip': 'xx.xx.xx.xx', 'api': 'ip-api.com', # ... 其他字段 } }B. 地理位置数据{ 'country': 'Germany', 'country_code': 'DE', 'region': 'Bavaria', 'city': 'Nuremberg', 'latitude': 49.4527, 'longitude': 11.0783, 'timezone': 'Europe/Berlin', 'organization': 'Hetzner Online GmbH' }五、影响分析1. 技术价值A. 开发便利性简化了 IP 查询的集成工作提供统一的 API 接口支持多种使用场景B. 可靠性提升多 API 源降低了单点故障风险自动故障转移提高了服务可用性重试机制增强了容错能力2. 应用场景A. 网络诊断快速获取当前网络的公网 IP识别网络配置问题验证 VPN 或代理设置B. 安全审计检测 IP 泄露验证加密连接的有效性审计网络访问记录C. 地理位置服务内容地域限制用户位置分析时区自动识别3. 技术趋势A. IPv6 普及IPSpot 对 IPv6 的支持反映了互联网向 IPv6 过渡的趋势。B. API 多源化采用多 API 源提高可靠性的做法，是现代云原生应用的设计趋势。C. 开源生态作为开源项目，IPSpot 展示了 Python 生态在工具类库方面的活跃度。六、各方反应1. 项目状态项目在 GitHub 上活跃维护已发布到 PyPI，便于安装使用提供 Discord 社区支持2. 技术特点代码质量良好（通过 Codecov 检测）支持最新的 Python 3提供完整的文档和示例3. 社区反馈项目获得 GitHub Star 支持提供捐赠渠道支持项目发展欢迎社区贡献和问题反馈七、相关链接1. 项目资源GitHub 仓库：https://github.com/openscilab/ipspotPyPI 包：pip install ipspot2. 相关文档Python Packaging User Guide项目 README 和使用示例八、总结IPSpot 是一个功能完善、设计合理的 IP 地址查询工具。它通过多 API 源和故障转移机制，解决了单一 API 源可靠性不足的问题。同时，对 IPv4/IPv6 的双栈支持以及地理位置查询功能，使其在网络诊断、安全审计等场景中具有很强的实用性。对于 Python 开发者而言，IPSpot 提供了一个简单易用的接口，可以快速集成到各种应用中。项目的开源性质和活跃的社区支持，也为未来的功能扩展和维护提供了保障。参考资料IPSpot GitHub Repository
LinkAce 自托管书签归档工具技术分析一、新闻概述1. 标题LinkAce 2.0 正式发布：自托管书签归档解决方案2. 发布时间2025 年 1 月（最新版本）3. 来源GitHub 官方仓库：Kovah/LinkAce二、核心内容1. 事件摘要A. 主要内容LinkAce 是一个功能强大的自托管书签归档解决方案，旨在帮助用户管理个人链接存档。用户可以保存文章以备后读、收藏实用工具、长期保留重要网络内容，所有操作都在一个集中化的平台完成。B. 核心亮点完全自托管，数据自主可控多用户支持，内部共享链接、列表和标签OAuth 和 OIDC 单点登录支持自动化链接监控，检测失效链接集成 Internet Archive 自动归档完整 REST API，支持与 2500+ 应用集成2. 关键信息A. 版本号LinkAce 2.0（重大升级版本）B. 技术栈基于 Laravel 框架构建支持 Docker 部署支持 Kubernetes 部署（Beta）提供 REST APIC. 许可证开源项目（具体许可证类型见 GitHub 仓库）3. 背景介绍A. 项目定位LinkAce 不是要替代浏览器书签，而是提供一个强大的个性化数据库，用于策划和管理网络资源。适合专业人士、研究人员以及重度互联网用户。B. 应用场景个人知识管理和资料收集团队内部资源共享研究资料归档书签长期保存三、详细报道1. 主要功能A. 组织管理使用列表和标签组织书签支持高级搜索，包含不同过滤器和排序选项提供书签小工具，可从任何浏览器快速保存链接B. 多用户与共享多用户支持内部共享链接、列表或标签OAuth 和 OIDC 单点登录C. 自动化功能自动链接监控：当链接失效或移动时通知用户通过 Internet Archive 自动归档保存的网站自动生成标题和描述D. API 与集成完整的 REST API，可从其他应用和服务访问所有功能在 Zapier 上可用，集成 2500+ 应用程序支持通过 RSS 订阅私有和公共列表E. 数据管理支持从 HTML 导入和导出书签支持完整的数据库和应用备份到任何 AWS S3 兼容存储F. 用户体验提供明暗主题，可手动切换或自动切换链接可设置为私有或公开友好的用户界面2. 技术架构A. 系统架构graph TB User[用户] --> Web[Web界面] User --> API[REST API] User --> Bookmarklet[书签小工具] Web --> App[LinkAce应用] API --> App Bookmarklet --> App App --> DB[(数据库)] App --> Cache[缓存] App --> Storage[存储] App --> Monitor[链接监控] App --> Archive[Internet Archive] Monitor --> App Archive --> App App --> Zapier[Zapier集成] App --> RSS[RSS订阅] Zapier --> External[2500+外部应用] RSS --> RSS_User[RSS订阅者]B. 部署方式Docker 部署（推荐）非 Docker 部署一键云端部署Kubernetes 部署（Beta）官方托管服务（Beta 候补名单）3. 技术细节A. 数据存储关系型数据库存储元数据支持 AWS S3 兼容存储进行备份B. 认证机制OAuth 支持OIDC 单点登录多用户权限管理C. 监控机制定期检查链接可用性失效链接自动通知链接移动检测四、影响分析1. 行业影响A. 自托管趋势LinkAce 是自托管工具浪潮的一部分，反映了用户对数据隐私和自主权的重视。B. 知识管理市场填补了浏览器书签和知识库工具之间的空白，提供专业的链接管理解决方案。2. 用户影响A. 目标用户需要管理大量研究资料的学者需要团队共享资源的专业人士注重数据隐私的个人用户B. 使用门槛需要一定的技术能力进行部署和维护Docker 部署降低了使用门槛C. 迁移成本支持 HTML 书签导入，降低迁移成本REST API 便于与现有工具集成3. 技术趋势A. API 优先设计LinkAce 采用 API 优先设计，便于与其他服务集成，符合现代应用开发趋势。B. 自动化增强自动监控、自动归档等自动化功能减少了用户手动维护的成本。C. 多用户协作多用户和共享功能使其从个人工具扩展为团队协作工具。五、各方反应1. 开发者态度开发者 Kevin Woblick 明确表示，这是他在业余时间开发的项目，不提供免费的个人支持、定制或安装帮助。用户可以通过社区讨论获取帮助。2. 支持渠道社区讨论区Open Collective、Patreon 或 GitHub 付费支持项目文档3. 生态建设提供多语言翻译支持开放贡献指南活跃的贡献者社区六、相关链接1. 官方资源GitHub 仓库：https://github.com/Kovah/LinkAce官方网站：https://www.linkace.org项目文档：见 GitHub Wiki2. 部署相关Docker 部署指南Kubernetes 部署指南（Beta）升级指南（LinkAce 1.x 到 2.0）3. 社区资源社区讨论区Open Collective 支持页面贡献指南参考资料LinkAce GitHub RepositoryLinkAce Official Website
Ollama 兼容 Anthropic API，支持 Claude Code 使用开源模型
Ollama 兼容 Anthropic API，支持 Claude Code 使用开源模型一、新闻概述1. 标题Ollama v0.14.0 发布：兼容 Anthropic Messages API，Claude Code 可使用开源模型2. 发布时间2026 年 1 月 16 日3. 来源Ollama 官方博客二、核心内容1. 事件摘要A. 主要内容Ollama 宣布从 v0.14.0 版本开始兼容 Anthropic Messages API，使得开发者可以使用 Claude Code 等 Anthropic 官方工具来运行本地开源模型或 Ollama 云服务模型。B. 核心亮点兼容 Anthropic Messages API 标准Claude Code 可直接使用 Ollama 模型支持本地和云端两种部署方式完全兼容现有 Anthropic SDK2. 关键信息A. 版本号Ollama v0.14.0 及以上版本B. 重要数据支持功能：消息对话、流式输出、系统提示、工具调用、扩展思考、视觉输入推荐上下文长度：至少 32K tokensC. 涉及产品Claude Code：Anthropic 的终端 AI 编程助手Ollama：本地和云端大模型运行平台Anthropic SDK：Python 和 JavaScript SDK3. 背景介绍A. 前置版本Ollama 之前主要用于运行开源大模型，通过自己的 API 接口提供服务。B. 相关上下文Anthropic 提供 Messages API 作为与 Claude 模型交互的标准接口，Claude Code 是基于此 API 构建的终端编程工具。三、详细报道1. 主要内容A. 功能更新API 兼容性：完全兼容 Anthropic Messages APIClaude Code 集成：通过环境变量配置即可使用双模式支持：本地模型和云端模型均可使用SDK 兼容：现有使用 Anthropic SDK 的应用无需修改代码逻辑B. 技术改进工具调用支持：模型可调用外部工具和系统视觉能力：支持图像输入处理扩展思考：支持模型的思考过程输出流式输出：实时返回生成内容C. 兼容性说明API 兼容层完全兼容 Anthropic Messages API 规范现有 Anthropic SDK 应用只需更改 base_url2. 技术细节A. 架构变化graph LR subgraph Claude_Code CC[Claude Code] end subgraph Anthropic_SDK PY[Python SDK] JS[JavaScript SDK] end CC -->|API Calls| Ollama[Ollama API] PY -->|base_url| Ollama JS -->|baseURL| Ollama Ollama --> Local[本地模型] Ollama --> Cloud[云端模型]B. 配置方式Claude Code 配置：export ANTHROPIC_AUTH_TOKEN=ollama export ANTHROPIC_BASE_URL=http://localhost:11434SDK 配置（Python）：client = anthropic.Anthropic( base_url='http://localhost:11434', api_key='ollama' )C. 支持的功能特性消息和多轮对话流式输出系统提示工具调用/函数调用扩展思考视觉输入3. 数据与事实A. 推荐模型本地模型：gpt-oss:20bqwen3-coder云端模型：glm-4.7:cloudminimax-m2.1:cloudB. 技术要求上下文长度：建议至少 32K tokens云端模型自动运行完整上下文长度四、影响分析1. 行业影响A. 技术趋势API 标准化：通过兼容主流 API 降低迁移成本本地 AI：推动本地大模型与云端服务的统一体验开源生态：使开源模型更易接入成熟工具链B. 竞争格局对比 OpenAI：提供类似 OpenAI API 的兼容性策略对比 LM Studio：通过标准 API 兼容获得更广泛工具支持2. 用户影响A. 现有用户Claude Code 用户：可直接使用本地开源模型，降低 API 调用成本Ollama 用户：获得更多工具选择，可使用 Claude Code 等 Anthropic 生态工具B. 潜在用户关注隐私的开发者：可在本地使用 Claude Code 处理敏感代码成本敏感用户：使用本地模型替代付费 APIC. 迁移成本配置简单：仅需设置环境变量代码兼容：Anthropic SDK 应用只需更改 base_url3. 技术趋势A. 技术方向API 兼容层成为模型服务平台的标配本地和云端模型的统一调用体验开源模型与商业工具的深度集成B. 生态影响降低开源模型使用门槛促进 AI 工具的互操作性推动本地 AI 部署的普及五、各方反应1. 官方回应Ollama 官方强调这一更新使得用户可以在本地机器上运行 Claude Code，或通过 ollama.com 连接云端模型。2. 业内评价A. 技术意义API 标准化有助于降低厂商锁定本地 AI 与云端服务的融合趋势明显B. 社区反馈开发者欢迎这一兼容性更新关注本地模型的性能表现六、相关链接1. 官方公告Ollama 博客：Claude Code with Anthropic API compatibilityAnthropic Messages API 文档2. 技术文档Claude Code 指南Anthropic API 兼容性文档上下文长度配置说明3. 相关资源Ollama 下载页面Anthropic SDK（Python/JavaScript）参考资料Claude Code with Anthropic API compatibilityAnthropic Messages API DocumentationClaude Code Documentation
未进行基准测试的 LLM，您可能多付 5-10 倍费用
未进行基准测试的 LLM，您可能多付 5-10 倍费用一、新闻概述1. 标题未进行基准测试的 LLM，您可能多付 5-10 倍费用2. 发布时间2026 年 1 月 21 日3. 来源Karl Lorey 技术博客二、核心内容1. 事件摘要A. 主要内容作者帮助一位朋友通过自定义基准测试，将其 LLM API 账单降低了 80%，每月节省超过 1000 美元。B. 核心亮点公开基准无法预测特定任务性能自定义基准测试发现性价比更高的模型使用 LLM-as-judge 方法自动化评估帕累托前沿理论应用于模型选择2. 关键信息A. 案例背景初始成本：每月 1500 美元（GPT-5）优化后成本：每月 300 美元节省比例：80%测试模型数量：100+B. 涉及技术OpenRouter API（统一接口访问多个 LLM）LLM-as-judge（模型作为评分者）帕累托前沿（Pareto Frontier）3. 背景介绍A. 问题根源大多数用户选择 LLM 时依赖公开基准（如 GPQA Diamond、AIME、MMLU），但这些基准无法预测模型在特定任务上的表现。B. 相关上下文作者基于此案例开发了 Evalry 工具，用于自动化基准测试流程。三、详细报道1. 主要内容A. 公开基准的局限性常见的 LLM 基准包括：GPQA Diamond、AIME、SWE Bench、MATH 500、Humanity's Last Exam、ARC-AGI、MMLU。核心问题：在推理基准中名列前茅的模型，可能在损失成本估算任务上表现平平基准不反映实际成本无法预测特定业务场景的性能B. 自定义基准测试流程graph TD A[收集真实案例] --> B[定义预期输出] B --> C[创建基准数据集] C --> D[运行所有模型] D --> E[LLM-as-judge 评分] E --> F[分析质量/成本/延迟]步骤 1：收集真实案例通过 WHAPI 提取实际支持聊天记录每条记录包含：对话历史、客户最新消息、实际响应选择约 50 个聊天案例（涵盖常见问题和边缘情况）步骤 2：定义预期输出为每个案例设定明确的标准：示例 1：一个好的答案应告诉客户该产品价格为 5.99，并主动提供立即下单服务。示例 2：一个好的答案应告知客户退货政策提供 30 天退货期，但客户是在收货两个月后才退货，因此不符合政策。步骤 3：创建基准数据集数据格式：提示词（对话 + 指令）+ 预期响应步骤 4：运行所有模型使用 OpenRouter 统一接口访问 100+ LLM：from openai import OpenAI client = OpenAI( base_url="https://openrouter.ai/api/v1", api_key="<OPENROUTER_API_KEY>", ) completion = client.chat.completions.create( model="openai/gpt-5", # 或 "anthropic/claude-opus-4.5", "google/gemini-3-pro-preview" messages=[{"role": "user", "content": "Hello!"}] )步骤 5：LLM-as-judge 评分使用 Claude Opus 4.5 对每个响应进行 1-10 分评分提供具体的评分标准以确保一致性抽样验证评分的可靠性要求模型给出评分理由C. 模型选择决策框架考虑三个维度：质量：LLM-as-judge 评分成本：每个答案的总成本（而非每 token 成本）延迟：完整响应时间graph LR X[成本] --> Y[质量] Y --> Z[帕累托前沿] X --> Z帕累托前沿定义：在给定成本和质量的基准测试中，不存在另一个模型既更便宜又更好的模型集合。这些模型构成了帕累托前沿，即给定价格下的最佳模型选择。2. 技术细节A. 成本测量为什么不能只比较 token 价格：响应 token（思考 + 实际答案）成本更高不同模型的答案 token 数量差异显著需要测量每个答案的总成本B. 延迟测量对于客户支持：响应时间至关重要对于损失成本估算：质量优先，延迟次要聊天应用需要考虑首 token 时间C. 质量评分sequenceDiagram participant D as 基准数据集 participant M as 待测模型 participant J as 评判模型(Opus) participant U as 用户 D->>M: 发送提示词 M->>J: 返回响应 D->>J: 发送预期输出 J->>J: 评分(1-10) + 理由 J->>U: 返回评分结果3. 数据与事实A. 成本对比项目优化前优化后节省月度费用1500 美元300 美元80%模型选择GPT-5性价比模型-B. 性价比差异最高可达 10 倍成本差异（质量相当）最终选择保守方案：5 倍成本节省质量损失可忽略不计四、影响分析1. 行业影响A. 技术趋势公开基准的商业价值有限自定义基准测试将成为标准实践LLM 成本优化成为核心竞争力B. 工具生态作者开发了 Evalry 工具（https://evalry.com）：一次性测试 300+ 模型无需编码结果在几秒内呈现计划提供持续监控功能2. 用户影响A. 现有用户如果从未测试过替代方案，很可能多付 5-10 倍费用。B. 建议使用真实业务场景进行测试综合考虑质量、成本、延迟定期重新评估（新模型每周发布）五、技术分析1. 核心问题为什么公开基准失效？公开基准测试的是通用能力（推理、数学、编程），而非特定业务场景的表现。例如：损失成本估算：需要领域知识，而非纯推理客户支持：需要语言适配和服务意识数据提取：需要格式理解和精准度2. 解决方案架构graph TB subgraph 输入 A1[真实业务数据] A2[预期输出标准] end subgraph 测试 B1[OpenRouter API] B2[100+ LLM 模型] end subgraph 评估 C1[LLM-as-judge] C2[质量评分] end subgraph 分析 D1[成本计算] D2[延迟测量] D3[帕累托前沿] end subgraph 输出 E1[最优模型推荐] end A1 --> B1 A2 --> C1 B1 --> B2 B2 --> C1 C1 --> C2 C2 --> D3 B2 --> D1 B2 --> D2 D1 --> D3 D2 --> D3 D3 --> E13. 关键技术点A. OpenRouter 统一接口优势：标准 OpenAI SDK 兼容只需更换模型名称统一的错误处理B. LLM-as-judge 方法论关键实践：定义具体的评分标准要求评分理由抽样验证一致性迭代优化提示词潜在问题：预期答案不精确导致评分偏差需要人工校准C. 帕累托前沿应用数学定义：给定一组模型 M，每个模型 m ∈ M 有成本 c(m) 和质量 q(m)。模型 m* 在帕累托前沿上，当且仅当：不存在另一个模型 m'，使得 c(m') < c(m) 且 q(m') > q(m)实际应用：过滤掉明显劣质的模型聚焦于前沿模型的选择简化决策复杂度六、各方反应1. 业内讨论文章在 Hacker News 和 X（Twitter）上引发讨论：HN 讨论帖：https://news.ycombinator.com/item?id=46696300X 讨论：https://x.com/karllorey/status/20136911680270380562. 社区反馈共鸣点：大多数人从未进行过模型对比测试默认选择主流模型（GPT、Claude）成本意识不足争议点：自定义基准的时间成本LLM-as-judge 的可靠性小团队是否有资源进行测试七、最佳实践建议1. 基准测试清单[ ] 收集至少 50 个真实业务案例[ ] 定义明确的输出标准[ ] 使用统一 API 接口（如 OpenRouter）[ ] 实施 LLM-as-judge 评分[ ] 测量实际成本（非 token 价格）[ ] 测量端到端延迟[ ] 应用帕累托前沿筛选[ ] 抽样验证评分一致性2. 持续优化新模型每周发布，定期重新评估监控生产环境性能建立模型切换机制3. 工具选择手动方案：OpenRouter + OpenAI SDK自建评分脚本自动化方案：Evalry（https://evalry.com）其他基准测试平台八、相关链接1. 工具资源OpenRouter：https://openrouter.ai/Evalry：https://evalry.comEvalry 模型列表：https://evalry.com/models2. 技术参考LLM-as-judge 指南：https://huggingface.co/learn/cookbook/en/llm_judge帕累托前沿（维基百科）：https://en.wikipedia.org/wiki/Pareto_front参考资料Without Benchmarking LLMs, You're Likely Overpaying 5-10x | Karl Lorey
智谱AI HTTP API 调用教程一、概述1. 简介A. 是什么智谱AI 提供基于 RESTful 架构的应用程序接口，通过标准的 HTTP 协议与智谱AI 的模型服务进行交互。开发者可以使用任何支持 HTTP 协议的编程语言或开发框架调用智谱AI 的各种 AI 模型。B. 为什么学跨平台兼容：支持所有支持 HTTP 协议的编程语言和平台标准协议：基于 RESTful 设计，遵循 HTTP 标准，易于理解和使用灵活集成：可以集成到任何现有的应用程序和系统中实时调用：支持同步和异步调用，满足不同场景需求C. 学完能做什么使用任何编程语言调用智谱AI 的 GLM 系列模型实现简单对话、流式响应和多轮对话功能正确处理 API 鉴权和错误响应在生产环境中安全、高效地集成智谱AI 服务二、环境准备1. 前置条件有效的智谱AI 账户已获取 API Key基本的 HTTP 请求知识至少熟悉一种编程语言（Python、JavaScript、Java 等）2. 获取 API Key步骤流程访问智谱AI 开放平台：https://bigmodel.cn注册并登录账户进入 API Keys 管理页面创建 API Key复制生成的 API Key 以供使用安全建议建议将 API Key 设置为环境变量，避免硬编码到代码中，以提高安全性。三、API 基础信息1. 请求端点通用 API 端点https://open.bigmodel.cn/api/paas/v4/Coding 专用端点使用 GLM 编码套餐时，需要使用专属端点：https://open.bigmodel.cn/api/coding/paas/v4注意：Coding API 端点仅限 Coding 场景使用，不适用于通用 API 场景。2. 请求头要求所有请求必须包含以下 HTTP 头：请求头值说明Content-Typeapplication/json指定请求体格式为 JSONAuthorizationBearer YOUR_API_KEYAPI 密钥鉴权3. 支持的鉴权方式A. API Key 鉴权最简单的鉴权方式，直接使用 API Key：curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "你好" } ] }'B. JWT Token 鉴权适用于需要更复杂权限控制的场景（具体实现请参考官方文档）。四、基础调用示例1. 简单对话请求示例curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "请介绍一下人工智能的发展历程" } ], "temperature": 1.0, "max_tokens": 1024 }'参数说明model：使用的模型名称，如 glm-4.7messages：对话消息列表temperature：控制输出随机性，范围 0-2，默认 1.0max_tokens：限制响应最大 token 数2. 流式响应请求示例curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "写一首关于春天的诗" } ], "stream": true }'流式响应特点设置 stream 参数为 true 启用流式响应响应以 Server-Sent Events（SSE）格式返回可以实时获取模型生成的内容3. 多轮对话请求示例curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "system", "content": "你是一个专业的编程助手" }, { "role": "user", "content": "什么是递归？" }, { "role": "assistant", "content": "递归是一种编程技术，函数调用自身来解决问题..." }, { "role": "user", "content": "能给我一个 Python 递归的例子吗？" } ] }'消息角色说明system：设置系统角色和行为user：用户消息assistant：模型回复的历史消息五、常用编程语言示例1. Python 实现完整代码示例import requests import json def call_zhipu_api(messages, model="glm-4.7"): url = "https://open.bigmodel.cn/api/paas/v4/chat/completions" headers = { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" } data = { "model": model, "messages": messages, "temperature": 1.0 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: return response.json() else: raise Exception(f"API调用失败: {response.status_code}, {response.text}") # 使用示例 messages = [ {"role": "user", "content": "你好，请介绍一下自己"} ] result = call_zhipu_api(messages) print(result['choices'][0]['message']['content'])环境变量配置import os from dotenv import load_dotenv load_dotenv() api_key = os.getenv("ZHIPU_API_KEY")2. JavaScript 实现使用 Fetch APIasync function callZhipuAPI(messages) { const url = 'https://open.bigmodel.cn/api/paas/v4/chat/completions'; const headers = { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }; const data = { model: 'glm-4.7', messages: messages, temperature: 1.0 }; const response = await fetch(url, { method: 'POST', headers: headers, body: JSON.stringify(data) }); if (!response.ok) { throw new Error(`API调用失败: ${response.status}`); } return await response.json(); } // 使用示例 const messages = [ {role: 'user', content: '你好'} ]; callZhipuAPI(messages).then(result => { console.log(result.choices[0].message.content); });3. Java 实现使用 OkHttpimport okhttp3.*; import com.google.gson.Gson; import java.io.IOException; public class ZhipuAPIClient { private static final String API_URL = "https://open.bigmodel.cn/api/paas/v4/chat/completions"; private static final String API_KEY = "YOUR_API_KEY"; private final OkHttpClient client; private final Gson gson; public ZhipuAPIClient() { this.client = new OkHttpClient(); this.gson = new Gson(); } public String callAPI(Message[] messages) throws IOException { RequestBody body = RequestBody.create( MediaType.parse("application/json"), gson.toJson(new ChatRequest("glm-4.7", messages)) ); Request request = new Request.Builder() .url(API_URL) .post(body) .addHeader("Authorization", "Bearer " + API_KEY) .addHeader("Content-Type", "application/json") .build(); try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { throw new IOException("API调用失败: " + response); } ChatResponse chatResponse = gson.fromJson( response.body().string(), ChatResponse.class ); return chatResponse.choices[0].message.content; } } }六、错误处理1. 常见错误码错误码说明解决方案401未授权检查 API Key 是否正确429请求过于频繁降低请求频率，实施重试机制500服务器内部错误稍后重试，如持续出现请联系支持更多错误码和解决方案请参考官方 API 错误码文档。2. 错误处理最佳实践实施指数退避重试机制import time import random def call_with_retry(func, max_retries=3): for attempt in range(max_retries): try: return func() except Exception as e: if attempt == max_retries - 1: raise wait_time = (2 ** attempt) + random.random() time.sleep(wait_time)记录详细错误日志import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) try: result = call_zhipu_api(messages) except Exception as e: logger.error(f"API调用失败: {str(e)}", exc_info=True)七、实践建议1. 安全性A. API Key 管理妥善保管 API Key，不要在代码中硬编码使用环境变量或配置文件存储敏感信息定期轮换 API KeyB. 数据传输始终使用 HTTPS 协议实施适当的加密措施保护数据传输2. 性能优化A. 连接管理实施连接池和会话复用合理设置超时时间B. 并发处理使用异步请求处理高并发场景考虑使用消息队列削峰填谷3. 监控与告警A. 关键指标监控 API 调用频率和成功率跟踪响应时间和错误率B. 告警机制设置合理的告警阈值建立快速响应流程八、架构图sequenceDiagram participant Client as 客户端应用 participant API as 智谱AI API participant Auth as 鉴权服务 participant Model as GLM 模型 Client->>Auth: 1. 携带 API Key Auth->>API: 2. 验证通过 Client->>API: 3. 发送 HTTP 请求 API->>Model: 4. 调用模型推理 Model->>API: 5. 返回生成结果 API->>Client: 6. 返回 JSON 响应九、更多资源1. 官方文档API 文档：查看完整的 API 接口文档和参数说明技术支持：获取技术支持和帮助2. 相关资源核心参数文档官方 Python SDK参考资料智谱AI HTTP API 调用文档
Claude Text Editor 工具使用指南一、概述1. 简介A. 是什么Claude Text Editor 是 Anthropic 定义的一个工具，允许 Claude 直接查看和修改文本文件。这使得 Claude 能够直接与文件系统交互，提供动手协助而不仅仅是建议更改。B. 为什么学让 Claude 能够直接调试、修复和改进代码自动化文档生成和测试创建集成到开发工作流中，提升开发效率C. 学完能做什么使用 Claude 修复代码中的语法错误和逻辑问题让 Claude 帮助重构代码结构和添加文档集成文本编辑器工具到自己的应用中2. 前置知识A. 必备技能了解 RESTful API 基本概念熟悉至少一种编程语言（Python、JavaScript 等）基本的文件系统操作知识B. 推荐知识了解 Claude Messages API 的使用方式熟悉工具调用（Tool Use）的概念二、模型兼容性1. 工具版本模型工具版本Claude 4.xtext_editor_20250728Claude Sonnet 3.7（已弃用）text_editor_20250124重要说明：Claude 4.x 使用的 text_editor_20250728 版本不包含 undo_edit 命令如需撤销功能，需要使用 Claude Sonnet 3.7（已弃用）旧版工具不保证与较新模型向后兼容三、工具使用场景1. 代码调试Claude 可以识别并修复代码中的错误，从语法错误到逻辑问题。2. 代码重构让 Claude 通过有针对性的编辑来改进代码结构、可读性和性能。3. 文档生成请求 Claude 为代码库添加文档字符串、注释或 README 文件。4. 测试创建让 Claude 根据其对实现的理解为代码创建单元测试。四、工具命令1. view 命令view 命令允许 Claude 查看文件内容或列出目录内容。可以读取整个文件或特定行范围。参数：command：必须是 "view"path：要查看的文件或目录的路径view_range（可选）：包含两个整数的数组，指定要查看的起始和结束行号。行号从 1 开始索引，结束行为 -1 表示读取到文件末尾。此参数仅适用于查看文件，不适用于目录。示例：{ "command": "view", "path": "primes.py" }{ "command": "view", "path": "primes.py", "view_range": [1, 20] }2. str_replace 命令str_replace 命令允许 Claude 用新字符串替换文件中的特定字符串。用于进行精确编辑。参数：command：必须是 "str_replace"path：要修改的文件的路径old_str：要替换的文本（必须完全匹配，包括空格和缩进）new_str：要在旧文本位置插入的新文本示例：{ "command": "str_replace", "path": "primes.py", "old_str": " for num in range(2, limit + 1)", "new_str": " for num in range(2, limit + 1):" }3. create 命令create 命令允许 Claude 创建包含指定内容的新文件。参数：command：必须是 "create"path：应该创建新文件的路径file_text：要写入新文件的内容4. insert 命令insert 命令允许 Claude 在文件中的特定位置插入文本。参数：command：必须是 "insert"path：要修改的文件的路径insert_line：在其后插入文本的行号（0 表示文件开头）new_str：要插入的文本5. undo_edit 命令undo_edit 命令允许 Claude 撤销对文件的上一次编辑。重要说明：此命令仅在 Claude Sonnet 3.7（已弃用）中可用。Claude 4 模型使用的 text_editor_20250728 不支持此命令。参数：command：必须是 "undo_edit"path：应该撤销上一次编辑的文件的路径五、使用流程Text Editor 工具的使用遵循以下流程：sequenceDiagram participant U as 用户应用 participant C as Claude API participant F as 文件系统 U->>C: 1. 提供工具和用户提示 C->>U: 2. 返回 view 命令 U->>F: 3. 读取文件内容 F-->>U: 返回文件内容 U->>C: 4. 返回 tool_result C->>U: 5. 返回 str_replace 命令 U->>F: 6. 执行文本替换 F-->>U: 替换成功 U->>C: 7. 返回执行结果 C-->>U: 8. 提供完整解释1. 提供工具和提示将 Text Editor 工具提供给 Claude 并附带用户提示：curl https://api.anthropic.com/v1/messages \ -H "content-type: application/json" \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-sonnet-4-5", "max_tokens": 1024, "tools": [ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool" } ], "messages": [ { "role": "user", "content": "There'\''s a syntax error in my primes.py file. Can you help me fix it?" } ] }'2. Claude 使用工具查看文件Claude 会首先使用 view 命令查看文件内容：{ "type": "tool_use", "id": "toolu_01AbCdEfGhIjKlMnOpQrStU", "name": "str_replace_based_edit_tool", "input": { "command": "view", "path": "primes.py" } }3. 执行 view 命令并返回结果应用读取文件内容并返回给 Claude。返回的内容应包含行号前缀（如 "1: def is_prime(n):"），这对于使用 view_range 和 insert_line 参数至关重要。4. Claude 使用 str_replace 命令修复错误Claude 识别错误后使用 str_replace 命令进行修复：{ "type": "tool_use", "id": "toolu_01PqRsTuVwXyZAbCdEfGh", "name": "str_replace_based_edit_tool", "input": { "command": "str_replace", "path": "primes.py", "old_str": " for num in range(2, limit + 1)", "new_str": " for num in range(2, limit + 1):" } }5. 执行编辑并返回结果应用执行文本替换并返回成功结果给 Claude。6. Claude 提供完整解释最后 Claude 会提供其发现和更改的完整说明。六、实现指南1. 工具类型Text Editor 工具是无架构工具。使用时无需提供输入架构，架构内置在 Claude 模型中，无法修改。工具类型取决于模型版本：Claude 4：type: "text_editor_20250728"Claude Sonnet 3.7：type: "text_editor_20250124"2. 实现步骤A. 初始化编辑器实现创建辅助函数来处理文件操作，如读取、写入和修改文件。考虑实现备份功能以从错误中恢复。B. 处理编辑器工具调用创建函数根据命令类型处理来自 Claude 的工具调用：def handle_editor_tool(tool_call, model_version): input_params = tool_call.input command = input_params.get('command', '') file_path = input_params.get('path', '') if command == 'view': # 读取并返回文件内容 pass elif command == 'str_replace': # 替换文件中的文本 pass elif command == 'create': # 创建新文件 pass elif command == 'insert': # 在指定位置插入文本 pass elif command == 'undo_edit': # 检查是否为 Claude 4 模型 if 'str_replace_based_edit_tool' in model_version: return {"error": "undo_edit command is not supported in Claude 4"} # 为 Claude 3.7 从备份恢复 passC. 实现安全措施添加验证和安全检查：验证文件路径以防止目录遍历攻击在进行更改之前创建备份优雅地处理错误实现权限检查D. 处理 Claude 的响应从 Claude 的响应中提取并处理工具调用：# 处理 Claude 响应中的工具使用 for content in response.content: if content.type == "tool_use": # 根据命令执行工具 result = handle_editor_tool(content) # 返回结果给 Claude tool_result = { "type": "tool_result", "tool_use_id": content.id, "content": result }3. 实现注意事项安全：工具可以访问本地文件系统，需实施适当的安全措施备份：在允许编辑重要文件之前始终创建备份验证：验证所有输入以防止意外更改唯一匹配：确保替换仅匹配一个位置以避免意外编辑七、错误处理1. 文件未找到当请求的文件不存在时，应在 tool_result 中返回明确的错误消息，告知 Claude 文件未找到。2. 替换有多个匹配当 str_replace 命令的 old_str 在文件中匹配多个位置时，应返回错误，要求 Claude 提供更具体的上下文以确保唯一匹配。3. 替换无匹配当 old_str 在文件中找不到匹配时，应返回错误，告知 Claude 未找到匹配的文本。4. 权限错误当没有足够的权限执行文件操作时，应返回权限错误信息。八、最佳实践1. 提供清晰的上下文向 Claude 提供足够的上下文信息，以便它能够理解要完成的任务。2. 明确指定文件路径始终使用明确的文件路径，避免相对路径的歧义。3. 编辑前创建备份始终在编辑重要文件之前创建备份副本。4. 谨慎处理唯一文本替换确保 str_replace 命令的 old_str 参数在文件中只匹配一个位置。5. 验证更改在执行编辑后验证更改是否符合预期。九、定价和 token 使用Text Editor 工具使用与其他工具相同的定价结构。根据使用的 Claude 模型遵循标准的输入和输出 token 定价。除了基础 token 外，Text Editor 工具还需要以下额外的输入 token：工具额外输入 tokentext_editor_20250429（Claude 4.x）700 tokenstext_editor_20250124（Claude Sonnet 3.7）700 tokens十、工具集成Text Editor 工具可以与其他 Claude 工具一起使用。组合工具时，确保：工具版本与使用的模型匹配考虑请求中包含的所有工具的额外 token 使用十一、变更日志日期版本变更2025 年 7 月 28 日text_editor_20250728发布更新的 Text Editor 工具，修复了一些问题并添加了可选的 max_characters 参数。其他方面与 text_editor_20250429 相同。2025 年 4 月 29 日text_editor_20250429发布面向 Claude 4 的 Text Editor 工具。此版本移除了 undo_edit 命令，但保留所有其他功能。工具名称已更新以反映其基于 str_replace 的架构。2025 年 3 月 13 日text_editor_20250124引入独立的 Text Editor 工具文档。此版本针对 Claude Sonnet 3.7 优化，但与前一版本功能相同。2024 年 10 月 22 日text_editor_20241022Text Editor 工具的首次发布，与 Claude Sonnet 3.5 一起提供。通过 view、create、str_replace、insert 和 undo_edit 命令提供查看、创建和编辑文件的功能。十二、下一步使用建议以下是将 Text Editor 工具用于更方便和强大的方式的一些建议：1. 集成到开发工作流将 Text Editor 工具构建到开发工具或 IDE 中2. 创建代码审查系统让 Claude 审查代码并进行改进3. 构建调试助手创建一个系统，让 Claude 帮助诊断和修复代码中的问题4. 实现文件格式转换让 Claude 帮助将文件从一种格式转换为另一种格式5. 自动化文档为 Claude 自动记录代码设置工作流参考资料Text editor tool - Claude Docs
Mailscript CLI 可编程邮箱自动化工具技术分析一、概述1. 项目简介A. 是什么Mailscript（原名 CLI）是一个基于 Node.js 和 TypeScript 构建的命令行工具，提供可编程邮箱地址和低代码邮件自动化功能。该项目由 pagedotapp 组织开发，采用 MIT 开源许可证。B. 核心价值邮件自动化：类似 Zapier，但面向开发者群体低代码方案：无需转移邮箱服务商即可使用可编程性：支持自定义代码过滤器和路由规则元数据解析：自动解析邮件所有元素并提供 JSON 格式C. 技术特点TypeScript 91.6%：强类型安全保障代码质量CLI 工具：全局安装后提供命令行交互本地守护进程：通过本地 daemon 处理认证HTTP API：支持 RESTful 接口集成二、核心架构1. 系统组成graph TB subgraph 用户层 A[命令行] --> B[mailscript CLI] C[浏览器] --> D[OAuth 登录] end subgraph 本地守护进程 E[Daemon 进程] --> F[认证处理] E --> G[状态管理] end subgraph Mailscript 服务 H[API 网关] --> I[邮箱自动化引擎] I --> J[邮件解析器] I --> K[路由规则引擎] I --> L[自定义脚本执行] end subgraph 外部集成 M[现有邮箱提供商] --> I N[短信服务] --> I O[文件服务器] --> I end B --> E D --> E E --> H2. 组件功能A. CLI 工具负责用户交互和命令执行，核心命令包括：login：OAuth 认证登录automate：创建自动化规则address：管理邮箱地址inbox：管理收件箱B. 本地守护进程处理浏览器 OAuth 回调管理访问令牌和会话状态与远程 API 持续通信C. 邮件解析器解析邮件头信息（From、To、Subject、Date）提取邮件正文（纯文本、HTML）处理附件文件生成结构化 JSON 输出D. 路由规则引擎支持条件过滤（关键词、发件人、主题）支持正则表达式匹配支持邮件头内容过滤支持优先级路由三、核心功能1. 邮箱地址管理graph LR A[用户] -->|创建| B[邮箱地址] B -->|绑定规则| C[自动化脚本] C -->|触发条件| D[动作执行] D --> E[发送短信] D --> F[自动回复] D --> G[保存附件] D --> H[转发邮件]A. 无限地址为不同用途创建专用邮箱地址每个地址可独立配置自动化规则支持动态生成和销毁B. 规则绑定每个地址绑定一个或多个自动化脚本脚本在邮件到达时自动触发支持条件判断和复杂逻辑2. 邮件自动化sequenceDiagram participant M as 发件人 participant P as 邮箱提供商 participant S as Mailscript participant F as 过滤器 participant A as 动作执行 M->>P: 发送邮件 P->>S: Webhook 通知 S->>F: 解析邮件 F->>F: 匹配规则 F->>A: 触发动作 A->>A: 执行脚本A. 内置动作发送短信通知（SMS）自动回复邮件保存附件到服务器转发到主邮箱添加标签或分类B. 自定义脚本支持 JavaScript/TypeScript 编写过滤器访问完整邮件元数据集成第三方 API执行复杂业务逻辑3. 邮件解析graph TD A[原始邮件] --> B[解析器] B --> C[邮件头] B --> D[邮件正文] B --> E[附件] C --> F[From] C --> G[To] C --> H[Subject] C --> I[Date] C --> J[其他头] D --> K[纯文本] D --> L[HTML] E --> M[文件列表] F --> N[JSON 输出] G --> N H --> N I --> N J --> N K --> N L --> N M --> NA. 结构化输出{ "id": "email_id", "from": "sender@example.com", "to": "recipient@mailscript.com", "subject": "Email Subject", "date": "2026-01-19T16:30:00Z", "headers": { "message-id": "...", "references": "...", "in-reply-to": "..." }, "body": { "text": "Plain text content", "html": " ... " }, "attachments": [ { "filename": "document.pdf", "contentType": "application/pdf", "size": 12345 } ] }四、使用场景1. 重要邮件提醒监控特定发件人邮件根据关键词判断优先级发送短信到手机提醒2. 自动回复首次发件人自动回复欢迎信息常见问题自动回复 FAQ设置外出自动回复3. 附件管理自动保存发票到财务目录归档合同到指定文件夹同步附件到云存储4. 收件箱清理过滤垃圾邮件到独立文件夹将低优先级邮件归档保持主收件箱整洁五、技术实现1. 技术栈A. 核心语言TypeScript 91.6%JavaScript 7.0%HTML 1.2%B. 依赖工具Node.js 运行环境npm 包管理器Yarn 锁定依赖版本C. 开发工具ESLint：代码检查Prettier：代码格式化EditorConfig：编辑器配置统一2. 安装与使用A. 全局安装npm install -g mailscriptB. 基本命令# 登录认证 mailscript login # 查看版本 mailscript --version # 查看帮助 mailscript --helpC. 开发版安装npm install -g https://github.com/mailscript/cli.git六、架构优势1. 无需迁移邮箱与现有邮箱提供商兼容通过 Webhook 或 IMAP 接收邮件无需改变用户习惯2. 低代码方案预定义常用自动化模板可视化规则编辑器（潜在功能）降低技术门槛3. 高度可扩展支持自定义脚本开放 HTTP API可集成任意第三方服务4. 安全性考虑OAuth 2.0 认证访问令牌加密存储本地守护进程减少暴露面七、项目状态1. 开发活跃度205 次提交6 位贡献者4 个 Fork152 个 Star2. 代码质量主分支持续集成Codecov 代码覆盖率GitHub Issues 跟踪问题3. 文档完善度README 详细说明API 文档独立站点贡献指南和行为准则八、潜在应用1. 开发者工作流GitHub 通知邮件自动分类CI/CD 失败立即短信提醒工单系统邮件自动创建任务2. 企业场景客户邮件自动分配发票自动录入财务系统合同附件自动归档3. 个人效率订阅邮件自动整理重要邮件多渠道提醒附件自动备份九、技术挑战与展望1. 当前挑战实时邮件推送延迟大规模附件处理性能复杂规则引擎的执行效率2. 未来改进方向支持更多编程语言编写脚本引入机器学习进行智能分类提供可视化规则编辑器增强移动端支持十、总结Mailscript CLI 是一个创新的邮件自动化工具，通过可编程邮箱地址和低代码方案，为开发者提供了强大的邮件处理能力。其技术架构清晰，功能设计合理，既保持了易用性又不失灵活性。该项目采用 TypeScript 确保代码质量，使用守护进程架构处理认证，通过 JSON 格式提供结构化邮件数据，降低了邮件自动化的门槛。对于需要处理大量邮件或构建邮件驱动工作流的开发者来说，Mailscript 提供了一个优雅的解决方案。参考资料Mailscript CLI GitHub 仓库Mailscript 官方网站Mailscript HTTP API 文档