☰
AI-LLM
2026/10/5 3:36:50 网站建设 项目流程

LLM

LLM 有两种常见含义‌:一是‌大型语言模型‌(Large Language Model),属于人工智能领域;二是‌法学硕士‌(Master of Laws),属于留学教育领域 。

大型语言模型是什么

  1. ‌核心定义‌:LLM 是使用大量文本数据训练的深度学习模型,能生成自然语言文本或理解语言含义 。

  2. ‌技术特点‌

    • 基于 Transformer 架构,采用自注意力机制处理文本序列。

    • 参数量庞大,从数十亿到数万亿不等,训练数据来自互联网、维基百科等海量资源。

    • 能完成问答、翻译、摘要、代码生成等多种任务。

  3. ‌常见模型‌

    • ‌GPT 系列‌:OpenAI 推出,GPT-4 支持语言、图像多模态。

    • ‌DeepSeek 系列‌:中国公司开发,2026 年推出 V4 家族,支持 100 万 token 上下文窗口。

    • ‌其他主流模型‌:Claude(Anthropic)、Llama(Meta)、Gemini(Google)等。

SDD工程

SDD(Specification-Driven Development,规格驱动开发)是‌AI 时代以规格文档为核心的软件开发范式‌,先定义结构化规格再由 AI 生成代码 。‌‌‌

  • 核心理念:规格作为"单一真相源",人类定义意图,AI 负责执行。

  • 开发流程:需求分析→规范编写→评审→AI 生成代码→测试验证。

  • 代表工具:GitHub spec-kit、Kiro、Tessl 等。

  • 与 TDD/BDD 区别:TDD 关注测试、BDD 关注行为,SDD 关注系统级架构契约。‌‌‌

需要我帮你对比SDD与TDD/BDD在适用场景上的核心差异吗?可以帮你快速判断哪种方法更适合你的项目类型。

规范驱动开发是构建严肃应用的最佳工作流

Markdown规范

用ai写前端后端和agent开发区别是什么

用AI写前端/后端和做Agent开发,核心区别在于‌工作目标和代码逻辑完全不同‌:前端后端是“接收指令→返回数据”,Agent开发是“接收目标→自主拆解→调用工具→完成闭环→记忆优化”。

简单说,AI写前端后端是‌辅助你更快地完成传统开发‌,而Agent开发是‌让AI自己当“员工”去完成任务‌,你给它一个目标,它自己规划步骤、调用工具、处理反馈,直到干完活。

🎯 核心区别:AI写代码 vs Agent开发

表格

维度用AI写前端/后端Agent开发
‌核心目标‌生成页面、接口、业务逻辑代码,提高开发效率构建一个能自主决策、执行复杂任务的智能系统
‌工作方式‌你给指令(需求),AI生成代码,你来审查和修改你给目标,Agent自己拆解任务、调用工具、根据结果调整下一步
‌代码逻辑‌传统项目:接收请求→处理→返回数据Agent项目:接收目标→拆解→调工具→看结果→再决策→完成
‌关键模块‌前端(页面交互)、后端(业务逻辑/数据)决策模型(LLM)、工具调用、记忆机制、状态管理
‌衡量指标‌代码质量、性能、延迟任务完成率、决策准确性、适应性

🧩 具体场景对比

‌1. 传统前端/后端开发(用AI辅助)‌

比如做一套订单系统,逻辑是固定的:用户下单 → 检查库存 → 扣库存 → 生成订单 → 调支付 → 返回结果。你用AI(比如Deepseek、Cursor)能快速生成这些代码,但业务流程、数据表结构、异常处理都是你自己设计好的,AI只是帮你“敲代码”。

‌2. AI应用开发(把大模型嵌入产品)‌

比如在APP里加一个智能客服,核心是把大模型的对话能力接到你的产品里。工作重点在于怎么调API、怎么处理流式输出、怎么设计Prompt,让应用“变聪明”。

‌3. Agent开发(让AI自己干活)‌

