恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

AI大模型应用开发三大核心挑战:从Demo到上线,如何让模型稳定、懂业务、不烧钱

  • 首页
  • 资讯中心
  • /
  • AI大模型应用开发三大核心挑战:从Demo到上线,如何让模型稳定、懂业务、不烧钱

相关资讯

技术博客选题如何避开敏感领域 2026/10/16 15:03:24
Deepseek润色指令:从模板库到质控清单的进阶指南 2026/10/16 14:58:24
深度卷积神经网络图像去噪:残差学习与PyTorch工程实践 2026/10/16 14:58:24

最新资讯

DeepSeek-R1提示词优化指南:从传统模型迁移的避坑与模板实战
SMA射频接口HFSS仿真全流程:从建模到S参数提取与公差分析
理解多模态预训练模型BLIP:从CLS、Encode、Decode三个关键动作入手
弱监督音素预训练:低资源语言语音识别的数据困境与出路
MAMA注意力机制:用动量自适应内存让Transformer记住长期历史
用Python lxml从零实现WSDL解析器:接口清单生成与SOAP服务对接指南

今日推荐

Java八种基本类型深度解析:从内存布局到实战选型
基础:常用快捷键——IDEA、VS Code、PyCharm 与 Linux 终端效率速查
解决ultraedit下verilog .v文件中文注释乱码:把编码配置改到TaoToken辅助排查

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

AI大模型应用开发三大核心挑战:从Demo到上线,如何让模型稳定、懂业务、不烧钱

