返回博客

AI初探:从传统开发者视角理解 AI

·0xPM
AI
系列AI 初探1 / 3
  1. 1AI初探:从传统开发者视角理解 AI
  2. 2Agent 到底是什么?智能体八问
  3. 3从 API、SDK 到 MCP:大模型时代的语义协议演进
  4. 查看系列 →

一、大语言模型(LLM) - 理解为"超级函数"

如果你习惯了传统编程,可以把 LLM 理解为一个非常特殊的函数:

# 传统函数 def calculate(x, y): return x + y # 逻辑明确、可预测 # LLM "函数" def llm(prompt): return "基于海量训练数据的概率性输出" # 逻辑模糊、不完全可预测

关键特点:

  • 输入:自然语言文本(prompt/提示词)
  • 输出:生成的文本
  • 不确定性:同样的输入可能产生不同输出(可以通过参数控制)
  • 能力:理解、推理、生成、翻译、总结等

主流模型厂商:

  • OpenAI (GPT-4, GPT-3.5)
  • Anthropic (Claude)
  • Google (Gemini)
  • Meta (Llama - 开源)
  • 国内:百度文心、阿里通义、智谱 GLM 等

二、从 API 调用到智能应用的演进

第一阶段:简单 API 调用

# 就像调用传统 REST API response = openai.chat.completions.create( model="gpt-4", messages=[{"role": "user", "content": "今天天气怎么样?"}] )

问题:模型没有实时数据、无法执行操作、没有记忆

第二阶段:Prompt Engineering(提示工程)

# 通过精心设计的提示词来"引导"模型 prompt = """ 你是一个专业的客服。用户信息:{user_info} 历史对话:{history} 当前问题:{question} 请根据以上信息回答... """

类比:就像写超详细的函数文档,告诉"函数"该如何表现

第三阶段:RAG(检索增强生成)

用户问题 → 向量数据库检索相关文档 → 将文档+问题一起发给LLM → 生成答案

类比:给 LLM 配备了"搜索引擎"和"知识库"

第四阶段:Agent(智能体)

用户任务 → Agent 分析 → 选择工具 → 执行 → 观察结果 → 继续或结束

类比:把 LLM 从"函数"升级为"会思考的程序员"

三、关键技术概念解析

1. Token 和上下文窗口

Token:文本的最小单位,约等于 0.75 个英文单词或 0.5 个中文字

"Hello World" ≈ 2 tokens "你好世界" ≈ 4 tokens

上下文窗口:模型一次能"看到"的最大 token 数

  • GPT-3.5: 4K-16K tokens
  • GPT-4: 8K-128K tokens
  • Claude: 200K tokens

类比:函数的最大参数长度限制

2. Embedding(向量嵌入)

把文本转换为高维数组(向量),语义相似的文本向量也相似。

text1 = "猫是可爱的动物" text2 = "小猫很萌" text3 = "今天天气不错" embedding1 = [0.2, 0.8, 0.3, ...] # 1536维向量 embedding2 = [0.3, 0.7, 0.4, ...] # 与embedding1相似 embedding3 = [0.9, 0.1, 0.8, ...] # 与前两个差异大

用途:语义搜索、文档检索、推荐系统

类比:类似于特征工程,但是自动完成的

3. 向量数据库

专门存储和检索向量的数据库。

# 传统数据库 SELECT * FROM docs WHERE title LIKE '%天气%' # 向量数据库 find_similar(query_embedding, top_k=5) # 找最相似的5个

常见产品:Pinecone, Weaviate, Chroma, Milvus

4. Function Calling / Tool Use

现代 LLM 可以"调用函数":

# 定义工具 tools = [{ "name": "get_weather", "description": "获取指定城市的天气", "parameters": { "city": {"type": "string"} } }] # LLM 会输出结构化的"函数调用请求" { "tool": "get_weather", "arguments": {"city": "北京"} } # 你的代码真正执行函数 result = get_weather("北京") # 把结果返回给 LLM,它生成最终答案

这就是 Agent 的核心机制!

四、Agent 框架的必要性

为什么需要框架?

传统开发中,你可能这样写代码:

result1 = step1(input) result2 = step2(result1) result3 = step3(result2) return result3

但 AI 应用的挑战在于:

  1. 流程不固定:需要根据情况动态决定下一步
  2. 状态管理复杂:要维护对话历史、工具调用记录等
  3. 错误处理困难:LLM 可能"幻觉"(编造事实)或陷入循环
  4. 提示词工程:每一步都需要精心设计提示
  5. 工具集成:需要与各种外部系统对接

LangChain 解决的问题

# 不用 LangChain - 你需要手写大量胶水代码 def my_agent(question): history = [] max_iterations = 10 for i in range(max_iterations): # 构建复杂的提示词 prompt = build_prompt(question, history, available_tools) # 调用 LLM response = call_llm(prompt) # 解析 LLM 的意图 action = parse_action(response) if action.type == "final_answer": return action.content # 执行工具 result = execute_tool(action.tool, action.input) # 更新历史 history.append(...) return "超出最大迭代次数" # 用 LangChain - 框架帮你处理这些 from langchain.agents import create_react_agent agent = create_react_agent(llm, tools, prompt) result = agent.invoke({"input": question})

五、技术栈类比

AI 生态传统开发生态说明
LLM (GPT-4, Claude)编程语言/运行时核心能力提供者
LangChain, LlamaIndexSpring, Django应用框架
Vector DBRedis, Elasticsearch专用数据存储
Embedding Models编码器/序列化器数据转换
Prompt TemplatesORM 查询/模板引擎抽象层
Tools/Functions第三方库/SDK扩展功能

六、当前生态的局限性

作为传统开发者,你需要意识到:

  1. 不确定性:LLM 输出不能 100% 保证正确
  2. 成本:API 调用按 token 计费,大规模应用成本可观
  3. 延迟:网络 + 推理时间,通常需要几秒
  4. 调试困难:很难像传统代码那样 debug
  5. 版本管理:模型更新可能改变行为

七、实践建议

从传统开发转向 AI 开发:

  1. 先用后造:先调用现有模型 API,理解它能做什么
  2. 从简单开始:先做单轮问答,再做多轮对话,最后尝试 Agent
  3. 重视测试:建立评估集,因为输出不确定
  4. 控制成本:监控 token 使用,考虑缓存策略
  5. 拥抱不确定性:设计容错机制,而非追求完美

评论

加载中…