比如做一个“自动修Bug的Agent”:你告诉它“帮我修复这个Bug”,它会自己读取代码、搜索相关文件、修改代码、运行测试。如果测试失败,它会读报错、重新判断问题、决定下一步。这个“决策→行动→反馈→再决策”的闭环,就是Agent和普通接口调用的本质区别。

⚠️ 容易踩的坑

  • ‌会调API ≠ 会做Agent‌:很多人以为Agent开发就是调大模型API加提示词,这是个很大的误解。真正的Agent核心是‌自主性‌——能根据目标自己决定下一步做什么,而不是你预先写好每一步。

  • ‌Agent开发不一定更简单‌:对干过几年前后端的老手来说,Agent开发可能只是多调几个API;但对新手来说,要搭建整套Agent体系、理解底层算法模型,难度不小,通常要付出5-6个月的学习时间。

💡 职业选择建议

如果你是有经验的前后端开发者,转Agent开发其实是‌最近的路‌:你懂API设计(Agent本质就是给大模型接工具)、懂系统架构(任务编排、状态管理、并发控制)、懂工程化(部署、监控、稳定性),这些都是Agent落地的关键能力。 现在市场对AI应用开发的需求增长很快,字节等大厂校招也开始设“AI Agent开发”和“AI全栈工程师”岗位了。


Agent开发需要理解闭环机制,可以看看闭环具体怎么实现?或者决策模型选哪个更好?

Agent开发需要哪些核心技能

Agent开发的核心技能不是零散的API调用,而是一套围绕‌“让智能体稳定完成真实业务闭环”‌构建的完整能力体系,覆盖从基础理论到生产落地的全链路。

🧠 基础核心能力

  • ‌大模型底层认知‌:精通LLM核心参数(Token、上下文窗口、温度采样)、函数调用、结构化输出,清晰掌握不同模型的能力边界,能根据任务场景选择推理模型、轻量模型或Embedding模型组合 。

  • ‌编程语言与后端基础‌:熟练使用Python(asyncio异步、异常处理)作为主力开发语言,掌握FastAPI接口开发、SSE流式输出、Docker容器化等基础能力,TypeScript/Go可作为高并发场景的加分项 。

  • ‌Agent经典范式理解‌:吃透ReAct、Plan-and-Execute、Self-Reflection反思、分层记忆(短期上下文/长期向量记忆)、多智能体协作等核心范式,建立“设计智能体而非写死程序”的思维模式 。

🛠️ 专项核心技能

  • ‌任务拆解与工作流设计‌:把复杂业务目标拆分为带验证节点的分步流程,设计带条件分支、异常回退、人工介入的非线性格式,避免Agent出现跳步、漏步、误判等失效问题 。

  • ‌提示与上下文工程‌:从“写单条提示词”升级为构造稳定上下文环境,掌握角色定义、输入归一、上下文裁剪、输出约束等技巧,保障同类任务的Agent行为路径可复现、不漂移 。

  • ‌RAG与知识工程‌:完整掌握文档解析、切片策略、混合检索、Rerank重排序、引用追踪、知识权限过滤全链路,能基于企业内部文档构建高可用的知识库Agent 。

  • ‌工具调用与MCP协议‌:精通传统Function-Calling的参数定义、异常重试,掌握2026年主流的MCP(模型上下文协议)开发,实现工具一次开发、多Agent复用,解决跨系统对接碎片化问题 。

  • ‌Agent框架实操‌:以工业首选的LangGraph为核心,掌握状态管理、分支循环、持久化等核心能力,能自定义节点和工具处理复杂业务,而非仅复制Demo代码,AutoGen、CrewAI等可作为多智能体场景补充 。

  • ‌Skill技能包开发‌:将业务SOP沉淀为标准化Skill模块,包含触发条件、执行步骤、重试降级、终止条件等规则,让Agent处理同类任务时输出稳定、可复用,避免重复编写Prompt 。

