• [问题求助] 如何设计一个基于 RAG 的企业知识库系统,并解决文档切分、向量检索、知识更新与答案幻觉等问题?
    如何设计一个基于 RAG 的企业知识库系统,并解决文档切分、向量检索、知识更新与答案幻觉等问题?
  • AIGC 应用开发入门:从大模型 API 到 RAG 应用的完整路径
    AIGC 应用开发入门:从大模型 API 到 RAG 应用的完整路径AIGC 这个词火了几年,但很多同学的认知还停留在"用网页版聊天框"。这篇要讲的是另一件事:把生成式 AI 当作开发能力,做出自己的应用——调用大模型 API、写好提示词、用 RAG 让模型"懂你的私有知识"、把模型部署到自己租的算力上。三个层次,对应本文的四个实战环节。全部是学生开发者视角,代码可以直接跑。如果你还没租过 GPU、对云上算力不熟,建议先看我的上一篇帖子【附链接】(异构加速云服务器实战),那篇是这篇的算力前置篇。一、AIGC 能力地图:先知道有什么,再决定做什么AIGC(AI Generated Content)按"生成什么"分五大类,每类的成熟度和开发门槛完全不同:能力输入 → 输出成熟度开发门槛学生可做的应用文生文文本 → 文本最成熟最低(API 调用)智能问答、摘要器、写作助手文生图文本 → 图像成熟低(API/本地模型)海报生成、素材工具多模态理解图文 → 文本成熟中图像问答、OCR 增强版代码生成需求 → 代码成熟(工具化)低(用好工具即可)开发提效(见第八节)文生视频文本 → 视频快速演进中高目前更适合体验而非应用给入门者的建议是从文生文开始——不是因为简单,而是因为它是一切的地基:RAG 是"检索 + 文生文",Agent 是"工具调用 + 文生文",多模态很多场景也是"理解 + 文生文回答"。把这一条链路吃透,其他能力都是它的插件。二、技术栈三层:模型、平台、应用做 AIGC 应用之前,先看清整个技术栈的结构,你才知道自己在哪一层干活:应用层 你的应用:问答机器人 / 简历优化器 / 实验报告助手 ↑ 调用 API / SDK平台层 大模型服务平台:ModelArts Studio(数据管理/模型训练/模型部署) ↑ 承载模型层 大模型本体:盘古大模型(NLP/多模态/CV/预测/科学计算)、 各类开源模型(DeepSeek、Qwen、Llama……)三层对应三种开发姿态:只用应用层:直接调云端 API,不碰模型本身——90% 的学生应用在这一层,本文第三\~五节用到平台层:需要微调模型、管理私有数据、或把模型部署成服务——华为云的入口是 ModelArts Studio深入模型层:本地部署开源模型、研究量化/推理优化——本文第六节 + 上一篇帖子的 GPU 实例华为云侧的对应关系(2026 年 9 月核实):盘古大模型服务以"模型 + 开发平台"的组合形态提供——盘古系列基础大模型(LLM、多模态、视觉、预测、气象五大方向)+ MaaS 模型即服务(ModelArts Studio,覆盖模型广场 / 模型体验 / 模型推理 / 技术实践全链路)。对开发者来说,MaaS 平台就是盘古能力"开发与落地的入口",同一平台还能一键调用 GLM、Kimi、DeepSeek 等第三方热门模型。MaaS 平台的产品页长这样——模型广场 / 模型体验 / 模型推理 / 技术实践四大板块,GLM、Kimi、DeepSeek、openPangu 等热门模型一键调用,从这里开始上手是最短路径:  图1. MaaS 模型即服务(ModelArts Studio):模型广场 / 体验 / 推理 / 技术实践盘古侧则是五大基础大模型的矩阵,按场景选方向:  图2. 盘古大模型:LLM / 多模态 / 视觉 / 预测 / 气象五大方向这个结构认识很重要,因为它决定了你的学习路径:先在应用层把 API 用熟(本周就能做到),再按需下沉。反过来(先啃模型原理再写应用)是很多人入不了门的原因。三、实战一:第一次调用大模型 API3.1 最小可运行示例以调用一个对话模型 API 为例(各家接口结构大同小异,很多服务提供 OpenAI 兼容格式,以下代码换 base_url 和 key 就能切到不同服务商):from openai import OpenAIclient = OpenAI( base_url="https://你的服务地址/v1", # 各平台文档里拿 api_key=load_api_key(), # 见 3.2,严禁写死在这里)resp = client.chat.completions.create( model="模型名", messages=[ {"role": "system", "content": "你是一个严谨的学习助手。"}, {"role": "user", "content": "用一句话解释什么是检索增强生成。"}, ], temperature=0.7, # 越低越确定,越高越发散 max_tokens=200,)print(resp.choices[0].message.content)顺手把返回体的结构也看清——后面算成本全靠它。resp 关键字段长这样:{ "choices": [ { "finish_reason": "stop", "message": { "role": "assistant", "content": "RAG 指检索增强生成:回答前先从外部知识库检索相关内容,连同问题一起交给大模型,让回答基于真实资料而非模型记忆。" } } ], "usage": {"prompt_tokens": 42, "completion_tokens": 47, "total_tokens": 89}}usage 这一节是成本仪表盘:API 按 token 计费,一次调用花多少钱 = 这三个数字 × 单价。养成每次看一眼 usage 的习惯,成本直觉会进步得飞快——同一件事,提示词写法不同,token 消耗能差三倍。五分钟就能跑通,但别急着庆祝——从"跑通 demo"到"能上线的小应用"之间还隔着三件事:密钥安全、提示词、成本控制。3.2 密钥安全:第一纪律API Key 严禁硬编码——这是云端大模型开发的第一纪律。一旦密钥进了代码、代码进了仓库(哪怕是私有仓库),泄露只是时间问题;泄露后果是别人拿你的额度刷调用,账单归你。正确姿势:# 方案一:环境变量(本地开发够用)import osdef load_api_key(): return os.environ["MY_LLM_API_KEY"]# 方案二:密钥管理服务(上生产/多人协作时)# 华为云上有密钥管理相关服务;硬编码是唯一被明确禁止的选项配套动作:.gitignore 里加上存放密钥的文件;密钥泄露过的立即作废重建;不同项目用不同的 key,方便单独吊销。3.3 理解参数:temperature 和 max_tokensresp = client.chat.completions.create( ..., temperature=0.2, # 事实问答/抽取:调低(0~0.3) # 创意写作/头脑风暴:调高(0.7~1.0) max_tokens=500, # 输出上限,直接决定单次调用成本)经验法则:可验证的任务用低 temperature(你要的是准确,不是惊喜),开放性任务用高 temperature(你要的是多样性)。写应用时把这两个参数做成可配置项,你会反复调它们。四、实战二:提示词工程——普通人和大模型之间的最大变量同一个模型,提示词不同,输出质量能差一个档次。核心不是玄学咒语,是把模糊的愿望翻译成明确的规格。4.1 反面示例与正面示例# ❌ 模糊提示"帮我总结这篇文章"# ✅ 结构化提示"""请总结以下文章,要求:1. 一句话主旨(不超过 30 字)2. 三个关键论点,每个一行,保留原文数字3. 一句话说明作者的写作立场文章:{article}"""区别的本质:正面示例给模型的是"验收标准"——长度约束、数量约束、格式约束、内容保留规则。模糊提示把解释权交给了模型,模型就会给你"随机质量"。4.2 一个可复用的提示词模板## 角色你是一个 [具体角色,如:Python 代码审查员]。## 任务[一句话说清要做什么]## 输入{变量占位}## 要求1. [硬性约束:格式/长度/风格]2. [内容规则:必须包含什么、必须保留什么]3. [负面清单:不要做什么]## 输出格式[明确的结构,如:Markdown 表格,三列:问题/位置/建议]这个模板和我上一篇码道帖子里给代码智能体写需求的方法论是同一个——行为级描述。AI 编程工具和对话模型本质是一类系统:你给规格,它给实现;你给情绪,它给猜测。4.3 少样本示例(Few-shot):最被低估的技巧给模型看 1\~3 个"输入 → 期望输出"的完整例子,比任何形容词都管用:messages = [ {"role": "system", "content": "将学生反馈分类为:bug报告/功能建议/情绪表达。输出分类+理由。"}, # 示例一 {"role": "user", "content": "导出按钮点了没反应"}, {"role": "assistant", "content": "分类:bug报告\n理由:描述了具体功能失效,无新功能诉求"}, # 示例二 {"role": "user", "content": "要是能夜间模式就好了"}, {"role": "assistant", "content": "分类:功能建议\n理由:表达了期望的新功能,未报告故障"}, # 真实任务 {"role": "user", "content": "你们这个系统也太卡了吧,无语"},]模型会顺着示例的格式和判断口径输出。做分类、抽取、格式转换类任务时,两个示例往往能把准确率抬高一截,而且完全免费(只多花一点 token)。五、实战三:RAG——让大模型"懂你的私有知识"5.1 为什么需要 RAG大模型有两个天然缺陷:知识截止(训练数据有日期,不知道最新的和你们学校内部的事)和幻觉(不知道的事会一本正经地编)。RAG(检索增强生成)的思路朴素:回答之前先查资料,把查到的内容连同问题一起给模型——相当于开卷考试。用户提问 ↓① 把你的私有文档切块、向量化(离线准备) ↓② 检索:把问题也向量化,找出最相关的几个文档块 ↓③ 生成:把 [问题 + 检索到的块] 一起发给大模型 ↓带引用来源的回答适合学生的 RAG 场景:课程资料问答(把课件、历年题喂进去)、实验室知识库、企业实习时的内部文档助手(注意脱敏和权限)。5.2 最小 RAG 实现import numpy as np# ---- 离线准备:把文档切块并 embedding ----docs = [ "实验报告模板要求:正文宋体小四,代码用等宽字体并加灰色底纹。", "提交截止时间为第 16 周周五 18:00,逾期每日扣 10%。", "图表必须有编号和图注,图注位于图下方。",]def embed(texts): """调用 embedding API;也可用本地小模型(如 bge 系列)""" ... # 返回 texts 的向量矩阵doc_vecs = np.array(embed(docs)) # (n, d)# ---- 在线:检索 + 生成 ----def answer(question): q_vec = np.array(embed([question])) sims = doc_vecs @ q_vec.T # 余弦相似度(向量归一化后) top = np.argsort(-sims[:, 0])[:2] # 取最相关的 2 块 context = "\n".join(docs[i] for i in top) resp = client.chat.completions.create( model="模型名", messages=[ {"role": "system", "content": "仅根据提供的资料回答;资料中没有的信息,直接说明不知道。"}, {"role": "user", "content": f"资料:\n{context}\n\n问题:{question}"}, ], ) return resp.choices[0].message.content这段代码跑通,你就理解了 RAG 的全部骨架。生产级系统要在此基础上加:更好的切块策略(按标题/段落而不是死板字数)、重排序(rerank)、引用定位、缓存。但骨架不会变——先跑通骨架,再谈优化。5.3 两个立刻能体会的调优点切块大小:块太大 → 检索不精准、上下文浪费;块太小 → 语义被切碎。经验起点 200\~500 字一块,带一句重叠system 提示里的"兜底条款"(上面代码里那句"资料中没有的直接说不知道")——这行字是压制幻觉的第一道闸,加与不加,胡编率肉眼可见的差别六、进阶一步:Agent——让模型"动手"而不只是"动嘴"RAG 之上还有一层:Agent(智能体)。区别一句话讲清——RAG 是"模型查资料回答你";Agent 是"模型调用工具帮你把事办了"。模型本身只会生成文本,但它可以输出"我要调用某个函数、参数是什么"的指令,由你的代码真正去执行,再把结果喂回去。这就是 Function Calling(工具调用)机制。最小示例:tools = [{ "type": "function", "function": { "name": "get_weather", "description": "查询指定城市的当前天气", "parameters": { "type": "object", "properties": { "city": {"type": "string", "description": "城市名,如:桂林"} }, "required": ["city"], }, },}]resp = client.chat.completions.create( model="模型名", messages=[{"role": "user", "content": "桂林现在多少度?适合跑步吗"}], tools=tools,)# 模型不会编天气,而是返回一个调用请求call = resp.choices[0].message.tool_calls[0]print(call.function.name) # get_weatherprint(call.function.arguments) # {"city": "桂林"}接下来你的代码执行真实的 get_weather("桂林")(调天气 API、查数据库都行),把结果作为 tool 角色的消息发回去,模型基于真实数据给出回答。整个循环里模型只负责"决策调用什么"和"组织最终回答",事实来自你的工具——这从机制上规避了幻觉。学生能做的 Agent 练手项目:课表查询机器人(工具=读你的课表数据)、实验设备预约助手(工具=查/约数据库)、批量文件整理器(工具=文件系统操作)。做的时候有两个纪律:工具的 description 写清楚(模型靠它决定何时调用);给工具加白名单和确认机制(删文件这类操作必须人工确认)。RAG 和 Agent 不冲突,成熟的应用是两者叠加:先查私有知识(RAG),不够再调工具(Agent),最后综合回答。七、实战四:本地部署开源模型——和 GPU 实例联动调 API 是"借别人的模型",本地部署是"拥有一个模型":数据不出本地、没有按次计费、可以离线。代价是你得有一张够格的显卡——这正是我上一篇帖子(异构加速云服务器)的用武之地。华为云官方最佳实践给出的量化模型部署规格(DeepSeek-R1 蒸馏版为例):模型实例GPU说明deepseek-r1:7b/8bpi2.4xlarge.4T4 16G × 1最便宜的入门组合deepseek-r1:7b/8bp2v.4xlarge.8V100 16G × 1同显存,算力更足deepseek-r1:7b/8bp2s.2xlarge.8V100 32G × 1可同时服务更多请求不想从零摸索的同学还有一条捷径:华为云开发者空间的实践中心里有现成的实战案例库(AI 云原生 / 鸿蒙 / AI 办公 / IaC 四大方向),从环境到部署跟着案例走一遍,比盲搜教程省事得多——学生认证后这里的云开发资源也是免费的:  图3. 开发者空间门户:实践中心与免费云开发资源入口部署走 ollama 路线最省事(官方最佳实践手把手:cid:link_0 ):# GPU 实例上(镜像自带 CUDA)curl -fsSL https://ollama.com/install.sh | shollama run deepseek-r1:7b # 下载并启动,之后就是本地 API跑起来之后你就有了一个 localhost:11434 的 OpenAI 兼容接口——把第三节的示例代码 base_url 一换,你的应用就从"云端 API"切到了"自己 GPU 上的模型",一行业务代码都不用改。这就是接口标准化的红利。什么时候选本地部署:隐私敏感数据、大批量离线处理、想研究量化/推理优化本身。什么时候老实调 API:日常开发、轻量应用、不想运维——两条路都要会,按场景切换。八、AIGC × 开发工具:别忽略"代码生成"这条线前面六节都在讲"把 AI 做进产品",还有一条反向路线同样重要:用 AIGC 提高你自己的开发效率。我自己用华为云码道 CodeArts 代码智能体做完整项目的体感(详见我的码道入门帖【附链接】):写一个"带导出功能的结果列表组件",从描述到可用实现是一轮对话的事。对 AIGC 应用开发者,这个组合的价值在于补位——你要做的事谁更合适模型选型、提示词设计、RAG 架构你(这是应用的核心判断力)前端界面、接口胶水代码、部署脚本代码智能体(重复性高、模式成熟)敏感数据的脱敏处理逻辑你(合规判断)把 demo 工程化(日志/配置/错误处理)代码智能体 + 你的验收一个真实的工作流:用码道把"RAG 问答应用"的 Web 壳和接口层搭好(一晚上),你的精力全部花在检索质量调优和提示词打磨上(这才是决定应用上限的部分)。AIGC 时代的开发分工——把判断力花在刀刃上。九、成本、合规与边界9.1 成本三笔账API 调用费:按 token 计费。控制手段:max_tokens 封顶、能缓存的缓存、开发期用小模型算力租金:本地部署 = GPU 实例按小时计费(省钱心法见上一篇帖子),记住"按需 + 用完释放"时间成本:最大的隐性成本。新手期容易陷入"调一晚上提示词提升 2%"——设定止损线,超过两小时无进展就换思路或第二天再说9.2 合规红线内容合规:面向公众发布的应用必须加内容审核环节(输入输出双向),华为云有对应的内容审核服务数据合规:训练/检索用的数据要有授权;实习单位的内部数据先问再喂;个人信息做脱敏学术诚信:用 AI 辅助写课程作业,先确认课程规定——工具没错,用错场合是你的责任密钥安全:再强调一次第三节的内容,这是技术问题也是合规问题9.3 知道边界在哪现在的大模型仍然:会一本正经地编造事实(幻觉没有根治)、长上下文中间部分的信息利用率会下降、数学和精确计数不可靠。所以——关键事实让模型给出处(RAG 的引用),关键逻辑你自己过一遍。把模型当能力很强的实习生,不当全知的权威。十、四周学习路径周目标产出第 1 周跑通 API 调用 + 提示词模板练手一个命令行小工具(如:论文摘要器)第 2 周少样本、参数调优、结构化输出一个分类/抽取小应用第 3 周RAG 骨架跑通课程资料问答 demo第 4 周本地部署一个量化模型(租 T4)自己 GPU 上的对话服务 + 切换到它的应用每周的产出都是"能跑的小东西"——AIGC 开发的学习曲线特别适合小步快跑,因为反馈是即时的:提示词改一行,输出立刻不一样。十一、结语AIGC 应用开发在 2026 年的学生开发者手里,已经是"一个周末能做出 demo、一个月能做成作品"的成熟领域——门槛不再是技术,是动手的意愿和把小事做完的习惯。这条路径上有三个伙伴级的工具:大模型 API(能力来源)、GPU 云实例(算力底座)、代码智能体(效率杠杆)。三个我恰好都写过帖子:API 和 RAG 在这篇,算力在异构加速那篇,代码智能体在码道入门篇——三篇连起来,就是一套完整的"学生 AIGC 应用开发工具箱"。从跑通第一个 API 调用开始。有问题评论区见。
  • [问题求助] 什么是“模态对齐”(Modality Alignment)?为什么它是多模态模型的关键挑战?
    什么是“模态对齐”(Modality Alignment)?为什么它是多模态模型的关键挑战?
  • [问题求助] 如何利用大语言模型构建一个具备长期记忆、工具调用和自主任务规划能力的智能 Agent?
    如何利用大语言模型构建一个具备长期记忆、工具调用和自主任务规划能力的智能 Agent?
  • [问题求助] 在视觉-语言模型中,Q-Former 是做什么的?为什么需要它?
    在视觉-语言模型中,Q-Former 是做什么的?为什么需要它?
  • [问题求助] CLIP 模型的核心思想是什么?它如何实现图文对齐?
    CLIP 模型的核心思想是什么?它如何实现图文对齐?
  • [问题求助] 在复杂任务场景下,如何设计基于大语言模型的多Agent协作系统?
    在复杂任务场景下,如何设计基于大语言模型的多Agent协作系统?
  • [问题求助] 如何利用多模态大模型构建一个能够理解图像、文本与语音信息的智能Agent?
    如何利用多模态大模型构建一个能够理解图像、文本与语音信息的智能Agent?
  • [问题求助] 如何设计一个基于大语言模型的智能Agent,使其具备任务规划、工具调用、上下文记忆与自主决策能力?
    如何设计一个基于大语言模型的智能Agent,使其具备任务规划、工具调用、上下文记忆与自主决策能力?
  • [问题求助] RAG与微调分别适用于哪些AIGC应用场景?如何根据业务需求选择合适的技术方案?
    AG与微调分别适用于哪些AIGC应用场景?如何根据业务需求选择合适的技术方案?
  • [问题求助] 大语言模型的幻觉问题产生的主要原因是什么?如何从数据、模型和推理三个层面降低幻觉率?
    大语言模型的幻觉问题产生的主要原因是什么?如何从数据、模型和推理三个层面降低幻觉率?
  • [问题求助] 什么是“数据泄露”(Data Leakage)?它在LLM评测中为何严重?
    什么是“数据泄露”(Data Leakage)?它在LLM评测中为何严重?
  • [问题求助] MMLU(大规模多任务语言理解)的测试方式有什么特点?为什么它被认为有难度?
     MMLU(大规模多任务语言理解)的测试方式有什么特点?为什么它被认为有难度?
  • [问题求助] 如何有效检测与治理深度伪造(Deepfake)内容?
    如何有效检测与治理深度伪造(Deepfake)内容?
  • [问题求助] 在大语言模型、RAG、Agent 与多模态生成技术融合的场景下,如何设计一套具备长期记忆、自主规划、工具调用、动态检索与结果自我评估能力的企业级 AIGC Agent 架构?
    在大语言模型、RAG、Agent 与多模态生成技术融合的场景下,如何设计一套具备长期记忆、自主规划、工具调用、动态检索与结果自我评估能力的企业级 AIGC Agent 架构?
总条数:188 到第
上滑加载中