[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-AgentEra--Agently":3,"tool-AgentEra--Agently":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",155373,2,"2026-04-14T11:34:08",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":75,"owner_location":75,"owner_email":76,"owner_twitter":77,"owner_website":75,"owner_url":78,"languages":79,"stars":84,"forks":85,"last_commit_at":86,"license":87,"difficulty_score":32,"env_os":88,"env_gpu":89,"env_ram":89,"env_deps":90,"category_tags":96,"github_topics":97,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":117,"updated_at":118,"faqs":119,"releases":150},7507,"AgentEra\u002FAgently","Agently","[GenAI Application Development Framework]  🚀 Build GenAI application quick and easy 💬 Easy to interact with GenAI agent in code using structure data and chained-calls syntax 🧩 Use Event-Driven Flow *TriggerFlow* to manage complex GenAI working logic 🔀 Switch to any model without rewrite application code","Agently 是一个专为构建生产级生成式 AI（GenAI）应用而设计的开发框架，旨在帮助开发者快速、稳定地打造可维护的 AI 工作流。它主要解决了当前 AI 原型在落地生产环境时常见的工程化难题：例如模型输出格式不稳定导致解析失败、复杂业务逻辑难以编排，以及多轮对话中状态管理混乱等问题。\n\n通过 Agently，开发者可以采用“契约优先”的方式严格约束模型输出，确保数据结构的一致性；利用独特的 TriggerFlow 事件驱动机制，以链式调用语法轻松编排包含条件判断、循环及批处理的复杂流程。此外，它支持无缝切换底层大模型，无需重写核心业务代码，极大提升了系统的灵活性与可维护性。\n\n这款工具非常适合需要构建高可靠性 AI 应用的软件工程师、技术团队及 AI 研究者。无论是从 LangChain 等现有框架迁移，还是从零开始设计多智能体协作系统，Agently 都能提供结构化的开发体验和完善的官方技能库支持，让 AI 应用开发变得更加高效可控。","\u003Cimg width=\"640\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAgentEra_Agently_readme_3a373dacffdf.png\" \u002F>\n\n# Agently 4 🚀\n\n> **Build production‑grade AI apps faster, with stable outputs and maintainable workflows.**\n\n[English Introduction](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002FREADME.md) | [中文介绍](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002FREADME_CN.md)\n\n[![license](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0-blue.svg)](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002FLICENSE)\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fagently.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fagently\u002F)\n[![Downloads](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fagently.svg)](https:\u002F\u002Fpypistats.org\u002Fpackages\u002Fagently)\n[![GitHub Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FAgentEra\u002FAgently.svg?style=social)](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fstargazers)\n[![Twitter Follow](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002FAgentlyTech?style=social)](https:\u002F\u002Fx.com\u002FAgentlyTech)\n\u003Ca href=\"https:\u002F\u002Fdoc.weixin.qq.com\u002Fforms\u002FAIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf\">\n\u003Cimg alt=\"WeChat\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWeChat%20Group-Join-brightgreen?logo=wechat&style=flat-square\">\n\u003C\u002Fa>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fdiscussions\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F💬_Community-Join-blueviolet?style=for-the-badge\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fagently.tech\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F🌐_Website-Docs-brightgreen?style=for-the-badge\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fissues\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F🐛_Issues-Report-red?style=for-the-badge\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n\u003Cp align=\"center\">\n  \u003Cb>🔥 \u003Ca href=\"https:\u002F\u002Fagently.tech\u002Fdocs\">Latest Docs\u003C\u002Fa> | 🚀 \u003Ca href=\"#quickstart\">5‑minute Quickstart\u003C\u002Fa> | 💡 \u003Ca href=\"#-core-features\">Core Features\u003C\u002Fa>\u003C\u002Fb>\n\u003C\u002Fp>\n\n---\n\n## Official Skills\n\nOfficial installable Agently skills are now published at:\n\n- GitHub: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently-Skills\n- Install: `npx skills add AgentEra\u002FAgently-Skills`\n\nWhat you get after installing:\n\n- Better implementation routing for real Agently work, from single-request design to TriggerFlow, multi-agent, MCP, tools, session, and FastAPI integration\n- Ready-to-use skill guidance for common production tasks instead of re-explaining framework concepts in every coding session\n- Migration playbooks for LangChain and LangGraph, so existing agent systems can be translated into Agently faster\n- A higher-quality coding-agent experience, because the skills package gives the agent concrete Agently patterns, boundaries, and recommended implementation paths\n\n---\n\n## 📚 Quick Links\n\n- **Docs (EN)**: https:\u002F\u002Fagently.tech\u002Fdocs\n- **Docs (中文)**: https:\u002F\u002Fagently.cn\u002Fdocs\n- **Agent Systems Playbook (EN)**: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-systems\u002Foverview.html\n- **Agent Systems Playbook (中文)**: https:\u002F\u002Fagently.cn\u002Fdocs\u002Fagent-systems\u002Foverview.html\n- **Official Agently Skills**: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently-Skills\n- **Install Agently Skills**: `npx skills add AgentEra\u002FAgently-Skills`\n\n## Optional Companion Package: Agently Devtools\n\n`agently-devtools` is a separate companion package for runtime observation and developer tooling.\n\n- Install: `pip install agently-devtools`\n- Dependency direction: `agently-devtools -> agently`\n- Compatibility line: `agently-devtools 0.1.x` targets `agently >=4.0.9,\u003C4.1.0`\n- Integration entrypoints: `ObservationBridge` and `create_local_observation_app`\n\nThe DevTools package is optional and does not add a reverse dependency from `agently` back to `agently-devtools`.\n\n## 🤔 Why Agently?\n\nMany GenAI POCs fail in production not because models are weak, but because **engineering control is missing**:\n\n| Common challenge | How Agently helps |\n|:--|:--|\n| Output schema drifts, JSON parsing fails | **Contract‑first output control** with `output()` + `ensure_keys` |\n| Workflows get complex and hard to maintain | **TriggerFlow orchestration** with `to` \u002F `if` \u002F `match` \u002F `batch` \u002F `for_each` |\n| Multi‑turn state becomes unstable | **Session (v4.0.8.1+)** with session activation, context window control, custom memo strategy, and persistence |\n| Tool calls are hard to audit | **Tool logs** via `extra.tool_logs` |\n| Switching models is expensive | **OpenAICompatible** unified model settings |\n\n**Agently turns LLM uncertainty into a stable, testable, maintainable engineering system.**\n\n## ✨ Core Features\n\n### 1) 📝 Contract‑first Output Control\nDefine the structure with `output()`, enforce critical keys with `ensure_keys`.\n\n```python\nresult = (\n    agent\n    .input(\"Analyze user feedback\")\n    .output({\n        \"sentiment\": (str, \"positive\u002Fneutral\u002Fnegative\"),\n        \"key_issues\": [(str, \"issue summary\")],\n        \"priority\": (int, \"1-5, 5 is highest\")\n    })\n    .start(ensure_keys=[\"sentiment\", \"key_issues[*]\"])\n)\n```\n\n### 2) ⚡ Structured Streaming (Instant)\nConsume structured fields as they are generated.\n\n```python\nresponse = (\n    agent\n    .input(\"Explain recursion and give 2 tips\")\n    .output({\"definition\": (str, \"one sentence\"), \"tips\": [(str, \"tip\")]})\n    .get_response()\n)\n\nfor msg in response.get_generator(type=\"instant\"):\n    if msg.path == \"definition\" and msg.delta:\n        ui.update_definition(msg.delta)\n    if msg.wildcard_path == \"tips[*]\" and msg.delta:\n        ui.add_tip(msg.delta)\n```\n\n### 3) 🧩 TriggerFlow Orchestration\nReadable, testable workflows with branching and concurrency.\n\n```python\n(\n    flow.to(handle_request)\n    .if_condition(lambda d: d.value[\"type\"] == \"query\")\n    .to(handle_query)\n    .elif_condition(lambda d: d.value[\"type\"] == \"order\")\n    .to(check_inventory)\n    .to(create_order)\n    .end_condition()\n)\n```\n\n### 4) 🧠 Session (Multi‑turn Context, v4.0.8.1+)\nBuilt-in `SessionExtension` with `activate_session\u002Fdeactivate_session`, context window control, custom memo strategies, and JSON\u002FYAML persistence.\n\n```python\nfrom agently import Agently\n\nagent = Agently.create_agent()\n\n# Activate per-user session (reused by session_id)\nagent.activate_session(session_id=\"demo_user_1001\")\n\n# Optional: default window trimming by max length\nagent.set_settings(\"session.max_length\", 12000)\n\n# Optional: custom strategy (analysis -> resize)\nsession = agent.activated_session\nassert session is not None\n\ndef analysis_handler(full_context, context_window, memo, session_settings):\n    if len(context_window) > 6:\n        return \"keep_last_six\"\n    return None\n\ndef keep_last_six(full_context, context_window, memo, session_settings):\n    return None, list(context_window[-6:]), memo\n\nsession.register_analysis_handler(analysis_handler)\nsession.register_resize_handler(\"keep_last_six\", keep_last_six)\n```\n\n### 5) 🔧 Tool Calls + Logs\nTool selection and usage are logged in `extra.tool_logs`.\n\n```python\n@agent.tool_func\ndef add(a: int, b: int) -> int:\n    return a + b\n\nresponse = agent.input(\"12+34=?\").use_tool(add).get_response()\nfull = response.get_data(type=\"all\")\nprint(full[\"extra\"][\"tool_logs\"])\n```\n\n### 6) 🌐 Unified Model Settings (OpenAICompatible)\nOne config for multiple providers and local models.\n\n```python\nfrom agently import Agently\n\nAgently.set_settings(\n    \"OpenAICompatible\",\n    {\n        \"base_url\": \"https:\u002F\u002Fapi.deepseek.com\u002Fv1\",\n        \"model\": \"deepseek-chat\",\n        \"auth\": \"DEEPSEEK_API_KEY\",\n    },\n)\n```\n\n## 🚀 Quickstart\n\n### Install\n\n```bash\npip install -U agently\n```\n\n*Requirements: Python >= 3.10, recommended Agently >= 4.0.7.2*\n\n### 5‑minute example\n\n**1. Structured output**\n\n```python\nfrom agently import Agently\n\nagent = Agently.create_agent()\n\nresult = (\n    agent.input(\"Introduce Python in one sentence and list 2 advantages\")\n    .output({\n        \"introduction\": (str, \"one sentence\"),\n        \"advantages\": [(str, \"advantage\")]\n    })\n    .start(ensure_keys=[\"introduction\", \"advantages[*]\"])\n)\n\nprint(result)\n```\n\n**2. Workflow routing**\n\n```python\nfrom agently import TriggerFlow, TriggerFlowEventData\n\nflow = TriggerFlow()\n\n@flow.chunk\ndef classify_intent(data: TriggerFlowEventData):\n    text = data.value\n    if \"price\" in text:\n        return \"price_query\"\n    if \"feature\" in text:\n        return \"feature_query\"\n    if \"buy\" in text:\n        return \"purchase\"\n    return \"other\"\n\n@flow.chunk\ndef handle_price(_: TriggerFlowEventData):\n    return {\"response\": \"Pricing depends on the plan...\"}\n\n@flow.chunk\ndef handle_feature(_: TriggerFlowEventData):\n    return {\"response\": \"Our product supports...\"}\n\n(\n    flow.to(classify_intent)\n    .match()\n    .case(\"price_query\")\n    .to(handle_price)\n    .case(\"feature_query\")\n    .to(handle_feature)\n    .case_else()\n    .to(lambda d: {\"response\": \"What would you like to know?\"})\n    .end_match()\n    .end()\n)\n\nprint(flow.start(\"How much does it cost?\"))\n```\n\n## ✅ Is Your App Production‑Ready? — Release Readiness Checklist\n\nBased on teams shipping real projects with Agently, this **production readiness checklist** helps reduce common risks before release.\n\n| Area | Check | Recommended Practice |\n| :--- | :--- | :--- |\n| **📝 Output Stability** | Are key interfaces stable? | Define schemas with `output()` and lock critical fields with `ensure_keys`. |\n| **⚡ Real‑time UX** | Need updates while generating? | Consume `type=\"instant\"` structured streaming events. |\n| **🔍 Observability** | Tool calls auditable? | Inspect `extra.tool_logs` for full arguments and results. |\n| **🧩 Workflow Robustness** | Complex flows fully tested? | Unit test each TriggerFlow branch and concurrency limit with expected outputs. |\n| **🧠 Memory & Context** | Multi‑turn experience consistent? | Define Session\u002FMemo summary, trimming, and persistence policies. |\n| **📄 Prompt Management** | Can logic evolve safely? | Version and configure prompts to keep changes traceable. |\n| **🌐 Model Strategy** | Can you switch or downgrade models? | Centralize settings with `OpenAICompatible` for fast provider switching. |\n| **🚀 Performance & Scale** | Can it handle concurrency? | Validate async performance in real web‑service scenarios. |\n| **🧪 Quality Assurance** | Regression tests complete? | Create fixed inputs with expected outputs for core scenarios. |\n\n\n## 📈 Who Uses Agently to Solve Real Problems?\n\n> \"Agently helped us turn evaluation rules into executable workflows and keep key scoring accuracy at 75%+, significantly improving bid‑evaluation efficiency.\" — Project lead at a large energy SOE\n\n> \"Agently enabled a closed loop from clarification to query planning to rendering, reaching 90%+ first‑response accuracy and stable production performance.\" — Data lead at a large energy group\n\n> \"Agently’s orchestration and session capabilities let us ship a teaching assistant for course management and Q&A quickly, with continuous iteration.\" — Project lead at a university teaching‑assistant initiative\n\n**Your project can be next.**  \n📢 [Share your case on GitHub Discussions →](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fdiscussions\u002Fcategories\u002Fshow-and-tell)\n## ❓ FAQ\n\n**Q: How is Agently different from LangChain or LlamaIndex?**  \n**A:** Agently is **built for production**. It focuses on stable interfaces (contract‑first outputs), readable\u002Ftestable orchestration (TriggerFlow), and observable tool calls (`tool_logs`). It’s a better fit for teams that need reliability and maintainability after launch.\n\n**Q: Which models are supported? Is switching expensive?**  \n**A:** With `OpenAICompatible`, you can connect OpenAI, Claude, DeepSeek, Qwen and most OpenAI‑compatible endpoints, plus local models like Llama\u002FQwen. **The same business code can switch models without rewrites**, reducing vendor lock‑in.\n\n**Q: What’s the learning curve? Where should I start?**  \n**A:** The core API is straightforward—**you can run your first agent in minutes**. Start with [Quickstart](https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fquickstart.html), then dive into [Output Control](https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Foutput-control\u002Foverview.html) and [TriggerFlow](https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Foverview.html).\n\n**Q: How do I deploy an Agently‑based service?**  \n**A:** Agently doesn’t lock you into a specific deployment path. It provides async APIs and FastAPI examples. The [FastAPI integration example](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Ftree\u002Fmain\u002Fexamples\u002Fstep_by_step\u002F13-auto_loop_fastapi) covers SSE, WebSocket, and standard POST.\n\n**Q: Do you offer enterprise support?**  \n**A:** Yes. The core framework in this repository remains open‑source under **Apache 2.0**. Enterprise support, private extensions, managed services, and SLA-based collaboration are provided under separate commercial agreements. Contact us via the [community](https:\u002F\u002Fdoc.weixin.qq.com\u002Fforms\u002FAIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf).\n\n**Q: What is open-source vs enterprise in Agently?**  \n**A:** The open-source core includes the general framework and public capabilities in this repository. Enterprise offerings (for example private extension packs, advanced governance modules, private deployment support, and SLA services) are delivered separately under commercial terms.\n\n\n## 🧭 Docs Guide (Key Paths)\n\n- **Getting Started**\n  - Quickstart: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fquickstart.html\n  - Model Settings: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fmodel-settings.html\n  - Official Agently Skills: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently-Skills\n- **Output Control (Structured Output)**\n  - Overview: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Foutput-control\u002Foverview.html\n  - Output Format: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Foutput-control\u002Fformat.html\n  - ensure_keys: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Foutput-control\u002Fensure-keys.html\n  - Instant Streaming: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Foutput-control\u002Finstant-streaming.html\n- **Result & Streaming Events**\n  - Result Data: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fmodel-response\u002Fresult-data.html\n  - Streaming Events: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fmodel-response\u002Fstreaming.html\n- **Session & Memo**\n  - Overview: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Fsession-memo\u002F\n  - Quickstart: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Fsession-memo\u002Fquickstart.html\n- **TriggerFlow Orchestration**\n  - Overview: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Foverview.html\n  - when Branch: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Fwhen-branch.html\n  - if \u002F elif \u002F else: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Fif-branch.html\n  - match \u002F case: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Fmatch-branch.html\n  - batch: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Fbatch.html\n  - for_each: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Ffor-each.html\n  - Runtime Stream: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Fruntime-stream.html\n- **Tools & Extensions**\n  - Tools: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Ftools.html\n  - MCP: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Fmcp.html\n  - auto_func: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Fauto-func.html\n  - KeyWaiter: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Fkey-waiter.html\n- **Prompt Management**: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fprompt-management\u002Foverview.html\n- **Async & Settings**: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fasync-support.html \u002F https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fsettings.html\n- **Playbook**: https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-systems\u002Foverview.html\n\n## 🤝 Community\n\n- Discussions: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fdiscussions\n- Issues: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fissues\n- WeChat Group: https:\u002F\u002Fdoc.weixin.qq.com\u002Fforms\u002FAIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf\n\n## 📄 License\n\nAgently follows an open-core + commercial extension model:\n\n- Open-source core in this repository: [Apache 2.0](LICENSE)\n- Trademark usage policy: [TRADEMARK.md](TRADEMARK.md)\n- Contributor rights agreement: [CLA.md](CLA.md)\n- Enterprise extensions and commercial services: provided under separate commercial agreements\n\n---\n\n\u003Cp align=\"center\">\n  \u003Cb>Start building your production‑ready AI apps →\u003C\u002Fb>\u003Cbr>\n  \u003Ccode>pip install -U agently\u003C\u002Fcode>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Csub>Questions? Read the \u003Ca href=\"https:\u002F\u002Fagently.tech\u002Fdocs\">docs\u003C\u002Fa> or join the \u003Ca href=\"https:\u002F\u002Fdoc.weixin.qq.com\u002Fforms\u002FAIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf\">community\u003C\u002Fa>.\u003C\u002Fsub>\n\u003C\u002Fp>\n","\u003Cimg width=\"640\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAgentEra_Agently_readme_3a373dacffdf.png\" \u002F>\n\n# Agently 4 🚀\n\n> **更快地构建生产级 AI 应用，确保输出稳定且工作流易于维护。**\n\n[英文介绍](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002FREADME.md) | [中文介绍](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002FREADME_CN.md)\n\n[![license](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0-blue.svg)](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002FLICENSE)\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fagently.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fagently\u002F)\n[![Downloads](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fagently.svg)](https:\u002F\u002Fpypistats.org\u002Fpackages\u002Fagently)\n[![GitHub Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FAgentEra\u002FAgently.svg?style=social)](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fstargazers)\n[![Twitter Follow](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002FAgentlyTech?style=social)](https:\u002F\u002Fx.com\u002FAgentlyTech)\n\u003Ca href=\"https:\u002F\u002Fdoc.weixin.qq.com\u002Fforms\u002FAIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf\">\n\u003Cimg alt=\"WeChat\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWeChat%20Group-Join-brightgreen?logo=wechat&style=flat-square\">\n\u003C\u002Fa>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fdiscussions\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F💬_Community-Join-blueviolet?style=for-the-badge\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fagently.tech\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F🌐_Website-Docs-brightgreen?style=for-the-badge\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fissues\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F🐛_Issues-Report-red?style=for-the-badge\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n\u003Cp align=\"center\">\n  \u003Cb>🔥 \u003Ca href=\"https:\u002F\u002Fagently.tech\u002Fdocs\">最新文档\u003C\u002Fa> | 🚀 \u003Ca href=\"#quickstart\">5分钟快速入门\u003C\u002Fa> | 💡 \u003Ca href=\"#-core-features\">核心特性\u003C\u002Fa>\u003C\u002Fb>\n\u003C\u002Fp>\n\n---\n\n## 官方技能\n\n现已发布可安装的 Agently 官方技能，地址如下：\n\n- GitHub：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently-Skills\n- 安装命令：`npx skills add AgentEra\u002FAgently-Skills`\n\n安装后您将获得：\n\n- 针对实际 Agently 工作的更优实现路由，从单请求设计到 TriggerFlow、多智能体、MCP、工具、会话以及 FastAPI 集成\n- 针对常见生产任务的即用型技能指南，无需在每次编码中重复解释框架概念\n- LangChain 和 LangGraph 的迁移手册，帮助现有智能体系统更快迁移到 Agently\n- 更高质量的编码智能体体验，因为技能包为智能体提供了具体的 Agently 模式、边界和推荐实现路径\n\n---\n\n## 📚 快速链接\n\n- **文档（英文）**：https:\u002F\u002Fagently.tech\u002Fdocs\n- **文档（中文）**：https:\u002F\u002Fagently.cn\u002Fdocs\n- **智能体系统手册（英文）**：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-systems\u002Foverview.html\n- **智能体系统手册（中文）**：https:\u002F\u002Fagently.cn\u002Fdocs\u002Fagent-systems\u002Foverview.html\n- **官方 Agelyt 技能**：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently-Skills\n- **安装 Agelyt 技能**：`npx skills add AgentEra\u002FAgently-Skills`\n\n## 可选配套包：Agelyt Devtools\n\n`agently-devtools` 是一个独立的配套包，用于运行时观测和开发者工具。\n\n- 安装：`pip install agently-devtools`\n- 依赖方向：`agently-devtools -> agently`\n- 兼容性：`agently-devtools 0.1.x` 针对 `agently >=4.0.9,\u003C4.1.0`\n- 集成入口：`ObservationBridge` 和 `create_local_observation_app`\n\nDevTools 包是可选的，不会在 `agently` 和 `agently-devtools` 之间形成反向依赖。\n\n## 🤔 为什么选择 Agelyt？\n\n许多 GenAI POC 在生产环境中失败，并非由于模型性能不足，而是因为缺少工程层面的控制：\n\n| 常见挑战 | Agelyt 如何帮助 |\n|:--|:--|\n| 输出模式漂移，JSON 解析失败 | 使用 `output()` + `ensure_keys` 实现“契约优先”的输出控制 |\n| 工作流复杂且难以维护 | 使用 `to` \u002F `if` \u002F `match` \u002F `batch` \u002F `for_each` 进行 TriggerFlow 编排 |\n| 多轮状态不稳定 | 使用 `Session`（v4.0.8.1+），支持会话激活、上下文窗口控制、自定义记忆策略及持久化 |\n| 工具调用难以审计 | 通过 `extra.tool_logs` 记录工具日志 |\n| 切换模型成本高昂 | 使用 `OpenAICompatible` 统一模型设置 |\n\n**Agelyt 将 LLM 的不确定性转化为稳定、可测试、易于维护的工程系统。**\n\n## ✨ 核心特性\n\n### 1) 📝 契约优先的输出控制\n使用 `output()` 定义结构，并通过 `ensure_keys` 强制确保关键字段。\n\n```python\nresult = (\n    agent\n    .input(\"分析用户反馈\")\n    .output({\n        \"sentiment\": (str, \"positive\u002Fneutral\u002Fnegative\"),\n        \"key_issues\": [(str, \"问题摘要\")],\n        \"priority\": (int, \"1-5，5为最高\")\n    })\n    .start(ensure_keys=[\"sentiment\", \"key_issues[*]\"])\n)\n```\n\n### 2) ⚡ 结构化流式处理（即时）\n在生成时即可消费结构化字段。\n\n```python\nresponse = (\n    agent\n    .input(\"解释递归并给出两条建议\")\n    .output({\"definition\": (str, \"一句话\"), \"tips\": [(str, \"建议\")]})\n    .get_response()\n)\n\nfor msg in response.get_generator(type=\"instant\"):\n    if msg.path == \"definition\" and msg.delta:\n        ui.update_definition(msg.delta)\n    if msg.wildcard_path == \"tips[*]\" and msg.delta:\n        ui.add_tip(msg.delta)\n```\n\n### 3) 🧩 TriggerFlow 编排\n可读性强、易于测试的工作流，支持分支和并发。\n\n```python\n(\n    flow.to(handle_request)\n    .if_condition(lambda d: d.value[\"type\"] == \"query\")\n    .to(handle_query)\n    .elif_condition(lambda d: d.value[\"type\"] == \"order\")\n    .to(check_inventory)\n    .to(create_order)\n    .end_condition()\n)\n```\n\n### 4) 🧠 Session（多轮上下文，v4.0.8.1+）\n内置 `SessionExtension`，支持 `activate_session\u002Fdeactivate_session`、上下文窗口控制、自定义记忆策略以及 JSON\u002FYAML 持久化。\n\n```python\nfrom agently import Agently\n\nagent = Agently.create_agent()\n\n# 按用户激活会话（通过 session_id 复用）\nagent.activate_session(session_id=\"demo_user_1001\")\n\n# 可选：按最大长度自动裁剪窗口\nagent.set_settings(\"session.max_length\", 12000)\n\n# 可选：自定义策略（分析 -> 调整大小）\nsession = agent.activated_session\nassert session is not None\n\ndef analysis_handler(full_context，context_window，memo，session_settings):\n    if len(context_window) > 6:\n        return \"keep_last_six\"\n    return None\n\ndef keep_last_six(full_context，context_window，memo，session_settings):\n    return None，list(context_window[-6:]），memo\n\nsession.register_analysis_handler(analysis_handler)\nsession.register_resize_handler(\"keep_last_six\"，keep_last_six)\n```\n\n### 5) 🔧 工具调用 + 日志\n工具的选择和使用会被记录在 `extra.tool_logs` 中。\n\n```python\n@agent.tool_func\ndef add(a: int，b: int) -> int：\n    return a + b\n\nresponse = agent.input(\"12+34=?\").use_tool(add).get_response()\nfull = response.get_data(type=\"all\")\nprint(full[\"extra\"][\"tool_logs\"])\n```\n\n### 6) 🌐 统一模型设置（OpenAI兼容）\n一份配置即可适配多个服务商及本地模型。\n\n```python\nfrom agently import Agently\n\nAgently.set_settings(\n    \"OpenAICompatible\",\n    {\n        \"base_url\": \"https:\u002F\u002Fapi.deepseek.com\u002Fv1\",\n        \"model\": \"deepseek-chat\",\n        \"auth\": \"DEEPSEEK_API_KEY\",\n    },\n)\n```\n\n## 🚀 快速入门\n\n### 安装\n\n```bash\npip install -U agently\n```\n\n*要求：Python >= 3.10，推荐使用 Agently >= 4.0.7.2*\n\n### 5分钟示例\n\n**1. 结构化输出**\n\n```python\nfrom agently import Agently\n\nagent = Agently.create_agent()\n\nresult = (\n    agent.input(\"用一句话介绍 Python，并列出 2 个优点\")\n    .output({\n        \"introduction\": (str, \"一句话\"),\n        \"advantages\": [(str, \"优点\")]\n    })\n    .start(ensure_keys=[\"introduction\", \"advantages[*]\"])\n)\n\nprint(result)\n```\n\n**2. 工作流路由**\n\n```python\nfrom agently import TriggerFlow, TriggerFlowEventData\n\nflow = TriggerFlow()\n\n@flow.chunk\ndef classify_intent(data: TriggerFlowEventData):\n    text = data.value\n    if \"price\" in text:\n        return \"price_query\"\n    if \"feature\" in text:\n        return \"feature_query\"\n    if \"buy\" in text:\n        return \"purchase\"\n    return \"other\"\n\n@flow.chunk\ndef handle_price(_: TriggerFlowEventData):\n    return {\"response\": \"定价取决于具体方案...\"}\n\n@flow.chunk\ndef handle_feature(_: TriggerFlowEventData):\n    return {\"response\": \"我们的产品支持...\"}\n\n(\n    flow.to(classify_intent)\n    .match()\n    .case(\"price_query\")\n    .to(handle_price)\n    .case(\"feature_query\")\n    .to(handle_feature)\n    .case_else()\n    .to(lambda d: {\"response\": \"您想了解什么呢？\"})\n    .end_match()\n    .end()\n)\n\nprint(flow.start(\"这个要多少钱？\"))\n```\n\n## ✅ 您的应用已准备好上线吗？— 上线准备检查清单\n\n基于使用 Agently 成功交付实际项目的团队经验，这份 **生产就绪检查清单** 可帮助您在发布前降低常见风险。\n\n| 领域 | 检查项 | 推荐做法 |\n| :--- | :--- | :--- |\n| **📝 输出稳定性** | 关键接口是否稳定？ | 使用 `output()` 定义模式，并通过 `ensure_keys` 锁定关键字段。 |\n| **⚡ 实时用户体验** | 生成过程中需要实时更新吗？ | 使用 `type=\"instant\"` 的结构化流式事件进行消费。 |\n| **🔍 可观测性** | 工具调用可审计吗？ | 检查 `extra.tool_logs` 获取完整的参数和结果。 |\n| **🧩 工作流健壮性** | 复杂的工作流是否经过充分测试？ | 对每个 TriggerFlow 分支以及并发限制进行单元测试，确保输出符合预期。 |\n| **🧠 内存与上下文** | 多轮交互体验是否一致？ | 定义会话\u002F记忆摘要、裁剪及持久化策略。 |\n| **📄 提示词管理** | 逻辑能否安全演进？ | 对提示词进行版本控制和配置，以追踪变更历史。 |\n| **🌐 模型策略** | 是否可以切换或降级模型？ | 使用 `OpenAICompatible` 统一配置，实现快速服务商切换。 |\n| **🚀 性能与规模** | 能否应对高并发场景？ | 在真实的 Web 服务场景中验证异步性能。 |\n| **🧪 质量保证** | 回归测试是否完整？ | 为核心场景创建固定输入及预期输出的测试用例。 |\n\n\n## 📈 谁正在使用 Agently 解决实际问题？\n\n> “Agently 帮助我们把评审规则转化为可执行的工作流，并将关键评分准确率稳定在 75% 以上，显著提升了投标评审效率。” — 某大型能源国企项目负责人\n\n> “Agently 实现了从澄清到查询规划再到结果呈现的闭环流程，首次响应准确率达到 90% 以上，且生产环境表现稳定。” — 某大型能源集团数据负责人\n\n> “借助 Agently 的编排和会话能力，我们快速开发并上线了一款用于课程管理和答疑的教学助理系统，并持续迭代优化。” — 某大学教学助理项目负责人\n\n**您的项目也可以成为下一个成功案例。**  \n📢 [在 GitHub Discussions 分享您的案例 →](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fdiscussions\u002Fcategories\u002Fshow-and-tell)\n## ❓ 常见问题解答\n\n**问：Agently 与 LangChain 或 LlamaIndex 有何不同？**  \n**答：** Agently **专为生产环境打造**。它专注于稳定的接口（契约优先的输出）、易读易测的编排（TriggerFlow）以及可观察的工具调用（`tool_logs`）。对于那些在上线后需要可靠性和可维护性的团队来说，Agently 是更合适的选择。\n\n**问：支持哪些模型？切换模型的成本高吗？**  \n**答：** 通过 `OpenAICompatible`，您可以连接 OpenAI、Claude、DeepSeek、Qwen 等大多数兼容 OpenAI 的 API，以及 Llama\u002FQwen 等本地模型。**同一套业务代码无需修改即可切换模型**，从而减少供应商锁定的风险。\n\n**问：学习曲线如何？我应该从哪里开始？**  \n**答：** 核心 API 非常简单——**您可以在几分钟内运行第一个代理**。建议从 [快速入门](https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fquickstart.html) 开始，然后深入学习 [输出控制](https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Foutput-control\u002Foverview.html) 和 [TriggerFlow](https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Foverview.html)。\n\n**问：如何部署基于 Agently 的服务？**  \n**答：** Agently 不会限制您的部署方式。它提供了异步 API 和 FastAPI 示例。[FastAPI 集成示例](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Ftree\u002Fmain\u002Fexamples\u002Fstep_by_step\u002F13-auto_loop_fastapi)涵盖了 SSE、WebSocket 和标准 POST 请求。\n\n**问：是否提供企业级支持？**  \n**答：** 是的。本仓库中的核心框架仍以 **Apache 2.0** 协议开源。企业级支持、私有扩展、托管服务以及基于 SLA 的合作，则通过单独的商业协议提供。您可以通过 [社区](https:\u002F\u002Fdoc.weixin.qq.com\u002Fforms\u002FAIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf) 与我们联系。\n\n**问：Agently 的开源版与企业版有何区别？**  \n**答：** 开源核心包括本仓库中的通用框架和公开功能。而企业版（例如私有扩展包、高级治理模块、私有部署支持以及 SLA 服务）则通过商业条款另行提供。\n\n## 🧭 文档指南（核心路径）\n\n- **入门**\n  - 快速上手：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fquickstart.html\n  - 模型设置：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fmodel-settings.html\n  - 官方 Agently 技能：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently-Skills\n- **输出控制（结构化输出）**\n  - 概述：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Foutput-control\u002Foverview.html\n  - 输出格式：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Foutput-control\u002Fformat.html\n  - ensure_keys：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Foutput-control\u002Fensure-keys.html\n  - 即时流式输出：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Foutput-control\u002Finstant-streaming.html\n- **结果与流式事件**\n  - 结果数据：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fmodel-response\u002Fresult-data.html\n  - 流式事件：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fmodel-response\u002Fstreaming.html\n- **会话与记忆**\n  - 概述：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Fsession-memo\u002F\n  - 快速上手：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Fsession-memo\u002Fquickstart.html\n- **TriggerFlow 编排**\n  - 概述：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Foverview.html\n  - when 分支：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Fwhen-branch.html\n  - if \u002F elif \u002F else：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Fif-branch.html\n  - match \u002F case：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Fmatch-branch.html\n  - batch：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Fbatch.html\n  - for_each：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Ffor-each.html\n  - 运行时流：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Ftriggerflow\u002Fruntime-stream.html\n- **工具与扩展**\n  - 工具：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Ftools.html\n  - MCP：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Fmcp.html\n  - auto_func：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Fauto-func.html\n  - KeyWaiter：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-extensions\u002Fkey-waiter.html\n- **提示词管理**：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fprompt-management\u002Foverview.html\n- **异步支持与配置**：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fasync-support.html \u002F https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fsettings.html\n- **工作手册**：https:\u002F\u002Fagently.tech\u002Fdocs\u002Fen\u002Fagent-systems\u002Foverview.html\n\n## 🤝 社区\n\n- 讨论区：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fdiscussions\n- 问题反馈：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fissues\n- 微信群：https:\u002F\u002Fdoc.weixin.qq.com\u002Fforms\u002FAIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf\n\n## 📄 许可证\n\nAgently 采用开源核心 + 商业扩展的模式：\n\n- 本仓库中的开源核心：[Apache 2.0](LICENSE)\n- 商标使用政策：[TRADEMARK.md](TRADEMARK.md)\n- 贡献者权利协议：[CLA.md](CLA.md)\n- 企业级扩展及商业服务：通过单独的商业协议提供\n\n---\n\n\u003Cp align=\"center\">\n  \u003Cb>开始构建您的生产就绪型 AI 应用 →\u003C\u002Fb>\u003Cbr>\n  \u003Ccode>pip install -U agently\u003C\u002Fcode>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Csub>有疑问？请阅读 \u003Ca href=\"https:\u002F\u002Fagently.tech\u002Fdocs\">文档\u003C\u002Fa> 或加入 \u003Ca href=\"https:\u002F\u002Fdoc.weixin.qq.com\u002Fforms\u002FAIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf\">社区\u003C\u002Fa>。\u003C\u002Fsub>\n\u003C\u002Fp>","# Agently 快速上手指南\n\nAgently 是一个专为生产环境设计的 AI 应用开发框架，旨在通过契约优先的输出控制、可维护的工作流编排（TriggerFlow）和稳定的会话管理，解决大模型应用中的工程化难题。\n\n## 1. 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Linux, macOS 或 Windows\n*   **Python 版本**：>= 3.10\n*   **推荐版本**：Agently >= 4.0.7.2\n*   **前置依赖**：无需额外系统级依赖，仅需标准的 Python 环境。\n\n> 💡 **国内开发者提示**：建议使用国内镜像源加速安装过程（如清华源或阿里源）。\n\n## 2. 安装步骤\n\n### 基础安装\n使用 pip 安装最新版本的 Agently：\n\n```bash\npip install -U agently\n```\n\n**国内加速安装（推荐）：**\n```bash\npip install -U agently -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 可选：安装官方技能包 (Agently Skills)\n为了获得更好的路由实现、生产任务指引以及从 LangChain\u002FLangGraph 迁移的支持，建议安装官方技能包：\n\n```bash\nnpx skills add AgentEra\u002FAgently-Skills\n```\n\n### 可选：安装开发工具 (DevTools)\n如果需要运行时观察和开发者工具支持：\n\n```bash\npip install agently-devtools\n```\n\n## 3. 基本使用\n\n### 示例一：结构化输出 (Contract-first Output)\n定义输出的数据结构，并强制关键字段存在，确保结果稳定可靠。\n\n```python\nfrom agently import Agently\n\nagent = Agently.create_agent()\n\nresult = (\n    agent.input(\"用一句话介绍 Python 并列出 2 个优势\")\n    .output({\n        \"introduction\": (str, \"一句话介绍\"),\n        \"advantages\": [(str, \"优势描述\")]\n    })\n    .start(ensure_keys=[\"introduction\", \"advantages[*]\"])\n)\n\nprint(result)\n```\n\n### 示例二：工作流编排 (TriggerFlow)\n使用 `TriggerFlow` 构建可读性强、支持分支判断的业务流程。\n\n```python\nfrom agently import TriggerFlow, TriggerFlowEventData\n\nflow = TriggerFlow()\n\n@flow.chunk\ndef classify_intent(data: TriggerFlowEventData):\n    text = data.value\n    if \"价格\" in text:\n        return \"price_query\"\n    if \"功能\" in text:\n        return \"feature_query\"\n    return \"other\"\n\n@flow.chunk\ndef handle_price(_: TriggerFlowEventData):\n    return {\"response\": \"价格取决于具体套餐...\"}\n\n@flow.chunk\ndef handle_feature(_: TriggerFlowEventData):\n    return {\"response\": \"我们的产品支持...\"}\n\n(\n    flow.to(classify_intent)\n    .match()\n    .case(\"price_query\")\n    .to(handle_price)\n    .case(\"feature_query\")\n    .to(handle_feature)\n    .case_else()\n    .to(lambda d: {\"response\": \"您想了解什么？\"})\n    .end_match()\n    .end()\n)\n\nprint(flow.start(\"这个多少钱？\"))\n```\n\n### 示例三：多轮会话管理 (Session)\n激活会话以维持上下文，支持自定义记忆策略和持久化。\n\n```python\nfrom agently import Agently\n\nagent = Agently.create_agent()\n\n# 激活用户会话\nagent.activate_session(session_id=\"demo_user_1001\")\n\n# 设置上下文窗口最大长度\nagent.set_settings(\"session.max_length\", 12000)\n\n# 后续对话将自动包含历史上下文\nresponse = agent.input(\"继续刚才的话题\").start()\nprint(response)\n```","某电商团队正在开发一个自动化“智能售后处理系统”，需要根据用户投诉内容自动判断责任方、生成赔偿方案并调用内部 API 执行。\n\n### 没有 Agently 时\n- **输出格式不稳定**：大模型返回的 JSON 结构经常漂移或缺少关键字段，导致后端解析频繁报错，需编写大量冗余的正则清洗代码。\n- **流程逻辑难以维护**：随着业务规则增加（如区分物流破损与质量问题），硬编码的 `if-else` 嵌套极深，新增分支极易引发回归错误。\n- **多轮对话状态丢失**：在需要用户补充证据的复杂场景中，会话上下文管理混乱，常出现忘记前文信息或重复询问的情况。\n- **模型切换成本高**：一旦想从成本较低的模型切换到高精度模型，往往需要重写大量提示词适配代码和参数配置。\n\n### 使用 Agently 后\n- **契约式输出控制**：利用 `output()` 配合 `ensure_keys` 强制约束返回结构，确保每次都能获得符合后端要求的标准 JSON，彻底消除解析异常。\n- **事件驱动流编排**：通过 `TriggerFlow` 的 `to\u002Fif\u002Fmatch` 语法清晰定义业务流转，将复杂的判定逻辑可视化，新增规则只需添加节点而非重构代码。\n- **原生会话状态管理**：内置 `Session` 机制自动维护多轮交互状态，智能体能够精准记忆用户提供的证据细节，实现流畅的追问与处理。\n- **模型无缝热切换**：凭借框架的抽象层，仅需修改配置文件即可在底层切换任意大模型，上层业务逻辑与调用代码无需任何改动。\n\nAgently 通过工程化的控制能力，将不稳定的生成式 AI 转化为可预测、易维护的生产级应用核心。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAgentEra_Agently_afb89d15.png","AgentEra","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FAgentEra_0455c814.png","",null,"developer@agently.tech","AgentlyTech","https:\u002F\u002Fgithub.com\u002FAgentEra",[80],{"name":81,"color":82,"percentage":83},"Python","#3572A5",100,1547,172,"2026-04-12T16:23:39","Apache-2.0","Linux, macOS, Windows","未说明",{"notes":91,"python":92,"dependencies":93},"该工具是一个用于构建生产级 AI 应用的框架，主要依赖大模型 API（支持 OpenAI 兼容接口），无需本地部署大型模型或特定 GPU 环境。可选安装 agently-devtools 包用于运行时观察和开发工具支持（版本需与 agently 匹配）。",">=3.10",[94,95],"agently>=4.0.7.2","agently-devtools (可选)",[35,14,13],[98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116],"agent","agent-framework","python","framework","agent-based-framework","chatglm","ernie","google-gemini","gpt","llm-agent","llm-application","llm-apps","llm-framework","llmops","llms","wenxinyiyan","gemini","claude","minimax","2026-03-27T02:49:30.150509","2026-04-15T04:27:52.583544",[120,125,130,135,140,145],{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},33647,"在 PyCharm 中运行代码时遇到 'Event loop is closed' 错误怎么办？","这是一个已知的异步事件循环关闭问题。请升级 Agently 包到版本 3.2.2.10 或更高版本来解决此问题。执行命令：`pip install Agently>=3.2.2.10`。更新后本地测试显示不再出现该错误。","https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fissues\u002F65",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},33648,"为什么生成的代码中换行符丢失，导致代码无法运行？","这是之前版本处理代码换行符的缺陷。该问题已在版本 3.0.5.post3 中修复。请确保您的 Agently 版本不低于此版本，或者查看提交记录 `24b28ddcb9dabf2500311910aa50e74f1f61ad23` 了解修复细节。","https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fissues\u002F37",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},33649,"Agently 相比 LangChain 有什么核心优势和亮点？","Agently 提供了更顺畅的开发思路，特别是在工作流（Workflow）和数据传递逻辑上进行了优化（v3.3+）。其架构支持由 Agent 代理请求（点）、承载逻辑的 Workflow Chunk（块），并能连接成单向有序或环状的运行流（网）。多 Agent 自动交互可以通过总控路由、自发轮询或工作流事件触发等多种方式在此基础架构上构建，而非单一形态。","https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fissues\u002F96",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},33650,"使用 Workflow 时出现 'Error: An error occurred during streaming' 错误如何解决？","该错误通常与非字符串（non-string）的内容处理有关。请在版本 3.3.1.1 或更高版本中尝试，该版本对非 string 的 content 内容进行了适配修复。执行命令：`pip install Agently>=3.3.1.1`。","https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fissues\u002F108",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},33651,"如何在 Agently 中接入国产开源大模型（如 Qwen, ChatGLM, Baichuan）？","Agently 支持通过 OAIClient 请求国产模型 API。例如，调用 Qwen API 的方法与调用 Kimi 类似，可参考官方文档：http:\u002F\u002Fagently.cn\u002Ffeatures\u002Fmodel_request.html#kimi。对于本地部署的开源模型，可以参考示例笔记本：`playground\u002Fusing_local_open_source_model_to_drive_agents.ipynb`。","https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fissues\u002F21",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},33652,"Agently 是否支持接入 Langfuse 等日志监控系统？","支持。Agently v4 及以后版本底层设计允许灵活替换以支持除 Langfuse 以外的其他日志系统。虽然不像 LangChain 那样仅通过环境变量直接指定，但可以通过底层替换实现，并可以封装特定的语法糖来专门支持 Langfuse。建议前往项目的 Discussion 板块获取更多关于 Q&A 和建议的讨论。","https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fissues\u002F168",[151,156,161,166,171,176,181,186,191,196,201,206,211,216,221,226,231,236,241,246],{"id":152,"version":153,"summary_zh":154,"released_at":155},258324,"v4.0.9","# v4.0.9\n\n## 功能特性\n\n### 运行时观测与 DevTools 伴侣\n\n1. [运行时] 新增了用于请求、模型、智能体回合、动作及工作流观测的运行时事件总线和运行 lineage 基础。\n2. [运行时] 新增了模型请求观测生命周期事件，包括提示构建、请求、流式传输、重试、完成和元数据阶段。\n3. [DevTools] 引入了 `agently-devtools` 作为可选的伴侣包，用于本地观测、评估、日志记录以及 Playground 工作流。\n4. [DevTools] 在 `ObservationBridge` 和 `create_local_observation_app` 周围新增了公开的集成入口。\n\n### TriggerFlow\n\n1. [TriggerFlow] TriggerFlow 执行现在会发出工作流定义，以便本地执行图能够显示完整的静态流程，包括尚未运行的分支。\n2. [TriggerFlow] 新增了分块级别的运行时作用域，包括信号元数据、运行时输入输出负载以及工作流流式事件和结果事件中的源分块元数据。\n3. [TriggerFlow] 支持通过 JSON 和 YAML 导出和导入工作流定义，并生成 Mermaid 图以供审查工作流资产。\n4. [TriggerFlow] 新增了执行状态保存与加载功能，支持可重启的暂停和恢复工作流。\n5. [TriggerFlow] 新增了子流程支持、运行时资源管理以及更强的契约类型检查，包括与 TriggerFlow 契约对齐的 FastAPI Helper。\n\n### 工具与开发者体验\n\n1. [工具] 新增了基于 Playwright 和 PyAutoGUI 的内置浏览支持，并在 `Browse` 中提供了回退集成。\n2. [技能] 发布了官方可安装的 Agently 技能目录。\n\n## 更新内容\n\n### 请求、响应与设置\n\n1. [请求] 将 `ModelRequest` 的响应与结果处理拆分为更清晰的响应端模块。\n2. [响应] 优化了围绕 `ModelResponse` 和 `ModelResponseResult` 的响应复用路径。\n3. [设置] 为 `settings.load_settings()` 以及暴露 `.load_settings()` 方法的实体添加了 `auto_load_env=True` 支持。\n4. [提示] 为 `.get_json_prompt()` 和 `.get_yaml_prompt()` 添加了 `save_to` 和 `encoding` 支持。\n5. [输出] 在输出格式声明中新增了 `Enum` 支持。\n6. [工具] 将 `RuntimeData` 重命名为 `StateData`，同时保留兼容性别名。\n\n### 会话与工具链\n\n1. [会话] 简化了会话大小调整流程和处理器 API，并进行了后续的类型检查和行为修复。\n2. [工具] 重构了工具处理器和多轮动作流程，使工具执行路径更易于观测和维护。\n\n## 错误修复\n\n1. [运行时] 修复了运行时观测中解析的模型完成负载字段问题。\n2. [TriggerFlow] 修复了工作流定义导出或 Mermaid 图生成可能遗漏分块的情况。\n3. [提示] 修复了 `.load_yaml_prompt()` 和 `.load_json_prompt()` 对长字符串的处理问题。\n4. [设置] 修复了认证头的处理问题，并保持了 `options` 和 `request_options` 之间的兼容性。\n5. [数据] 修复了 `DataLocator` 对根级列表的处理问题。\n6. [会话] 修复了聊天历史…","2026-03-28T16:09:16",{"id":157,"version":158,"summary_zh":159,"released_at":160},258325,"v4.0.8","## Agently v4.0.8\n\n### 功能特性\n\n#### 1. 新集成：`Agently FastAPIHelper`\n`FastAPIHelper` 是一个新的 FastAPI 集成组件，只需极少的配置即可将 Agently 提供者转换为 HTTP API。  \n它支持 `BaseAgent`、`ModelRequest`、`TriggerFlow`、`TriggerFlowExecution` 以及自定义生成器函数，并为 `POST`、`GET`、`SSE` 和 `WebSocket` 提供统一的请求\u002F响应封装。\n\n相关示例：\n- [fastapi_helper_agent_ollama.py](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Ffastapi\u002Ffastapi_helper_agent_ollama.py)\n- [fastapi_helper_triggerflow_ollama.py](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Ffastapi\u002Ffastapi_helper_triggerflow_ollama.py)\n- [fastapi_helper_agent_request.py](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Ffastapi\u002Ffastapi_helper_agent_request.py)\n\n```python\nfrom agently import Agently\nfrom agently.integrations.fastapi import FastAPIHelper\nimport uvicorn\n\nagent = Agently.create_agent()\nagent.role(\"你是一个简洁且乐于助人的助手。\", always=True)\n\napp = FastAPIHelper(response_provider=agent)\napp.use_post(\"\u002Fagent\u002Fchat\").use_get(\"\u002Fagent\u002Fchat\u002Fget\").use_sse(\"\u002Fagent\u002Fchat\u002Fsse\").use_websocket(\"\u002Fagent\u002Fchat\u002Fws\")\n\nif __name__ == \"__main__\":\n    uvicorn.run(app, host=\"127.0.0.1\", port=8000)\n```\n\n使用 cURL 进行快速测试：\n\n```bash\n# POST（非流式）\ncurl -sS -X POST \"http:\u002F\u002F127.0.0.1:8000\u002Fagent\u002Fchat\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"data\": { \"input\": \"用一句话简短地打个招呼。\" },\n    \"options\": {}\n  }'\n```\n\n```json\n{\n  \"status\": 200,\n  \"data\": \"你好！很高兴认识你。\",\n  \"msg\": null\n}\n```\n\n```bash\n# SSE（流式）\ncurl -N -G \"http:\u002F\u002F127.0.0.1:8000\u002Fagent\u002Fchat\u002Fsse\" \\\n  --data-urlencode 'payload={\"data\":{\"input\":\"从1数到3\"},\"options\":{}}'\n```\n\n```text\ndata: {\"status\": 200, \"data\": \"1\", \"msg\": null}\n\ndata: {\"status\": 200, \"data\": \", 2\", \"msg\": null}\n\ndata: {\"status\": 200, \"data\": \", 3\", \"msg\": null}\n```\n\n#### 2. 会话系统重写（`Session` + `SessionExtension`）\n全新的会话系统现已内置到默认的 Agent 扩展栈中。  \n它引入了作为一等公民的核心对象 `Session`，具备 `full_context`、`context_window` 和 `memo` 等功能，并支持结构化的导入导出（`JSON` \u002F `YAML`），以及可定制的记忆控制分析与执行处理器。\n\n相关示例：\n- [session.py](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Fbasic\u002Fsession.py)\n\n```python\nfrom agently import Agently\n\nagent = Agently.create_agent()\n\nagent.activate_session(session_id=\"demo_session\")\nagent.input(\"请记住：我最喜欢的城市是成都。\").streaming_print()\nagent.input(\"我最喜欢的城市是什么？\").streaming_print()\n\nagent.deactivate_session()\nagent.input(\"我最喜欢的城市是什么？\").streaming_print()\n```\n\n### 更新内容\n\n#### 1. TriggerFlow 运行时改进\n1. 为 `TriggerFlowExecution` 添加了 `.set_concurrency()` 方法，用于动态控制运行时并发度。\n2. 添加了 `FunctionShifter.as","2026-02-22T18:18:59",{"id":162,"version":163,"summary_zh":164,"released_at":165},258326,"v4.0.7","## 功能特性\n\n### TriggerFlow 并发控制\n\n1. **[TriggerFlow]**：针对每次执行的全局并发控制（在创建执行或启动流程时传递 `concurrency` 参数）。\n2. **[TriggerFlow]**：`.batch()` 支持并发控制。\n3. **[TriggerFlow]**：`.for_each()` 支持并发控制。\n4. **[示例]**：新增并发控制示例。\n\n### Python 沙箱工具\n\n1. **[Utils]**：新增 Python 沙箱工具（更安全的隔离执行环境）。\n\n## 更新内容\n\n### TriggerFlow\n\n1. **[TriggerFlow]**：`.to()` \u002F `.batch()` 支持元组形式 `(name, handler)`，以便快速创建分块。\n2. **[TriggerFlow]**：在 BaseProcess 中使用 `TriggerFlow.chunk()`，以确保分块被正确注册。\n3. **[TriggerFlow]**：为快速创建的分块自动生成 ID。\n4. **[示例]**：新增 TriggerFlow RESTful API + FastAPI 示例。\n5. **[示例]**：新增快速创建分块的示例。\n\n### Agent 请求\n\n1. **[Request]**：请求实例新增 `.start()` \u002F `.async_start()` 方法。\n2. **[Request Settings]**：`specific` 现在支持 `None`。\n3. **[Request Settings]**：`.set_settings()` 中新增 `auto_load_env`，核心类现统一使用 `settings.set_settings`。\n\n### 提示词 \u002F 配置提示词\n\n1. **[Prompt]**：`.get_yaml_prompt()` \u002F `.get_json_prompt()` 由 `.to_*` 重命名而来。\n2. **[Prompt]**：`.load_yaml_prompt()` \u002F `.load_json_prompt()` 支持 `Path` 输入及键路径提取。\n3. **[Prompt]**：向 `.load_yaml_prompt()` \u002F `.load_json_prompt()` 添加 `encoding` 参数。\n4. **[Prompt]**：修复提示词类型误判问题。\n5. **[Prompt]**：将 `DataFormatter.substitute_placeholder()` 从 Prompt 中分离至工具类。\n\n### 调试 \u002F 开发者体验\n\n1. **[Debug]**：美化并刷新控制台输出，使输出更加流畅。\n2. **[Examples]**：为 `specific` 类型提供函数调用与推理示例。\n3. **[Examples]**：新增 uvicorn 启动脚本。\n\n## 错误修复\n\n1. **[TriggerFlow]**：修复批量等待的 bug。\n2. **[Prompt]**：在生成配置提示词时忽略 `None`。\n3. **[Prompt]**：确保 `yaml.safe_dump()` 使用 `sort_keys` 以保持原始顺序。\n4. **[Request]**：`.get_result()` 应为同步方法（已在范围内修复）。\n5. **[Misc]**：修复导致主包导入问题的 LazyImport 错误。\n6. **[MCP]**：支持无 structured_content 或非 TextContent 的 MCP 响应。\n7. **[Auth]**：避免在未配置认证时发送认证信息。\n8. **[Compatibility]**：确保对不确定类型如 `dict` \u002F `dict[Any, Any]` 的兼容性。","2026-01-08T13:57:54",{"id":167,"version":168,"summary_zh":169,"released_at":170},258327,"v4.0.6","## 功能特性\n\n### ChromaDB 集成\n\n您可以通过 Agently 的 ChromaDB 集成来简化 ChromaDB 的使用场景。\n\n```python\nfrom agently import Agently\nfrom agently.integrations.chromadb import ChromaData, ChromaEmbeddingFunction\nfrom chromadb import Client as ChromaDBClient\n\nembedding = Agently.create_agent()\nembedding.set_settings(\n    \"OpenAICompatible\",\n    {\n        \"model\": \"qwen3-embedding:0.6b\",\n        \"base_url\": \"http:\u002F\u002F127.0.0.1:11434\u002Fv1\u002F\",\n        \"auth\": \"nothing\",\n        \"model_type\": \"embeddings\",\n    },\n).set_settings(\"debug\", False)\n\nembedding_function = ChromaEmbeddingFunction(agent=embedding)\n\nchroma_data = ChromaData(\n    [\n        {\n            \"document\": \"关于狗的书\",\n            \"metadata\": {\"book_name\": \"🐶\"},\n        },\n        {\n            \"document\": \"关于汽车的书\",\n            \"metadata\": {\"book_name\": \"🚗\"},\n        },\n        {\n            \"document\": \"关于交通工具的书\",\n            \"metadata\": {\"book_name\": \"🚘\"},\n        },\n        {\n            \"document\": \"关于鸟类的书\",\n            \"metadata\": {\"book_name\": \"🐦‍⬛\"},\n        },\n    ],\n)\n\nchromadb = ChromaDBClient()\ncollection = chromadb.create_collection(\n    name=\"test\",\n    get_or_create=True,\n    metadata={\n        \"hnsw:space\": \"cosine\",\n    },\n    configuration={\n        \"embedding_function\": embedding_function,\n    },\n)\n\ncollection.add(**chroma_data.get_kwargs())\nprint(\"[ADD]:\\n\", chroma_data.get_original_data())\n\nresult = collection.query(query_texts=[\"关于交通的书\"])\nprint(result)\n```\n\n## 更新内容\n\n### TriggerFlow\n\n1. `.when()` 支持 `'and'`、`'or'` 和 `'simple_or'` 模式。[[示例代码](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Ftrigger_flow\u002Fwhen.py)]\n2. 开发者可以使用 `.save_blue_print()` 从 TriggerFlow 实例或蓝图实例中导出蓝图数据，并使用 `.load_blue_print()` 将蓝图数据导入到其他 TriggerFlow 实例或蓝图实例中。[[示例代码](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Ftrigger_flow\u002Fsave_and_load_blue_print.py)]\n\n### Agent Request\n\n#### 更好的提示 DX\n\n1. **[提示]**：新增提示槽位 `options`，允许开发者自定义单次请求或代理请求的选项。\n2. **[提示]**：新增提示槽位 `examples`，帮助开发者提供一次性的或少量示例。\n3. **[提示]**：更新 `agent.prompt`，允许开发者仅导出提示文本或消息。[[示例代码](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Fprompt_generation\u002Fbasic.py)]\n4. **[提示]**：新增设置 `prompt.prompt_title_mapping`，帮助开发者自定义不同提示槽位的标题。[[示例代码](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Fprompt_generation\u002Fcustomize_prompt_title.py)]\n\n#### 配置提示更新\n\n5. **[配置提示]**：支持表达 **Agently 输出格式**。[[示例代码](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgent","2025-11-10T12:03:28",{"id":172,"version":173,"summary_zh":174,"released_at":175},258328,"v4.0.5","## 核心功能更新\n\n### TriggerFlow\n\n1. 重写每个流程的 `.for_each()` 方法，完美支持嵌套的 `for each` 循环。[[示例代码](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Ftrigger_flow\u002Fnested_for.py)]\n2. 新增 `.____(\u003C注释>, log_info=\u003CTrue | False>, print_info=\u003CTrue | False>, show_value=\u003CTrue | False>)` 方法，帮助开发者更美观地编写流程链。\n3. 新增 `.when()` 方法，支持开发者等待分块完成事件、运行时数据变化事件、流程数据变化事件或自定义事件，并触发后续操作。[[示例代码](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Ftrigger_flow\u002Fwhen.py)]\n4. 新增 `.collect()` 方法，支持开发者等待并收集并行分支的结果。[[示例代码](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Ftrigger_flow\u002Fwhen.py)]\n5. 重写并更新匹配分支流程，现在开发者可以使用 `.match(mode=\u003C\"hit_all\" | \"hit_first\">)` 来设置不同的判断命中策略。[[示例代码](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Ftrigger_flow\u002Fmatch_case.py)]\n\n您还可以在 [TriggerFlow 示例](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Ftrigger_flow\u002F) 目录中探索更多示例代码。\n\n### 提示配置\n\n在 Agently v3 中，开发者非常喜欢 **YAML-Prompt** 功能。现在我们将其更新为 **Prompt Configures**！\n\n#### 在任何提示设置中使用映射替换\n\n现在，开发者可以在任何提示设置方法中使用 `mappings` 参数。使用场景示例：`agent.input(\"${user_input}\", mappings={ \"user_input\": beautify(user_input) })` 或 `agent.set_agent_prompt(\"instruct\", \"You're a ${ role }\", mappings={ \"role\": roles[current_role] })`。\n\n开发者可以使用映射替换功能来替换字符串内容中的占位符 `${ \u003C变量名> }`。此外，还可以用于替换字典中的键名或值，例如 `{ \"${ key_to_be_replaced }\": \"${ value_to_be_replaced_directly }\" }`。\n\n请查看此处的 [示例代码](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Fprompt_mappings.py)。\n\n#### 支持 YAML 和 JSON 格式！\n\n现在，开发者可以使用 YAML 和 JSON 格式的数据来配置智能体的行为！\n\n- YAML-Prompt 示例代码：\n  - 配置文件：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Fconfigure_prompt\u002Fyaml_prompt.yaml\n  - 执行代码：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Fconfigure_prompt\u002Fload_yaml_prompt.py\n\n- JSON-Prompt 示例代码：\n  - 配置文件：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Fconfigure_prompt\u002Fjson_prompt.json\n  - 执行代码：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Fconfigure_prompt\u002Fload_json_prompt.py\n\n### 内置工具\n\n我们新增了两个内置工具 **Search** 和 **Browse**，既可以注册到智能体中使用，也可以独立使用。您可以使用 `from agently.builtins.tools import Search, Browse` 来导入并使用它们。\n\n**Search** 工具可以从 DuckDuckGo、Bing 和 Google 等搜索引擎中搜索信息。","2025-10-09T10:30:43",{"id":177,"version":178,"summary_zh":179,"released_at":180},258329,"v4.0.3","修复了一些主要的 bug，并添加了更多示例：\n\n触发流程功能示例：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Ftree\u002Fmain\u002Fexamples\u002Ftrigger_flow\n\n触发流程 WebSocket 服务器示例：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Ftree\u002Fmain\u002Fexamples\u002Ftrigger_flow\u002Fws_server","2025-09-16T03:40:33",{"id":182,"version":183,"summary_zh":184,"released_at":185},258330,"v4.0.1","新特性：\n\n【触发流程】：\n\n1. if 条件链式表达式；\n2. flow.when()、flow.when_event()、flow.when_runtime_data()、flow.when_flow_data()；\n3. 可从流程实例快速启动（创建临时执行）；\n4. 分隔方法 .____()；\n5. 创建新流程时支持指定事件类型；\n","2025-09-12T03:16:38",{"id":187,"version":188,"summary_zh":189,"released_at":190},258331,"v4.0.0","新功能：\n\n触发流程（[示例](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Ftree\u002Fmain\u002Fexamples\u002Ftrigger_flow)）","2025-09-11T07:11:26",{"id":192,"version":193,"summary_zh":194,"released_at":195},258332,"v4.0.0-beta-3","v4.0.0b3（https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F232）\n\n新特性：\n\n1. 支持将MCP作为工具：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Fmcp_agent.py\n2. 密钥等待器扩展：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Fkey_waiter_agent.py\n3. 自动函数装饰器：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002Fexamples\u002Fauto_func_decorator.py\n4. 使用系统消息管理帧内事件\n5. 流式调试日志（新的调试控制台CUI仍需优化）\n\nBug修复：\n\n1. v4.0.0v2中工具扩展的相关问题\n2. 当请求耗时较长时，Httpx连接过早关闭的问题\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fcompare\u002Fv4.0.0-beta-2...v4.0.0-beta-3","2025-08-18T12:39:22",{"id":197,"version":198,"summary_zh":199,"released_at":200},258333,"v4.0.0-beta-2","核心功能：智能体扩展 `Tool`\n\n```python\nimport asyncio\nfrom agently import Agently\n\nAgently.set_settings(\n    \"OpenAICompatible\",\n    {\n        \"base_url\": \"http:\u002F\u002Flocalhost:11434\u002Fv1\",\n        \"model\": \"qwen2.5:7b\",\n        \"model_type\": \"chat\",\n    },\n)\n\nagent = Agently.create_agent()\n\n\n@agent.tool_func\nasync def add(a: int, b: int) -> int:\n    \"\"\"\n    计算 `a(int)` 加上 `b(int)` 的结果\n    \"\"\"\n    await asyncio.sleep(1)\n    print(a, b, a + b)\n    return a + b\n\n\nresult = agent.input(\"34643523+52131231=? 使用工具计算！\").use_tool(add).start()\nprint(result)\n\n```","2025-08-13T09:55:52",{"id":202,"version":203,"summary_zh":204,"released_at":205},258334,"v4.0.0-beta-1","\u003Cimg width=\"640\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fc645d031-c8b0-4dba-a515-9d7a4b0a6881\" \u002F>\r\n\r\n# Agently 4 (v4.0.0.Beta1)\r\n\r\n[English Introduction](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002FREADME.md) | [中文介绍](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002FREADME_CN.md)\r\n\r\n\r\n> *Speed Up Your GenAI Application Development*\r\n\r\n[![license](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache2.0-blue.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fblob\u002Fmain\u002FLICENSE)\r\n[![PyPI - Downloads](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fagently?style=flat-square)](https:\u002F\u002Fpypistats.org\u002Fpackages\u002Fagently)\r\n[![GitHub star chart](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fagentera\u002Fagently?style=flat-square)](https:\u002F\u002Fstar-history.com\u002F#agentera\u002Fagently)\r\n[![Twitter](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Furl\u002Fhttps\u002Ftwitter.com\u002FAgentlyTech.svg?style=social&label=Follow%20%40AgentlyTech)](https:\u002F\u002Fx.com\u002FAgentlyTech)\r\n\u003Ca href=\"https:\u002F\u002Fdoc.weixin.qq.com\u002Fforms\u002FAIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf\">\r\n\u003Cimg alt=\"WeChat\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWeChat%20Group-Apply-brightgreen?logo=wechat&style=flat-square\">\r\n\u003C\u002Fa>\r\n\r\n\u003Cp>\r\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fdiscussions\u002Fcategories\u002Fgeneral\">\r\n    \u003Cimg alt=\"Discussions\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAgently%20General%20Discussions-JOIN-brightgreen.svg?style=for-the-badge\" \u002F>\r\n  \u003C\u002Fa>\r\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fdiscussions\u002Fcategories\u002Fcontribute-to-agently-4\">\r\n    \u003Cimg alt=\"Contribute\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FContribute%20to%20Agently%204%20-Join-blueviolet.svg?style=for-the-badge\">\r\n  \u003C\u002Fa>\r\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fissues\">\r\n    \u003Cimg alt=\"Issues\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReport%20Issues-Report-red.svg?style=for-the-badge\">\r\n  \u003C\u002Fa>\r\n\u003C\u002Fp>\r\n\r\n## Getting Started\r\n\r\nAgently is a Python-based framework for building GenAI applications. You can install it via pip and import features using `from agently import Agently`.\r\n\r\nInstall via pip:\r\n\r\n```shell\r\npip install agently==4.0.0b1\r\n```\r\n\r\n⚠️: Version specifier is required during beta testing.\r\n\r\nClone the repository and install locally:\r\n\r\n```shell\r\ngit clone git@github.com:AgentEra\u002FAgently.git\r\ncd Agently\r\npip install -e .\r\n```\r\n\r\n## What is Agently?\r\n\r\nAgently aims to provide an intuitive, efficient, and developer-friendly framework for GenAI application development. By deeply understanding the runtime control needs of model outputs, Agently bridges the gap between large language models and real-world applications.\r\n\r\nAgently abstracts away the complexities of:\r\n- Varying model parameters\r\n- Output formatting\r\n- Communication between engineering modules and GenAI logic\r\n\r\n...while giving developers full control over business logic and integration with existing systems.\r\n\r\nWe believe GenAI is not a generational replacement for current systems but a powerful extension. Engineers and tools are key to turning GenAI's possibilities into reality.\r\n\r\nOur mission is to build the best developer experience (DX) for GenAI application engineers.\r\n\r\n## Core Features Overview\r\n\r\n### Structured and Streamed Output Control for LLMs\r\n\r\nAgently allows you to control and consume model outputs using a developer-centric pattern:\r\n\r\n```python\r\nfrom agently import Agently\r\n\r\nagent = Agently.create_agent()\r\n\r\n(\r\n    agent\r\n        .input(\"What time is it now?\", always=True)\r\n        .info({\r\n            \"default_timezone\": \"\",\r\n            \"tool_list\": [{\r\n                \"name\": \"get_current_time\",\r\n                \"desc\": \"Get current time by time zone provided\",\r\n                \"kwargs\": {\r\n                    \"timezone_str\": (str, \"time zone string in ZoneInfo()\"),\r\n                },\r\n            }]\r\n        })\r\n        .output({\r\n            \"first_time_response\": (str, ),\r\n            \"tool_using_judgement\": (bool, ),\r\n            \"tool_using_command\": (\r\n                {\r\n                    \"name\": (str, \"Decide which tool to use by tool name:{tool_list.[].name}\"),\r\n                    \"kwargs\": (dict, \"According {tool_list.[].args} to output kwargs dictionary\"),\r\n                },\r\n                \"If {tool_using_judgement}==False, just output {}\",\r\n            ),\r\n        })\r\n)\r\n```\r\n\r\nThen, consume the model response:\r\n\r\n```python\r\nresponse = agent.get_response()\r\n\r\n# Get raw output\r\nresponse_text = response.get_text()\r\n\r\n# Get parsed structured result\r\nresponse_dict = response.get_result()\r\n\r\n# Streamed output\r\nfor delta in response.get_generator(content=\"delta\"):\r\n    print(delta, end=\"\", flush=True)\r\n```\r\n\r\nOr use the instant parsing mode:\r\n\r\n```python\r\ninstant_response_generator = response.get_generator(content=\"instant\")\r\n\r\nuse_tool = False\r\n\r\nfor instant_message in instant_response_generator:\r\n    if instant_message.path == \"first_time_response\":\r\n        if instant_message.delta is not None:\r\n            print(instant_message.delta, end=\"\", flush=True)\r\n    elif instant_message.path == \"tool_using_judgement\":\r\n        use_tool = instant_message.value\r\n        print()\r\n        if ","2025-07-19T05:58:41",{"id":207,"version":208,"summary_zh":209,"released_at":210},258335,"v3.5.1.2","Maybe the final version of Agently v3.x\r\n\r\n- Fix the warning from IDE when try to use methods on agent instance like `agent.input()`\r\n\r\nWe're preparing brand new version of Agently v4 for better development experience!","2025-06-25T09:33:55",{"id":212,"version":213,"summary_zh":214,"released_at":215},258336,"v3.5.1.0","## What's Changed\r\n* new example: MCP support by @Maplemx in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F209\r\n* fix: get_generator break case by @gouzil in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F211\r\n* fix: load json `think` or `thinking` condition by @gouzil in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F212\r\n* updates by @Maplemx in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F213\r\n* Keepup by @Maplemx in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F214\r\n* update by @Maplemx in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F216\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fcompare\u002Fv3.5.0.1...v3.5.1.0","2025-04-18T09:52:23",{"id":217,"version":218,"summary_zh":219,"released_at":220},258337,"v3.5.0.1","Optimize MCP tool using results and fixed a bug when using MCP configs","2025-04-06T08:31:47",{"id":222,"version":223,"summary_zh":224,"released_at":225},258338,"v3.5.0.0","- New feature: FastServer( only support fast transform agent and workflow into MCP server right now )\r\n- Rewrite Tool Using logic, support use MCP server as tools\r\n- Optimize several core codes\r\n- Remove old version WebSocket server codes, lite the package dependencies. (WebSocket will be supported in future version of FastServer)\r\n- Add lexer(realtime json fixer) to fix json before llm fixing.\r\n\r\n## What's Changed\r\n* Dev by @Maplemx in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F203\r\n* v3.5.0.0 by @Maplemx in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F204\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fcompare\u002Fv3.4.2.7...v3.5.0.0","2025-03-30T07:07:51",{"id":227,"version":228,"summary_zh":229,"released_at":230},258339,"v3.4.2.7","## What's Changed\r\n* new example: planning loop and attach workflow to agent by @Maplemx in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F198\r\n* fest: AWS Bedrock by @cnbeining in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F197\r\n* fix: remove `ResponseGenerator` init create `Stage` by @gouzil in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F202\r\n\r\n## New Contributors\r\n* @gouzil made their first contribution in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F202\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fcompare\u002Fv3.4.2.6...v3.4.2.7","2025-03-21T05:58:25",{"id":232,"version":233,"summary_zh":234,"released_at":235},258340,"v3.4.2.6","[Core] Feat: Realtime reasoning console output in debug mode;\r\n[Core] Update: Add setting key 'current_client' which is the same as 'current_model' but more accurate;\r\n[Core] Update: Clean request plugins' dependencies, move them from package initial stage to plugin class initial stage;\r\n[Request: OAIClient] Update: Support some APIs those put reasoning content both in key 'reasoning_content' and key 'content'.\r\n[Request: Qianfan] Bug fixed: Fixed qianfan package import error.\r\n\r\n## What's Changed\r\n* v3.4.2.4 by @Maplemx in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F195\r\n* v3.2.4.6 by @Maplemx in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F196\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fcompare\u002Fv3.4.2.1...v3.4.2.6","2025-02-19T09:14:25",{"id":237,"version":238,"summary_zh":239,"released_at":240},258341,"v3.4.2.3","> ⚠️ Notice: version --> 3.4.2.3 because poetry can not support uppercase package name so we have to republish with twine.\r\n\r\n1. Optimize reasoning content handling code\r\n2. Add DeepSeek Reasoner(R1) requesting example\r\n3. Clean dependencies\r\n4. Add poetry to manage dependencies\r\n\r\n## What's Changed\r\n* v.3.4.2.1 by @Maplemx in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F193\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fcompare\u002Fv3.4.2.0...v3.4.2.1","2025-02-11T15:45:36",{"id":242,"version":243,"summary_zh":244,"released_at":245},258342,"v3.4.2.0","**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fcompare\u002Fv3.4.1.3...v3.4.2.0\r\n\r\n## What's Changed\r\n* update: add support of DeepSeek Reasoner model official API data format by @Maplemx in https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fpull\u002F192\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fcompare\u002Fv3.4.1.6...v3.4.2.0","2025-02-11T11:59:29",{"id":247,"version":248,"summary_zh":249,"released_at":250},258343,"v3.4.1.6","1. [OAIClient] Optimize the handle process of messages those without key 'content'.\r\n2. [ResponseGenerator] Remove dependency agently-stage, reuse old built-in version and optimize Response Generator code to prevent main thread will not shutdown at the end.\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAgentEra\u002FAgently\u002Fcompare\u002Fv3.4.1.3...v3.4.1.6","2025-02-08T08:01:07"]