🏭 生产落地核心能力

  • ‌企业级治理能力‌:覆盖权限控制、版本管理、审计日志、链路追踪、成本监控等环节,打造可解释、可追踪、可控制的非黑盒Agent,满足企业上线要求 。

  • ‌评测与安全治理‌:建立全链路效果评测体系,通过Prompt注入防护、参数校验、权限最小化等手段,控制Agent错误成本,避免幻觉、越权等风险导致业务事故 。

  • ‌可观测性与调试‌:实现Agent全链路追踪,可视化展示其思考过程、工具调用日志、Token开销,快速定位规划失败、工具报错等问题,从Demo级项目迭代为稳定运行的生产系统 。


需要我为你整理一份‌Agent开发从0到1的实战学习路线‌吗?帮你快速从基础入门到能落地企业级项目。

Agent开发从0到1的实战学习路线‌

这份Agent开发从0到1的实战路线,完全避开零散教程的无效学习,按「入门筑基→进阶工程化→生产级落地」的递进节奏设计,每一步都有明确可落地的产出,帮你从跑通Demo到交付企业级项目。

🚀 第一阶段:入门筑基(1-2周)—— 快速搭建第一个可用Agent

核心目标是建立Agent的基础认知,跑通完整的智能闭环,零基础也能快速上手。

  • ‌LLM调用工程‌:掌握结构化系统提示、少样本示例、思维链引导三类核心Prompt技巧,吃透Function Calling的完整闭环,用LiteLLM做模型统一封装屏蔽不同厂商接口差异 。

  • ‌基础通信能力‌:吃透REST/HTTP协议,掌握SSE流式输出实现打字机效果,提前了解2026年主流适配的MCP模型上下文协议,实现工具一次开发多Agent复用 。

  • ‌入门框架选型‌:零基础选Dify/Coze可视化拖拽快速验证业务想法,有代码基础直接上手LangChain,不用从零造轮子就能快速做出可用Demo 。

  • ‌阶段产出‌:一个能自主查询天气、调用本地文件的极简Agent,完整实现「用户提问→工具调用→结果返回」的闭环。

🛠️ 第二阶段:核心能力进阶(1-2个月)—— 掌握五大Agent核心技术

这一阶段是从“会跑Demo”到“能做项目”的关键,覆盖Agent开发的五大核心支柱能力。

  • ‌RAG全链路开发‌:完整掌握文档解析、智能切片、向量检索、Rerank重排序、引用追踪全流程,能基于企业内部文档搭建高可用知识库Agent,这是求职时最有竞争力的实战项目 。

  • ‌工具与记忆体系‌:把内部API、数据库查询封装成标准化工具函数,设计分层记忆机制——短期用对话历史缓存、长期用向量数据库存储,突破大模型上下文窗口限制 。

  • ‌经典范式落地‌:吃透ReAct推理-行动、Plan-and-Execute任务规划、Self-Reflection反思等经典架构模式,能根据不同业务场景灵活选型,不再靠零散Prompt拼接脆弱逻辑 。

  • ‌状态与框架精通‌:深入学习LangGraph的状态管理、分支循环、持久化核心能力,用状态机管理Agent的任务进度,解决传统线性Chain无法处理复杂分支的问题 。

  • ‌阶段产出‌:一个完整的企业内部文档问答RAG Agent,支持多格式文档上传、精准检索、来源标注,可直接放进求职作品集。

🏭 第三阶段:工程化与生产落地(2-3个月)—— 打造企业级可用Agent

这一阶段跨越Demo到生产的工程化天堑,解决高并发、异常兜底、稳定性等真实业务痛点,也是市场上最稀缺的能力。

  • ‌Harness驾驭工程体系‌:搭建完整的Agent控制框架,包含系统提示词宪法、工具权限管控、安全沙箱、全链路监控六大模块,把“不可控的大模型”驯化为“按规则执行的智能体” 。

  • ‌软件工程能力补全‌:掌握Agent的容错降级策略、超时控制、异常重试机制,实现全链路推理过程可视化追踪,能快速定位规划失败、工具报错等问题 。

  • ‌向量数据库工程化‌:熟练使用Milvus/Qdrant等生产级向量库,掌握索引优化、分片部署、高可用集群搭建,解决百万级以上文档的检索性能问题 。

  • ‌多智能体协作‌:基于AutoGen/CrewAI实现多角色分工系统,比如让“产品Agent”拆解需求、“开发Agent”写代码、“测试Agent”自动校验结果,完成复杂多步骤任务 。

  • ‌阶段产出‌:一个支持高并发、带完整权限和审计体系的生产级业务Agent,比如自动处理员工报销、智能客服理赔等真实场景系统。

