ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Context-Engineering 工具集成推理指南:Function Calling 基础、Schema 设计与编排实战

Context-Engineering 工具集成推理指南:Function Calling 基础、Schema 设计与编排实战 文档教程知识库人工智能提示工程【免费下载链接】Context-EngineeringContext engineering is the delicate art and science of filling the context window with just the right information for the next step. — Andrej Karpathy. A frontier, first-principles handbook inspired by Karpathy and 3Blue1Brown for moving beyond prompt engineering to the wider discipline of context design, orchestration, and optimization.项目地址https://gitcode.com/gh_mirrors/co/Context-Engineering点击查看免费下载本篇指南以 Context-Engineering 课程体系中的 00_function_calling.md 为核心骨架讲解在 Software 3.0 范式下如何让 LLM 通过结构化函数调用Function Calling获得外部工具能力。文章完整覆盖函数签名与 Schema 定义、同步/异步/并行/顺序四种调用类型、注册表与参数校验等实现策略、组合与条件执行等高级模式、安全访问控制与评估指标并结合作品仓库中的 Schema 模板与控制循环源码提供可落地的实战方案。读完本篇你将能够独立设计函数接口、实现安全可重试的函数调用引擎并为多步工具集成推理打下基础。一、引言用英语编程 LLM 的新范式Software 3.0 范式LLMs are a new kind of computer, and you program themin English — Andrej KarpathyFunction Calling 代表了智能系统架构方式的根本转变。与其期望 LLM 仅凭纯推理解决所有问题我们通过为其提供对外部工具、函数和系统的结构化访问来扩展其能力。这创造了一种新范式LLM 成为编排智能orchestrating intelligence能够动态选择、组合并执行专用工具来解决复杂问题。在 Context-Engineering 课程体系中该主题位于 06_tool_integrated_reasoning 模块的开篇后续的 01_tool_integration.md、02_agent_environment.md、03_reasoning_frameworks.md 均建立在本篇基础之上形成函数调用 → 工具编排 → 环境交互 → 推理框架的渐进式演进路径。二、Function Calling 的数学基础2.1 面向工具集成的上下文组装基于课程的奠基框架C A(c₁, c₂, ..., cₙ)参见 01_context_formalization.mdFunction Calling 引入了专门的上下文组件C_tools A(c_instr, c_tools, c_state, c_query, c_results)其中各组件含义如下组件含义作用c_instr系统指令说明工具的使用规则与输出格式约定c_tools函数定义与签名以 Schema 形式描述可用函数的能力边界c_state当前执行状态记录对话轮次、已执行步骤等运行期上下文c_query用户当前请求本轮待解决的目标c_results历史函数调用结果供后续调用与最终回答引用这一形式化表达与仓库中的 schema_template.json 高度吻合该模板将上下文拆分为systemContext、taskContext、interactionHistory、protocolShell等分区其中protocolShell.process即对应函数调用中的步骤化流程定义interactionHistory对应c_results/c_state的持久化载体。2.2 函数调用序列的优化问题函数调用的优化问题是寻找在最大化任务完成度、最小化资源消耗前提下的最优函数调用序列 F*F* arg max_{F} Σ(Reward(f_i) × Efficiency(f_i)) - Cost(f_i)并需满足以下约束资源约束Σ Cost(f_i) ≤ Budget总调用成本不得超过预算安全约束Safe(f_i) True ∀ f_i每个函数都必须通过安全检查依赖约束Dependencies(f_i) ⊆ Completed_functions被调函数的依赖必须已经完成。该优化模型与 02_optimization_theory.md 中的通用目标函数一脉相承是后续 01_tool_integration.md 中工具集成优化含依赖 DAG 约束、时间约束的简化前身。三、核心概念3.1 函数签名与 Schema函数调用要求 LLM 能够理解并可靠使用精确的接口定义。接口定义通常采用 JSON Schema 形式示例如下# Example: Mathematical calculation function { name: calculate, description: Perform mathematical calculations with step-by-step reasoning, parameters: { type: object, properties: { expression: { type: string, description: Mathematical expression to evaluate }, show_steps: { type: boolean, description: Whether to show intermediate calculation steps, default: True } }, required: [expression] } }在设计 Schema 时仓库 06_schema_design.py 中的JSONSchema.validate()给出了可复用的校验实现它调用jsonschema.validate(instanceparameters, schema...)并在失败时记录错误路径与统计信息validation_stats[error_types][error_path]。这意味着函数参数在交给执行器之前可以先经过同样的 Schema 校验管线从源头拦截格式错误的调用。3.2 函数调用流程一次完整的函数调用遵循意图分析 → 函数选择 → 参数映射 → 参数抽取 → 函数执行 → 结果处理 → 响应生成的流程┌─────────────────┐ │ User Query │ └─────────┬───────┘ │ ▼ ┌─────────────────┐ ┌──────────────────┐ │ Intent Analysis │────▶│ Function Selection│ └─────────────────┘ └─────────┬────────┘ │ ▼ ┌─────────────────┐ ┌──────────────────┐ │Parameter Extract│◀────│ Parameter Mapping│ └─────────┬───────┘ └──────────────────┘ │ ▼ ┌─────────────────┐ ┌──────────────────┐ │Function Execute │────▶│ Result Process │ └─────────────────┘ └─────────┬────────┘ │ ▼ ┌──────────────────┐ │ Response Generate│ └──────────────────┘其中意图分析与函数选择环节正是仓库 20_templates/control_loop.py 中ControlLoop.run()所封装的多轮推理循环每轮先由模型产出动作/响应再经EvaluationFunction如SimpleKeywordEvaluator、PatternMatchEvaluator评估是否成功未达标则把反馈追加进ContextManager的历史并进入下一轮迭代直至成功或达到max_iterations上限。3.3 函数调用类型根据执行语义函数调用可分为四类同步调用Synchronous Calls直接执行函数并立即返回结果适合计算、数据转换、简单查询等短耗时操作。异步调用Asynchronous Calls非阻塞执行适用于长耗时操作适合网络请求、文件处理、复杂计算。并行调用Parallel Calls多个相互独立的函数同时执行适合独立操作、从多个数据源采集信息。后续 01_tool_integration.md 中的parallel_analysis()即用asyncio.gather(*tasks)并发执行多个搜索工具。顺序调用Sequential Calls链式执行前一函数的输出作为后一函数的输入适合多步工作流、复杂推理链。四、函数定义模式4.1 基础函数模式基础函数定义包含name、description、parameters三要素{ name: function_name, description: Clear, specific description of what the function does, parameters: { type: object, properties: { param1: { type: string|number|boolean|array|object, description: Parameter description, enum: [optional, allowed, values], default: optional_default_value } }, required: [list, of, required, parameters] } }要点说明description应足够具体它是 LLM 选择函数时的主要依据enum用于限定参数的可选值集合可显著提升参数生成精度default为可选参数的兜底值required列表外的属性均可省略。4.2 复杂函数模式当函数需要结构化嵌套参数时可组合array、object与pattern等约束。以下是一个多源研究查询函数的完整定义{ name: research_query, description: Perform structured research using multiple sources, parameters: { type: object, properties: { query: { type: string, description: Research question or topic }, sources: { type: array, items: { type: string, enum: [web, academic, news, books, patents] }, description: Information sources to use }, max_results: { type: integer, minimum: 1, maximum: 50, default: 10, description: Maximum number of results per source }, filters: { type: object, properties: { date_range: { type: string, pattern: ^\\d{4}-\\d{2}-\\d{2}:\\d{4}-\\d{2}-\\d{2}$, description: Date range in format YYYY-MM-DD:YYYY-MM-DD }, language: { type: string, default: en } } } }, required: [query, sources] } }该模式演示了数值范围约束minimum/maximum、正则模式约束pattern与嵌套对象filters的组合用法。仓库 schema_template.json 同样体现了这种分区嵌套思想——它将系统上下文、领域知识、用户上下文、任务上下文、交互历史、协议壳等分层组织函数 Schema 可作为其中的protocolShell.process步骤或独立工具契约存在。五、实现策略5.1 函数注册表模式Function Registry Pattern集中式注册表负责管理所有可用函数是单一事实来源class FunctionRegistry: def __init__(self): self.functions {} self.categories {} def register(self, func, categoryNone, **metadata): Register a function with metadata self.functions[func.__name__] { function: func, signature: self._extract_signature(func), category: category, metadata: metadata } def get_available_functions(self, categoryNone): Get functions available for the current context if category: return {name: info for name, info in self.functions.items() if info[category] category} return self.functions def call(self, function_name, **kwargs): Execute a registered function safely if function_name not in self.functions: raise ValueError(fFunction {function_name} not found) func_info self.functions[function_name] return func_infofunction设计要点register()同时保存可执行对象、签名与元数据便于后续做上下文感知筛选category支持按类别暴露当前上下文可用函数子集控制注入提示词的函数数量对应后文渐进式披露原则call()在未注册函数时立即抛错避免静默失败。5.2 参数校验策略在真正执行前先用 JSON Schema 校验 LLM 生成的参数是防止格式错误与越界值的关键防线from jsonschema import validate, ValidationError def validate_parameters(function_schema, parameters): Validate function parameters against schema try: validate(instanceparameters, schemafunction_schema[parameters]) return True, None except ValidationError as e: return False, str(e) def safe_function_call(function_name, parameters, registry): Safely execute function with validation func_info registry.get_function(function_name) # Validate parameters is_valid, error validate_parameters(func_info[schema], parameters) if not is_valid: return {error: fParameter validation failed: {error}} try: result registry.call(function_name, **parameters) return {success: True, result: result} except Exception as e: return {error: fFunction execution failed: {str(e)}}这与仓库 06_schema_design.py 中JSONSchema.validate()的实现思路一致该校验器同样基于jsonschema库并额外维护validation_stats成功/失败计数与错误类型分布可用于度量参数生成的长期质量其SchemaContext.query()还在校验失败时把错误信息回填到提示词中重试max_retries默认 3 次这正是校验失败 → 反馈 → 重试闭环的仓库级佐证。5.3 上下文感知的函数选择仅凭描述相似度选择函数是不够的还需要结合当前对话上下文打分排序def select_optimal_functions(query, available_functions, context): Select the most appropriate functions for a given query # Analyze query intent intent analyze_intent(query) # Score functions based on relevance scored_functions [] for func_name, func_info in available_functions.items(): relevance_score calculate_relevance( intent, func_info[description], func_info[category] ) # Consider context constraints context_score evaluate_context_fit(func_info, context) total_score relevance_score * context_score scored_functions.append((func_name, total_score)) # Return top-ranked functions return sorted(scored_functions, keylambda x: x[1], reverseTrue)其中relevance_score度量意图与函数描述的匹配度context_score度量函数在当前状态下的适配度例如已完成的步骤、可用权限、资源限制。两者相乘后排序仅把 Top-N 函数注入提示词可显著降低函数定义对上下文窗口的占用——这与 token_budgeting.md 讨论的上下文预算管理直接相关。六、高级函数调用模式6.1 函数组合Function Composition将多个函数编排为数据流管道前一函数的输出注入后一函数的输入{ name: composed_research_analysis, description: Compose multiple functions for comprehensive analysis, workflow: [ { function: research_query, parameters: {query: {input.topic}, sources: [web, academic]}, output_name: research_results }, { function: summarize_content, parameters: {content: {research_results.data}}, output_name: summary }, { function: extract_insights, parameters: {summary: {summary.text}}, output_name: insights } ] }{input.topic}、{research_results.data}等占位符即输出馈入输入的链式绑定。这一模式在 01_tool_integration.md 中被进一步抽象为ToolPipeline线性流水线与DAGToolOrchestrator带依赖拓扑排序的编排器后者通过 Kahn 算法计算执行顺序保证依赖约束得到满足。6.2 条件函数执行根据中间结果动态决定是否执行某个函数{ name: adaptive_problem_solving, description: Conditionally execute functions based on intermediate results, workflow: [ { function: analyze_problem, parameters: {problem: {input.problem}}, output_name: analysis }, { condition: analysis.complexity 0.7, function: break_down_problem, parameters: {problem: {input.problem}, analysis: {analysis}}, output_name: subproblems }, { condition: analysis.requires_research, function: research_query, parameters: {query: {analysis.research_queries}}, output_name: research_data } ] }condition字段对前置输出做谓词求值只有满足条件的分支才会被展开执行。这种分析 → 分支 → 执行的控制流是后续 03_reasoning_frameworks.md 中原子推理步骤 → 分子推理链的雏形也是实现自适应问题求解器的基本构件。6.3 错误处理与重试逻辑健壮的执行引擎必须区分临时错误与永久错误并针对临时错误采用指数退避重试def robust_function_call(function_name, parameters, max_retries3): Execute function with retry logic and error handling for attempt in range(max_retries): try: result execute_function(function_name, parameters) # Validate result if validate_result(result): return {success: True, result: result, attempts: attempt 1} else: # Invalid result, try with adjusted parameters parameters adjust_parameters(parameters, result) except TemporaryError as e: if attempt max_retries - 1: time.sleep(2 ** attempt) # Exponential backoff continue else: return {error: fMax retries exceeded: {str(e)}} except PermanentError as e: return {error: fPermanent error: {str(e)}} return {error: Max retries exceeded without success}该实现的核心价值结果校验validate_result()确认结果语义正确而非仅不抛异常参数调整无效结果时基于结果修正参数后重试自适应重试退避策略2 ** attempt指数退避避免对不稳定服务造成瞬时冲击错误分类TemporaryError可重试PermanentError立即返回避免无谓消耗。此模式与 01_tool_integration.md 最佳实践中的Retry with Backoff和Fallback Tools策略一脉相承。七、面向 Function Calling 的提示词模板7.1 基础函数调用模板将函数定义注入系统提示词并约定调用响应格式FUNCTION_CALLING_TEMPLATE You have access to the following functions: {function_definitions} When you need to use a function, respond with a function call in this format: function_call { function: function_name, parameters: { param1: value1, param2: value2 } } Current task: {user_query} Think step by step about what functions you need to use and in what order. 要点{function_definitions}由注册表按上下文裁剪后的函数 Schema 渲染而来以明确的代码块标记function_call界定调用输出便于解析器精确抽取末尾Think step by step引导模型先规划再调用与思维链Chain-of-Thought提示一致参见 01_prompt_engineering.md。7.2 多步推理模板面向复杂任务要求模型分析 → 选择 → 规划 → 执行 → 综合MULTI_STEP_FUNCTION_TEMPLATE You are a reasoning agent with access to specialized tools. For complex tasks, break them down into steps and use the appropriate functions for each step. Available functions: {function_definitions} Task: {user_query} Approach this systematically: 1. Analyze what needs to be done 2. Identify which functions are needed 3. Plan the sequence of function calls 4. Execute the plan step by step 5. Synthesize the results Begin your reasoning: 该模板的五步流程与 20_templates/control_loop.py 中ControlLoop的迭代语义吻合max_iterations控制最大步数ContextManager.add_to_history()保留每步中间状态stop_on_success/success_threshold决定何时收敛。7.3 错误恢复模板当函数调用失败时把错误信息连同替代方案一起回传给模型引导其分析并纠错ERROR_RECOVERY_TEMPLATE The previous function call failed with error: {error_message} Function that failed: {failed_function} Parameters used: {failed_parameters} Available alternatives: {alternative_functions} Please: 1. Analyze why the function call might have failed 2. Suggest an alternative approach 3. Retry with corrected parameters or use a different function Continue working toward the goal: {original_goal} 该模板对应 06_schema_design.py 中SchemaContext.query()的失败反馈机制当响应未通过 Schema 校验时代码将Error: {error_message}追加到原提示词末尾并要求重新生成直到有效或达到max_retries——两者共享同一错误即反馈的自我修正哲学。八、安全与合规考量8.1 函数访问控制在注册表之上叠加访问策略与审计日志class SecureFunctionRegistry(FunctionRegistry): def __init__(self): super().__init__() self.access_policies {} self.audit_log [] def set_access_policy(self, function_name, policy): Set access control policy for a function self.access_policies[function_name] policy def call(self, function_name, contextNone, **kwargs): Execute function with security checks # Check access permissions if not self._check_access(function_name, context): raise PermissionError(fAccess denied to {function_name}) # Log the function call self._log_call(function_name, kwargs, context) # Execute with resource limits return self._execute_with_limits(function_name, **kwargs)安全三要素鉴权_check_access依据策略与上下文判定、审计_log_call记录调用者、参数与上下文形成可追溯日志、限流限资源_execute_with_limits。这与课程 00_COURSE/README.md 中规划的安全模块safety/execution_sandboxing.py、safety/permission_systems.py的目标一致所有外部能力调用必须可授权、可审计、可限制。8.2 输入净化防止提示词注入与参数注入攻击def sanitize_function_input(parameters): Sanitize function parameters to prevent injection attacks sanitized {} for key, value in parameters.items(): if isinstance(value, str): # Remove potentially dangerous characters sanitized[key] re.sub(r[\;], , value) elif isinstance(value, dict): sanitized[key] sanitize_function_input(value) elif isinstance(value, list): sanitized[key] [sanitize_function_input(item) if isinstance(item, dict) else item for item in value] else: sanitized[key] value return sanitized该函数递归处理嵌套的 dict/list统一剔除字符串中的引号、尖括号与分号等危险字符防止参数内容逃逸出预期的上下文边界。8.3 资源限制对执行时间与内存设定硬性上限防止失控调用拖垮宿主进程import signal from contextlib import contextmanager contextmanager def timeout(seconds): Context manager for function timeout def timeout_handler(signum, frame): raise TimeoutError(fFunction execution timed out after {seconds} seconds) old_handler signal.signal(signal.SIGALRM, timeout_handler) signal.alarm(seconds) try: yield finally: signal.alarm(0) signal.signal(signal.SIGALRM, old_handler) def execute_with_resource_limits(function, max_time30, max_memoryNone): Execute function with resource constraints with timeout(max_time): if max_memory: # Set memory limit (implementation depends on platform) resource.setrlimit(resource.RLIMIT_AS, (max_memory, max_memory)) return function()说明signal.SIGALRMsignal.alarm()实现超时中断finally中必须恢复原处理器并清除闹钟resource.setrlimit(resource.RLIMIT_AS, ...)限制地址空间大小具体可用值因平台而异需按操作系统调整该模式可进一步包装为沙箱 白名单执行环境见课程规划的safety/模块方向。九、最佳实践与设计准则9.1 函数设计原则单一职责Single Responsibility每个函数只做一件事描述清晰清晰接口Clear Interfaces参数与返回值边界明确类型完备优雅错误处理Error Handling函数内部不吞异常向上传递结构化错误文档完备Documentationdescription是 LLM 理解函数的第一信息来源必须详尽幂等性Idempotency在可能的情况下设计成可安全重试避免重试造成副作用叠加。9.2 函数调用策略渐进式披露Progressive Disclosure先暴露简单函数随对话推进按需追加复杂函数控制上下文占用上下文感知Context Awareness选择函数时考虑会话状态而非仅凭单轮查询结果校验Result Validation继续下一步前验证函数输出对应 6.3 的validate_result错误恢复Error Recovery为每个关键能力准备替代函数与重试路径对应 7.3 的恢复模板性能监控Performance Monitoring跟踪每次调用的延迟、成功率与 token 消耗为后续评估提供数据。9.3 集成模式注册表模式Registry Pattern集中式函数管理本指南 5.1 的实现工厂模式Factory Pattern依据上下文动态创建函数实例责任链模式Chain of Responsibility顺序执行、逐级传递的调用链观察者模式Observer Pattern调用监控与日志订阅策略模式Strategy Pattern可插拔的执行策略如同步/异步/并行策略互换。十、评估与测试函数调用质量指标用测试用例集量化调用系统的五项核心指标def evaluate_function_calling(test_cases): Evaluate function calling performance metrics { success_rate: 0, parameter_accuracy: 0, function_selection_accuracy: 0, error_recovery_rate: 0, efficiency_score: 0 } for test_case in test_cases: result execute_test_case(test_case) # Update metrics based on result metrics[success_rate] result.success metrics[parameter_accuracy] result.parameter_accuracy metrics[function_selection_accuracy] result.selection_accuracy # Normalize metrics total_tests len(test_cases) for key in metrics: metrics[key] / total_tests return metrics指标含义度量方式success_rate整体成功率调用完整执行且结果通过校验的比例parameter_accuracy参数生成准确率生成参数与真实 Schema 约束的吻合程度function_selection_accuracy函数选择准确率选出函数是否与标注的期望函数一致error_recovery_rate错误恢复率失败后经重试/替代方案最终成功的比例efficiency_score效率得分单位成本调用次数/token下的有效产出该评估思路可与 09_evaluation_methodologies 模块的评估框架衔接组件级评估关注单函数质量系统级评估关注多函数编排的整体效果。仓库 06_schema_design.py 中SchemaContext.get_summary_metrics()含validation_success_rate、avg_latency_per_query、overall_efficiency提供了可直接迁移的指标聚合实现。十一、面向后续模块的延伸Function Calling 只是工具集成推理的起点在 06_tool_integrated_reasoning 模块内它向上逐级演进01_tool_integration.md把单个函数升级为工具生态引入流水线架构ToolPipeline、DAG 编排DAGToolOrchestrator与智能体式工具选择ToolAgent其约束从依赖已满足扩展为依赖构成合法 DAG 时间与质量约束02_agent_environment.md从调用工具演进为栖息于环境引入感知perception、反馈feedback、适应adaptation等上下文组件函数调用成为智能体在动态环境中的动作原语03_reasoning_frameworks.md把工具视为思维的外延形成问题表示 → 知识 → 工具 → 策略 → 记忆 → 反思的完整认知上下文组装函数调用序列在此成为分布式推理链的神经元。十二、未来方向12.1 自适应函数发现LLM 主动发现并学习新函数通过工具目录或 API 文档自动进行函数组合与优化调用策略随任务类型自我改进。12.2 多模态函数集成支持文本、图像、音频、视频的统一函数接口跨模态推理与函数链式调用异构工具类型的统一抽象层。12.3 协作式函数执行多智能体间的函数调用协调分布式函数执行与结果汇聚基于共识的函数选择机制。这些方向与 07_multi_agent_systems 的通信协议与编排机制形成呼应读者可沿课程路径继续深入。十三、结语Function Calling 基础为 Software 3.0 范式下的工具集成推理奠定了根基。通过为 LLM 提供对外部能力的结构化访问我们将其从孤立的推理引擎转变为能够解决复杂现实问题的编排智能。成功的函数调用体系取决于五件事清晰接口设计Clear Interface Design定义良好的函数签名与 Schema是可靠性的前提健壮执行Robust Execution安全的执行环境、参数校验与完善的错误处理智能选择Intelligent Selection上下文感知的函数选择与组合安全意识Security Awareness访问控制、输入净化与资源限制缺一不可持续改进Continuous Improvement监控、评估与优化形成闭环。在继续深入工具集成、智能体-环境交互与推理框架之前这些基础为构建复杂的工具增强型智能系统提供了稳定地基。若要进一步实践建议结合 schema_template.json 设计自己的函数契约、参考 06_schema_design.py 实现参数校验、并借助 control_loop.py 搭起调用-评估-重试的主循环。这一基础使 LLM 得以超越其训练边界通过结构化工具集成成为解决复杂、动态问题的真正伙伴。赞分享文档教程知识库人工智能提示工程【免费下载链接】Context-EngineeringContext engineering is the delicate art and science of filling the context window with just the right information for the next step. — Andrej Karpathy. A frontier, first-principles handbook inspired by Karpathy and 3Blue1Brown for moving beyond prompt engineering to the wider discipline of context design, orchestration, and optimization.项目地址https://gitcode.com/gh_mirrors/co/Context-Engineering点击查看免费下载相关推荐Qwen3 Function Calling 实战指南基于 Qwen-Agent 与 vLLM 的工具调用推理全流程与 Hermes 模板原理Qwen3 Function Calling 实战指南基于 Qwen Agent 与 vLLM 的工具调用推理全流程与 Hermes 模板原理 本篇技术指南以人工智能大模型Qwen模型评测示例工程本地部署教程Context-Engineering 编排毕业设计指南从组件集成到自适应涌现智能的完整实战Context Engineering 编排毕业设计指南从组件集成到自适应涌现智能的完整实战 导读 本指南基于 Context Engineering 仓库文档教程知识库人工智能提示工程多智能体编排实战基于 ToolLoopAgent 的 Orchestrator Agent 设计与实现Agent-Skills-for-Context-Engineering多智能体编排实战基于 ToolLoopAgent 的 Orchestrator Agent 设计与实现Agent Skills for Context En人工智能AI 技能提示工程AI 评测上一篇TorchTitan 稳定版发布全流程解析从 RC 验证到 PyPI 上线的八步发布工程下一篇免费在线GPX编辑器终极指南3分钟学会专业级轨迹编辑创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表