2023年之前,AI开发是少数人的游戏。你需要懂机器学习理论、会调参、能训练模型、有足够的GPU资源——门槛高到大多数人只能当观众。
2023年之后,这一切变了。大语言模型(LLM)的崛起,把AI能力封装成了标准API。调用GPT-4就像调用一个数据库一样简单,但能做的事情,却是指数级增长的。
2026年的今天,大模型应用开发已经成为软件工程的主流分支。一个懂HTTP请求、会解析JSON的开发者,加上一些系统设计思维,就能构建出以前需要一整个AI研究团队才能做出的产品。
这不是夸张,而是正在发生的现实。
大模型应用开发有三个核心范式,理解它们的区别和适用场景,是入门的第一步。
核心思想:模型再强,知识也有截止日期。RAG通过外挂知识库,让模型在回答问题时先检索相关信息,再基于检索结果生成答案。
适用场景:企业知识库问答、客服机器人、文档分析——需要基于特定私有数据回答,且数据会频繁更新。
关键优势:无需重新训练模型,知识可随时更新,回答可溯源。
核心思想:赋予模型工具调用能力,让它能主动规划步骤、调用外部API、完成多步任务。
适用场景:自动化工作流、个人助理、代码生成与执行——需要模型“动手做事”而不是只“动嘴说话”。
核心思想:用特定领域的数据继续训练模型,改变模型的“思维方式”和输出风格。
适用场景:需要模型按特定格式输出、模仿特定风格、或处理高度专业化的任务。
选型原则:能RAG解决的优先RAG,需要复杂推理选Agent,只有格式/风格问题才考虑微调。
RAG的起点是知识库的构建。原始文档需要经过清洗(去除页眉页脚、特殊字符)、分块(按语义切分)和向量化处理。
from langchain.text_splitter import RecursiveCharacterTextSplitter
# 文档分块:按语义边界切分
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000, # 每块大小
chunk_overlap=200, # 重叠部分,保持上下文连贯
separators=["\n\n", "\n", "。", "!", "?", ";", " ", ""]
)
chunks = text_splitter.split_text(document)Embedding模型将文本转换为向量,存入向量数据库。查询时,将用户问题同样转为向量,检索最相似的K个片段。
主流选择:
将检索到的相关文档片段与用户问题组合成Prompt,调用大模型生成最终答案。
from openai import OpenAI
client = OpenAI()
def rag_answer(question, retrieved_docs):
"""基于检索结果生成答案"""
context = "\n\n".join(retrieved_docs)
prompt = f"""请根据以下参考资料回答问题。
如果参考资料中没有相关信息,请直接说"抱歉,我没有找到相关信息"。
【参考资料】
{context}
【问题】
{question}
【回答】"""
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.3
)
return response.choices[0].message.contentAgent的能力取决于它能调用哪些工具。工具的定义需要明确描述功能、参数和返回值,以便模型理解何时调用。
import json
def get_weather(city: str) -> str:
"""获取城市天气信息"""
# 实际实现中调用天气API
return f"{city}:晴,25°C"
def search_news(topic: str, limit: int = 3) -> str:
"""搜索新闻"""
# 实际实现中调用新闻API
return f"关于{topic}的最新新闻:..."
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的当前天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"}
},
"required": ["city"]
}
}
},
{
"type": "function",
"function": {
"name": "search_news",
"description": "搜索最新新闻",
"parameters": {
"type": "object",
"properties": {
"topic": {"type": "string", "description": "新闻主题"},
"limit": {"type": "integer", "description": "返回条数"}
},
"required": ["topic"]
}
}
}
]Agent的典型工作流程是循环执行“思考→调用→观察→继续思考”,直到任务完成:
def agent_loop(user_request):
messages = [{"role": "user", "content": user_request}]
max_iterations = 10
for _ in range(max_iterations):
# 第一步:模型思考并决定调用哪个工具
response = client.chat.completions.create(
model="gpt-4",
messages=messages,
tools=tools,
tool_choice="auto"
)
message = response.choices[0].message
messages.append(message)
# 第二步:如果没有工具调用请求,说明任务完成
if not message.tool_calls:
return message.content
# 第三步:执行工具调用
for tool_call in message.tool_calls:
func_name = tool_call.function.name
args = json.loads(tool_call.function.arguments)
if func_name == "get_weather":
result = get_weather(args["city"])
elif func_name == "search_news":
result = search_news(args["topic"], args.get("limit", 3))
else:
result = f"未知工具: {func_name}"
# 将工具结果加入对话
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": result
})
return "任务执行超时,请简化请求后重试"向量数据库是大模型应用的重要基础设施。以下是在Docker中部署Chroma的示例:
# docker-compose.yml
version: "3.8"
services:
chromadb:
image: ghcr.io/chroma-core/chroma:latest
ports:
- "8000:8000"
environment:
- IS_PERSISTENT=TRUE
volumes:
- ./chroma_data:/chroma/chroma
command: uvicorn chromadb.app:app --reload --workers 1 --host 0.0.0.0 --port 8000Prompt的质量直接决定输出质量。好的Prompt需要:
大模型调用是按Token计费的,以下是优化策略:
大模型是非确定性的,输出质量需要持续监控:
大模型应用开发的终极目标,不是做出一个“聊天界面”,而是将AI能力无缝融入产品,让用户感受不到AI的存在,只感受到“这个产品好聪明”。
当AI能力成为一种像水电一样的基础设施,真正的竞争将回归到产品设计和用户体验。未来的优秀产品,不会是“一个能聊天的App”,而是“一个懂你的App”。
2026年是大模型应用开发从“能用”到“好用”的关键转折期。技术壁垒在降低,认知壁垒在升高——理解业务、设计体验、构建数据飞轮的能力,将比调用API的能力重要百倍。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。