📈 第四阶段:职业能力升级(长期)—— 成为资深Agent工程师

  • ‌安全与治理体系‌:建立Prompt注入防护、输出内容审核、权限最小化机制,搭建完整的Agent效果评测体系,把幻觉率、错误率控制在企业可接受范围内 。

  • ‌成本与性能优化‌:实现大模型推理加速、Token动态裁剪、冷热记忆分层存储,把Agent的运行成本降低一个数量级,满足大规模业务部署要求。

  • ‌架构设计能力‌:能主导复杂多智能体系统的架构设计,结合微服务、事件驱动架构,支撑企业级大规模Agent集群的稳定运行,成为团队核心技术负责人。


需要我为你整理一份‌每个阶段对应的实战项目清单和免费学习资源‌吗?帮你直接照着动手练,快速积累能写进简历的项目经验。

function calling基础:回定义工具schema并让模型调用

Function Calling 的核心流程分为三步:定义工具 Schema、模型生成调用指令、应用执行并回传结果。

1. 定义工具 Schema

使用 JSON Schema 描述函数名称、功能及参数约束,确保模型能准确理解并生成合法参数。

python ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ tools = [ { "type": "function", "function": { "name": "get_current_weather", "description": "获取指定城市的当前天气", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市名称,如北京、上海" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "温度单位" } }, "required": ["location"] # 必填参数 } } } ]

2. 发起请求与解析调用

将tools传入 API 请求。若模型决定调用,返回的tool_calls中包含函数名和参数字符串(需 JSON 解析)。

python ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ import json from openai import OpenAI ​ client = OpenAI(api_key="your-api-key") ​ # 第一次请求:让模型决定是否调用工具 response = client.chat.completions.create( model="gpt-3.5-turbo", # 或 qwen-plus, deepseek-chat 等支持 FC 的模型 messages=[{"role": "user", "content": "北京今天天气怎么样?"}], tools=tools, tool_choice="auto" # 自动判断是否调用 ) ​ message = response.choices.message tool_calls = message.tool_calls ​ # 检查是否有工具调用 if tool_calls: for tool_call in tool_calls: func_name = tool_call.function.name func_args = json.loads(tool_call.function.arguments) # 解析参数字符串为字典 print(f"调用函数: {func_name}, 参数: {func_args}") # 执行实际函数 (示例) if func_name == "get_current_weather": result = get_current_weather(**func_args) # 第二次请求:将结果回传给模型,生成最终回答 messages = [ {"role": "user", "content": "北京今天天气怎么样?"}, message, # 包含 tool_calls 的助手消息 { "role": "tool", "tool_call_id": tool_call.id, # 必须对应上一次的 call id "content": json.dumps(result) # 工具执行结果 } ] final_response = client.chat.completions.create( model="gpt-3.5-turbo", messages=messages ) print(final_response.choices.message.content)

3. 关键注意事项

  • ‌角色对应‌:回传结果时,消息角色必须是tool,且必须携带tool_call_id以匹配对应的调用请求 。

  • ‌参数校验‌:模型生成的参数可能不符合预期,建议在本地执行前进行类型和范围校验 。

  • ‌安全边界‌:模型仅生成调用意图,实际执行由应用层控制,敏感操作(如删除数据)需在代码层增加权限验证 。


工具调用流程清楚了,要不要再看看如何定义多个工具的 Schema?或者参数校验具体怎么实现?

如何定义工具schema并让模型调用

定义工具 Schema 并让模型调用(Function Calling / Tool Use)的核心在于建立一套‌结构化契约‌,将自然语言意图转化为可执行的代码指令。整个过程分为“定义规范”、“发起调用”和“结果回传”三个关键阶段。

以下是完整的实现指南:

1. 核心概念:什么是 Tool Schema?

Tool Schema 是给大模型看的“接口说明书”,通常遵循 ‌JSON Schema‌ 标准。它不是给程序员看的 API 文档,而是为了约束模型的输出,使其生成符合系统要求的结构化数据。

一个标准的 Schema 包含三个核心要素:

  • ‌Name (名称)‌:唯一标识,建议使用snake_case(如get_weather),动词+名词结构,避免歧义。

  • ‌Description (描述)‌:‌最关键的部分‌。用自然语言清晰说明工具的功能、适用场景以及‌何时不该使用‌。描述越精准,模型选择工具的概率越高。

  • ‌Parameters (参数)‌:定义输入参数的类型、必填项、枚举值等约束。

2. 第一步:定义工具 Schema

以下是一个获取天气工具的 Schema 定义示例。注意description和enum的使用,这能显著降低模型出错率。

python ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ tools = [ { "type": "function", "function": { "name": "get_current_weather", "description": "获取指定城市的当前天气状况。当用户询问温度、是否下雨、天气冷暖时使用。", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市名称,例如:北京、上海、深圳" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "温度单位,默认为摄氏度(celsius)" } }, "required": ["location"] # 明确告知模型哪些参数必须提供 } } } ]

‌设计最佳实践:‌

  • ‌边界清晰‌:在 description 中写明“仅用于...”,防止模型误用。

  • ‌约束明确‌:对于有限选项参数(如单位、状态),务必使用enum限制,避免模型生成非法字符串。

  • ‌扁平化结构‌:尽量保持参数层级扁平,嵌套过深会增加模型解析难度。

3. 第二步:发起请求与解析调用

将定义好的tools传入 API 请求。模型会根据用户问题判断是否需要调用工具。如果需要,它会返回一个特殊的tool_calls对象,而不是直接回答文本。

python ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ import json from openai import OpenAI ​ client = OpenAI(api_key="your-api-key") ​ # 1. 第一次请求:发送用户问题和工具定义 messages = [{"role": "user", "content": "北京今天天气怎么样?"}] ​ response = client.chat.completions.create( model="gpt-4o", # 或 gpt-3.5-turbo, qwen-plus 等支持 FC 的模型 messages=messages, tools=tools, tool_choice="auto" # auto: 自动判断; required: 强制调用; none: 禁止调用 ) ​ message = response.choices[0].message tool_calls = message.tool_calls ​ # 2. 检查模型是否决定调用工具 if tool_calls: print("模型决定调用工具...") for tool_call in tool_calls: func_name = tool_call.function.name # 注意:arguments 是 JSON 字符串,需要解析为字典 func_args = json.loads(tool_call.function.arguments) print(f"函数名: {func_name}") print(f"参数: {func_args}") # 3. 执行实际业务逻辑 if func_name == "get_current_weather": weather_data = get_current_weather_real_api(**func_args) # 4. 构造回传消息 # 必须保留原始助手消息(包含 tool_calls),并追加 tool 角色的结果 messages.append(message) messages.append({ "role": "tool", "tool_call_id": tool_call.id, # 关键:必须与调用的 ID 对应 "content": json.dumps(weather_data) # 工具执行结果 }) # 5. 第二次请求:将结果回传给模型,生成最终自然语言回答 final_response = client.chat.completions.create( model="gpt-4o", messages=messages ) print("最终回答:", final_response.choices[0].message.content) else: # 模型认为不需要调用工具,直接回答 print("直接回答:", message.content)

4. 第三步:关键注意事项

A. 消息角色的严格对应

在第二轮对话中,回传工具结果时,消息角色必须是"role": "tool",且必须携带tool_call_id。这个 ID 是模型在第一轮响应中生成的,用于将“问题”与“答案”配对。如果 ID 不匹配或缺失,模型可能会产生幻觉或报错。

B. 并行调用处理

如果用户问“北京和上海的天气如何?”,模型可能在一次响应中返回多个tool_calls。

  • ‌处理方式‌:遍历所有tool_calls,并行执行各个函数(提高速度),然后将所有结果分别以"role": "tool"的消息形式追加到消息列表中,最后再发起一次模型请求。

C. 安全与校验
  • ‌不要信任模型参数‌:模型生成的参数可能不符合预期(例如 location 传入了 SQL 注入语句)。在执行真实函数前,务必在代码层进行参数校验和清洗。

  • ‌敏感操作保护‌:对于删除、支付等敏感工具,建议在 Schema 描述中增加限制,并在代码执行层增加二次确认或权限验证。

D. 调试技巧

如果模型不调用工具或参数错误:

  1. ‌优化 Description‌:检查描述是否过于简略,是否明确了触发条件。

  2. ‌增加 Examples‌:虽然标准 JSON Schema 不支持 examples 字段直接传给所有模型,但在description中写入示例(如:“城市名称例如:'北京'”)通常有效。

  3. ‌检查 Required‌:确保必填参数在required数组中声明,否则模型可能会遗漏关键信息。

通过这套流程,你可以让大模型从单纯的“聊天机器人”进化为能够操作外部系统、获取实时数据的“智能 Agent”。

python异步

Python 异步编程是使用 async/await 语法配合 asyncio 标准库,让程序在等待 I/O 操作时能同时处理其他任务,适合网络请求、文件读写等 I/O 密集型场景‌。‌‌‌

基础概念和语法

  1. ‌核心关键字‌:async 定义异步函数,await 暂停等待结果,调用 async 函数返回协程对象而非直接执行 。‌‌‌

  2. ‌运行方式‌:使用 asyncio.run() 启动事件循环并执行主协程,Python 3.7+ 推荐使用 。‌‌‌

  3. ‌协程与任务区别‌

    :

    • 协程对象:async def 函数调用后得到,不能直接运行,需 await 或任务驱动。

    • 任务对象:用 asyncio.create_task() 包装协程,可被事件循环调度、跟踪状态、支持取消。‌‌‌

  4. ‌并发执行‌:asyncio.gather() 可并发执行多个协程并等待全部完成 。‌‌‌

事件循环工作原理

  1. ‌核心作用‌:事件循环是异步编程的"调度员",在单线程中管理所有协程的执行顺序 。‌‌‌

  2. ‌工作流程‌

    :

    • 维护任务队列,调度协程执行。

    • 协程遇到 await 时挂起,事件循环去执行其他任务。

    • I/O 操作完成后唤醒对应协程继续执行。‌‌‌

  3. ‌底层机制‌:使用 I/O 多路复用(如 Linux epoll、macOS kqueue、Windows IOCP)监控文件描述符,避免线程阻塞和频繁上下文切换 。‌‌‌

  4. ‌避免阻塞‌:不要在协程中使用 time.sleep() 等同步阻塞操作,应使用 asyncio.sleep(),否则会阻塞整个事件循环 。‌‌‌

实际应用场景

  1. ‌适用场景‌

    :

    • 网络请求(API 调用、爬虫)。

    • 数据库查询。

    • 文件读写。

    • 其他 I/O 密集型操作。‌‌‌

  2. ‌不适用场景‌:CPU 密集型任务(如科学计算、视频编码),异步无法提升性能,GIL 限制下应使用多进程 。‌‌‌

  3. ‌性能对比‌:3 个各需 2 秒的 API 请求,同步执行约 6 秒,异步并发执行约 2 秒 。‌‌‌

  4. ‌与多线程区别‌

    • 多线程受 GIL 限制,纯 Python 代码无法真正并行。

    • 异步在 I/O 等待时释放控制权,单线程高效管理成千上万协程。

    • 异步避免线程上下文切换开销,更适合高并发 I/O 场景。‌‌‌

需要我帮你整理在异步协程中避免阻塞的替代方案吗?比如用asyncio.sleep替代time.sleep,可以帮你写出更高效的异步代码。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询