发布时间:2026/10/16 15:03:24
AI大模型应用开发三大核心挑战:从Demo到上线,如何让模型稳定、懂业务、不烧钱 1. 大模型应用开发到底在做什么很多人第一次听到“AI大模型应用开发”这个词脑子里浮现的画面可能是调一个API、写几行提示词然后一个智能应用就跑起来了。我刚开始接触这块的时候也是这么想的结果真正上手做了两三个项目之后才发现事情远没有这么简单。大模型应用开发的核心是把一个通用的、什么都能聊两句但什么都不精的模型通过工程手段变成一个在特定场景下稳定、可靠、能解决实际问题的产品。这个过程涉及的东西非常多提示词工程、上下文管理、检索增强、工具调用、输出约束、成本控制、效果评估每一个环节都有坑。这篇文章想聊的是从一个能跑通的Demo到一个能上线的应用中间到底卡在哪几个地方。我把过去一段时间踩过的坑和总结的经验整理出来归纳为三大核心挑战。不管你是刚入门想了解这个方向还是已经做了一段时间但总觉得效果不稳定相信都能从中找到一些共鸣。文章会尽量说人话少堆术语多讲实际操作中会遇到的问题和解决思路。先说清楚适用人群如果你是完全零基础连API怎么调都不知道那建议先花半天时间跑通一个最简单的对话Demo再来看这篇如果你已经能调通接口、写过一些提示词但做出来的东西总感觉“差口气”那这篇就是写给你的。我会从架构设计、核心细节、实操过程、问题排查四个维度展开每个部分都会给出可以直接参考的方案和参数。2. 第一大挑战让模型稳定输出你想要的东西2.1 为什么模型总是不听话大模型最让人头疼的地方在于它太“聪明”了。你让它总结一段文字它可能给你总结得天花乱坠加了一堆原文没有的推测你让它输出JSON格式它可能在JSON前面加一句“好的以下是结果”你让它扮演客服它可能聊着聊着就开始自由发挥。这些问题的根源在于大模型的本质是一个概率生成模型它根据上下文预测下一个token而不是按照你预设的逻辑去执行。我做过一个实验同一个提示词连续调用十次输出的格式和内容都会有细微差别。对于Demo来说这无所谓但对于需要对接下游系统的应用来说这就是灾难。比如你让模型从用户输入中提取订单号如果它偶尔多输出一个句号下游的数据库查询就会失败。所以第一大挑战的核心就是如何让一个概率模型表现出确定性的行为。解决这个问题的思路有几个方向。第一是提示词层面的约束通过明确的指令、格式示例、边界条件说明来缩小模型的输出空间。第二是工程层面的兜底比如输出解析失败时的重试机制、格式校验、异常处理。第三是模型层面的选择不同模型对指令的遵循能力差异很大有些模型天生就更“听话”。这三者需要配合使用单靠任何一个都不够。2.2 提示词工程的几个实用原则提示词工程这个词听起来很玄但实际操作中就是一些很朴素的道理。我总结了几条在实际项目中反复验证过的原则比那些花里胡哨的技巧管用得多。第一条原则是指令要具体到不能再具体。不要说“帮我分析这段文本的情感”而要说“判断以下文本的情感倾向只输出正面、负面、中性三个词中的一个不要输出任何其他内容”。把输出格式、取值范围、禁止事项都写清楚。我见过太多人写提示词像在跟人聊天觉得意思到了就行但模型不是人它不会揣摩你的意图。第二条原则是给例子比给描述更有效。如果你想要模型输出特定格式最好的办法是给两三个输入输出的示例。这叫少样本提示实测下来比纯文字描述的效果好很多。比如你要提取简历中的关键信息可以给一个示例输入和对应的JSON输出模型就会模仿这个格式。示例的选择也有讲究要覆盖边界情况比如字段缺失时怎么处理。第三条原则是把复杂任务拆成多个简单任务。不要试图用一个提示词让模型完成“读取文档、提取信息、判断类别、生成回复”这一整套流程。拆成四步每一步只做一件事每一步的输出作为下一步的输入。这样不仅每步的准确率更高而且出问题时容易定位是哪一步的问题。代价是调用次数增加成本会上升但稳定性提升带来的收益远大于成本。第四条原则是明确告诉模型它不应该做什么。模型有很强的“补全”倾向你不让它做的事它可能偏偏要做。所以在提示词里要明确写“不要编造原文没有的信息”“不要输出解释性文字”“如果无法确定请输出未知”。这些否定指令能挡掉很多常见问题。2.3 输出格式约束的实操方案让模型输出结构化数据是应用开发中最常见的需求。我试过几种方案各有优劣下面这张表是我在实际项目中的对比。方案实现方式优点缺点适用场景纯提示词约束在提示词中说明JSON格式并给示例实现简单无需额外依赖偶尔会多输出文字需要解析兜底对稳定性要求不高的场景JSON模式调用API时开启JSON输出参数输出基本稳定为合法JSON部分模型不支持字段内容仍可能出错支持该参数的模型函数调用定义函数签名让模型填充参数结构最稳定字段类型有保障灵活性稍差复杂嵌套结构支持有限需要严格结构化的场景输出后校验解析后用代码校验字段和类型能兜住大部分格式问题校验失败需要重试增加延迟所有场景都建议加上我现在的做法是组合使用优先用函数调用或JSON模式保证结构同时在提示词里给示例最后在代码里做校验和重试。重试的时候会把错误信息拼回提示词让模型知道上次哪里错了。实测下来经过一次重试格式问题的解决率能到95%以上。还有一个细节是温度参数的设置。温度控制输出的随机性做结构化提取时建议设成0或接近0的值让输出尽量确定。做创意类任务时再调高。这个参数很多人会忽略但它对稳定性的影响非常直接。2.4 提示词版本管理与迭代提示词不是写完就完了它需要像代码一样管理。我吃过亏改了一版提示词某个场景的效果好了但另一个场景的效果崩了因为没有记录之前的版本回滚都回不去。后来我养成了习惯每个提示词都放在独立的文件里用版本号管理每次修改都记录改了什么、为什么改、效果变化如何。具体做法可以很简单在项目里建一个prompts目录每个提示词一个文件文件名带上版本号比如extract_order_v1.txt、extract_order_v2.txt。代码里引用的时候指定版本。每次修改前先跑一遍回归测试集确认新版本在原有场景上没有退化。这个习惯看起来麻烦但能省掉很多半夜排查问题的时间。3. 第二大挑战让模型知道你的私有知识3.1 模型不知道你的业务数据大模型的训练数据来自公开语料它不知道你公司的产品文档、内部规范、客户数据。你问它“我们产品的退货政策是什么”它要么编一个要么说不知道。这是第二大挑战如何让模型基于你的私有知识来回答问题。最直接的想法是把知识塞进提示词里。比如把产品文档复制粘贴到提示词前面然后让模型基于文档回答。这个方法在小数据量下可行但有几个硬伤一是提示词长度有限制文档一长就塞不下二是每次调用都要传一遍成本高三是模型对长上下文中间部分的信息容易忽略这叫“迷失在中间”现象。所以实际项目中主流方案是检索增强生成简称RAG。思路很简单先把知识库切成小块存到向量数据库里用户提问时先从数据库里检索出最相关的几块拼到提示词里再让模型基于这几块内容回答。这样既解决了长度问题又降低了成本还能提高回答的准确性。3.2 文档切分的门道RAG的第一步是把文档切分成小块。这一步看起来简单但切得好不好直接决定最终效果。我见过很多项目效果差排查到最后发现是切分策略有问题。切分的基本单位是chunk每个chunk是一段文本。切分方式有几种按固定字数切、按段落切、按语义切。固定字数最简单但容易把一句话切断导致语义不完整。按段落切保留了自然边界但段落长度不均匀有的太长有的太短。按语义切效果最好但实现复杂需要额外的模型来判断语义边界。我现在的做法是折中优先按段落切如果段落超过一定长度比如500字再按句子切分保证每个chunk在200到500字之间。同时设置一定的重叠比如相邻chunk重叠50字避免边界信息丢失。这个参数需要根据文档类型调整技术文档可以短一些叙述性文档可以长一些。还有一个容易被忽略的点是元数据的保留。每个chunk除了文本内容还应该带上来源、标题、章节等信息。检索的时候可以结合元数据过滤比如只检索某个产品的文档。回答的时候也可以标注来源让用户知道信息出自哪里增加可信度。3.3 向量检索与关键词检索的配合向量检索的原理是把文本转成向量然后计算向量之间的相似度。它的优势是能理解语义比如用户问“怎么退款”能检索到“退货流程”的文档即使字面不匹配。但它也有短板对于专有名词、产品型号这类精确匹配的需求向量检索可能不如关键词检索。所以实际项目中我通常会把两种检索结合起来叫混合检索。具体做法是同时跑向量检索和关键词检索然后把两边的结果合并排序。合并的算法可以用倒数排名融合简单说就是看一个文档在两个检索结果中的排名排名越靠前得分越高最后按总分排序。这个方案听起来复杂但实现起来并不难很多向量数据库已经内置了混合检索的功能。实测下来混合检索的召回率比单一方式高不少尤其是对于包含专有名词的查询。3.4 检索结果的重排序检索出来的chunk不一定都是相关的有些可能只是沾边。如果直接把所有chunk都塞给模型不仅浪费上下文长度还可能干扰模型的判断。所以需要一步重排序把最相关的排在前面或者直接过滤掉不相关的。重排序可以用一个专门的模型来做叫重排序模型。它接收查询和候选文档输出相关性分数。这个模型通常比向量检索用的嵌入模型更精细但计算也更慢。所以一般流程是先用向量检索快速召回一批候选比如20个再用重排序模型精选出最相关的几个比如5个给模型。如果不想引入额外的模型也可以用一些简单的启发式规则比如按检索分数过滤、按时间排序、按来源可信度加权。效果不如重排序模型但胜在简单。3.5 RAG的常见坑与排查RAG系统上线后最常见的问题就是“答非所问”。用户问A模型答B。排查这类问题我一般按这个顺序走先看检索结果对不对如果检索出来的chunk本身就不相关那是检索环节的问题如果检索结果相关但模型没用好那是提示词或模型的问题。检索环节的问题又分几种一是知识库里根本没有相关信息那需要补充知识库二是切分不合理相关信息被切散了三是检索策略有问题比如只用了向量检索没加关键词检索。我遇到过一次用户问一个产品型号的功能向量检索完全找不到因为型号是字母数字组合向量模型对它不敏感。加上关键词检索后问题就解决了。模型环节的问题通常是提示词没说清楚。比如没有告诉模型“只基于提供的资料回答”模型就可能用自己的知识来补充。或者没有告诉模型“如果资料中没有相关信息就说不知道”模型就可能编造。这些都需要在提示词里明确写出来。4. 第三大挑战让模型用起来不烧钱4.1 成本到底花在哪里大模型应用的调用成本主要看两个指标输入token数和输出token数。输入是你传给模型的提示词输出是模型生成的内容。两者单价不同通常输出比输入贵。不同模型的单价差异很大同一个模型不同版本的价格也可能差好几倍。一个典型的RAG应用每次用户提问输入包括系统提示词、检索到的文档chunk、对话历史加起来可能有两三千token。输出可能几百token。如果每天有一千次提问一个月下来token消耗量相当可观。如果不做优化成本很容易失控。我做过一个测算一个中等规模的客服应用如果不做任何优化每月的模型调用费用可能达到数千元。优化之后可以降到几百元。差距主要来自几个方面提示词的精简、检索结果的控制、缓存的使用、模型的选择。4.2 提示词精简的实操技巧提示词越长成本越高而且效果不一定更好。我见过很多提示词写得像论文各种背景介绍、注意事项、示例加起来上千字。实际上很多内容是冗余的精简之后效果反而更稳定。精简的原则是只保留对输出有直接影响的内容。比如“你是一个专业的客服助手”这种角色设定如果对输出风格没有实质影响可以删掉。示例保留最典型的两个就够了不需要五六个。注意事项合并同类项不要重复说。还有一个技巧是把固定内容放在系统提示词里动态内容放在用户消息里。有些API对系统提示词有缓存机制重复调用时缓存部分不计费。这个能省不少钱尤其是系统提示词很长的时候。4.3 检索结果的数量控制RAG应用中检索回来的chunk数量直接影响输入token数。检索5个chunk和检索10个chunk输入长度可能差一倍。但检索更多chunk不一定效果更好因为无关信息会干扰模型。我的经验是对于大多数问答场景检索3到5个chunk就够了。如果重排序模型给出的分数普遍偏低说明知识库里可能没有相关内容这时候与其硬塞给模型不如直接回复“暂无相关信息”。这样既省钱又避免编造。chunk的大小也需要控制。太大的chunk包含无关信息多太小的chunk信息不完整。我一般把chunk控制在300字左右重叠50字。这个参数需要根据实际文档调整没有万能值。4.4 缓存策略的设计很多用户的问题其实是重复的或者高度相似。如果每次都要走一遍完整的检索和生成流程浪费很大。缓存可以把常见问题的答案存下来下次遇到直接返回。缓存的粒度可以分几层最粗的是完全匹配用户问题一模一样时直接返回缓存答案中间的是语义匹配用向量相似度判断问题是否相似相似度超过阈值就返回缓存最细的是检索结果缓存相同或相似的查询直接复用检索结果只重新生成答案。语义缓存的阈值设置很关键。设太高缓存命中率低省不了多少钱设太低可能把不同问题的答案混在一起影响准确性。我一般从0.95开始试根据实际效果调整。同时要设置缓存的过期时间避免知识更新后还在返回旧答案。4.5 模型选择的权衡不同模型的价格差异很大能力也有差异。不是所有场景都需要用最贵的模型。我的做法是把任务分级简单的分类、提取任务用便宜的小模型复杂的推理、生成任务用大模型。比如用户意图识别用一个小模型就够了准确率和大模型差不多但成本可能只有十分之一。而最终的回答生成可能需要大模型来保证质量。这种分级调用的架构能在保证效果的前提下显著降低成本。还有一个策略是流式输出。虽然流式输出不直接省钱但它能改善用户体验让用户感觉响应更快。对于长回答用户不用等全部生成完才能看到内容。这个在客服、助手类应用中很重要。5. 实操过程从零搭建一个可用的问答应用5.1 整体架构与技术选型说了这么多理论下面用一个实际项目来串一遍。假设我们要做一个内部知识库问答助手员工可以问关于公司制度、流程、产品的问题。整体架构分四层数据层、检索层、生成层、应用层。数据层负责文档的采集、切分、向量化、存储。文档来源可能是多种格式需要先统一转成纯文本。切分用前面说的策略向量化用嵌入模型存储用向量数据库。技术选型上嵌入模型可以选择开源的也可以选择API服务看成本和效果的权衡。向量数据库有本地方案和云服务小规模用本地的就够了。检索层负责接收用户查询执行混合检索和重排序返回最相关的chunk。生成层负责拼装提示词、调用大模型、解析输出。应用层负责对话管理、用户界面、日志记录。这个架构不复杂但每个环节都有细节需要注意。下面按实操顺序展开。5.2 文档处理与向量化第一步是把文档转成纯文本。如果是PDF可以用解析库提取文字但要注意表格和图片的处理。如果是网页可以用解析库提取正文。这一步的坑在于格式多样性不同来源的文档结构差异很大需要针对性地处理。转成文本后按前面说的策略切分。我一般写一个切分函数输入是文本输出是chunk列表。每个chunk是一个字典包含文本内容、来源、标题等元数据。切分的时候注意保留段落边界不要从句子中间切断。向量化就是调用嵌入模型把每个chunk的文本转成向量。嵌入模型的选择要考虑几个因素向量维度、支持的语言、推理速度、成本。维度越高表达能力越强但存储和计算成本也越高。中文场景要选对中文支持好的模型。向量存到数据库里同时把原始文本和元数据也存进去。检索的时候先查向量再根据ID取回文本。数据库的索引类型也会影响检索速度数据量大的时候需要建合适的索引。5.3 检索流程的实现细节用户提问后检索流程分几步走。首先把用户问题也向量化然后用这个向量去数据库里查最相似的N个chunk。同时用关键词检索查一遍两边的结果合并。合并的时候用倒数排名融合给每个文档算一个综合分数。合并后的结果再用重排序模型精排。重排序模型接收问题和文档对输出相关性分数。按分数排序后取前几个。如果最高分低于某个阈值说明知识库里可能没有相关内容这时候可以走兜底逻辑直接回复“暂无相关信息”。检索的时候还可以加一些过滤条件比如按文档类型、按时间范围、按权限。这些过滤条件可以在向量检索时作为元数据过滤也可以在重排序后过滤。元数据过滤的效率更高但需要数据库支持。5.4 提示词模板的设计提示词模板是生成层的核心。我一般把模板分成几部分角色说明、任务描述、参考资料、输出格式、边界条件。角色说明一句话带过任务描述说清楚要做什么参考资料就是检索到的chunk输出格式给示例边界条件说明什么情况下不回答。模板里的变量用占位符表示运行时替换成实际内容。比如{context}放检索结果{question}放用户问题。替换的时候注意转义避免用户输入的内容破坏模板结构。输出格式我一般要求模型返回JSON包含answer和sources两个字段。answer是回答内容sources是引用的文档来源。这样前端可以展示来源增加可信度。解析JSON的时候要做异常处理解析失败就重试或降级。5.5 对话历史的管理多轮对话中历史消息也需要管理。全部塞进提示词会越来越长成本越来越高。我的做法是只保留最近几轮对话更早的对话做摘要。摘要可以用模型生成也可以简单截断。摘要的提示词大概是“用一句话总结以下对话的核心内容”。把摘要放在提示词开头最近几轮完整对话放在后面。这样既保留了上下文又控制了长度。还有一个细节是指代消解。用户第二轮问“那它的价格呢”这个“它”指什么需要结合历史才能理解。可以在检索前先用模型把问题改写完整比如改成“某产品的价格是多少”再去检索。这样检索的准确率会更高。6. 常见问题与排查技巧实录6.1 效果不稳定的排查思路效果不稳定是最高频的问题。同样的问法有时候答得好有时候答得差。排查这类问题我一般按这个顺序走先确认是不是检索结果不稳定再确认是不是模型输出不稳定最后确认是不是提示词有歧义。检索不稳定的原因可能是向量模型对某些表达不敏感或者知识库里有多个相似但不同的文档。解决办法是增加关键词检索的权重或者在重排序时加入更多特征。模型输出不稳定通常是温度参数设太高或者提示词不够明确。把温度降到0把输出格式要求写死能解决大部分问题。提示词歧义是指提示词本身有多种理解方式。比如“简要回答”这个要求多简要算简要模型每次理解可能不同。改成“回答不超过50字”就明确了。6.2 检索不到相关内容的处理用户问了一个知识库里没有的问题模型可能会编造答案。这是很危险的情况尤其在客服、医疗等场景。解决办法是在提示词里明确写“如果参考资料中没有相关信息请直接回答‘暂无相关信息’不要编造”。但光靠提示词不够还需要在检索环节做判断。如果检索结果的最高分低于阈值就直接走兜底逻辑不调用模型。阈值需要根据实际数据调我一般从0.7开始试看误判率调整。还有一种情况是知识库里有相关信息但检索没找到。这通常是切分或检索策略的问题。可以尝试调整chunk大小、增加检索数量、优化嵌入模型。如果某个问题反复检索不到可以把它加到知识库里或者调整相关文档的切分方式。6.3 响应速度优化的几个手段响应速度直接影响用户体验。大模型生成本身就有延迟如果再加上检索和重排序整体延迟可能好几秒。优化手段有几个一是并行化检索和重排序可以并行跑二是缓存常见问题直接返回缓存三是流式输出让用户先看到部分内容四是模型选择小模型比大模型快很多。还有一个容易被忽略的点是网络延迟。如果模型API在远端网络往返时间可能占很大比例。选择就近的接入点能改善。另外保持连接复用也能减少握手开销。6.4 常见问题速查表问题现象可能原因排查方法解决措施答非所问检索结果不相关打印检索结果检查优化切分和检索策略编造信息提示词未限制检查提示词边界条件加“不知道就说不知道”格式错误输出约束不足检查输出解析日志用JSON模式或函数调用响应慢模型大或检索慢分段计时换小模型、加缓存、并行化成本高提示词长或调用多统计token消耗精简提示词、加缓存、分级调用多轮混乱历史管理不当检查对话历史拼接限制轮数、做摘要、指代消解6.5 几个踩过的坑第一个坑是过度依赖模型。刚开始做的时候什么都想让模型解决结果提示词越写越长效果越来越不稳定。后来想明白了能用代码规则解决的就不要用模型。比如格式校验、字段提取正则表达式比模型可靠得多。第二个坑是忽略评估。没有评估集改了什么都不知道效果变好还是变差。后来建了一个小规模的测试集每次改动都跑一遍心里才有底。测试集不需要很大几十条覆盖主要场景就够了。第三个坑是不记录日志。出了问题不知道当时检索了什么、提示词是什么、模型返回了什么。后来加了详细的日志排查问题的效率高了很多。日志要记录输入、输出、耗时、token数方便分析和优化。第四个坑是一次性追求完美。想一次把所有场景都覆盖结果哪个场景都做不好。后来改成先做一个场景跑通、跑稳再扩展。小步快跑比大步慢走靠谱。7. 一些个人体会做AI大模型应用开发这段时间最大的感受是模型能力在快速进步但工程能力才是决定应用好坏的关键。同样的模型不同的人做出来的应用效果可能差很远。差距不在提示词写得多花哨而在对业务的理解、对细节的把控、对问题的排查能力。另一个感受是这个领域变化太快今天的最佳实践明天可能就过时了。所以保持学习、保持实验很重要。但有些底层的东西是不变的对数据的理解、对用户需求的理解、对系统稳定性的追求。这些才是长期有价值的能力。如果让我给刚入门的人一个建议我会说先动手做一个最小的可用版本哪怕很粗糙。在做的过程中遇到的问题比看十篇文章学到的都多。做完一个再做一个慢慢就有感觉了。不要一开始就追求架构完美、技术先进能解决问题才是硬道理。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号