React组件 vs AI组件:思维是通的

先看一下,平时写的React组件是什么样的?

// React组件:接收输入,处理状态,返回UIfunction SearchComponent(props) {const [query, setQuery] = useState("");const [results, setResults] = useState([]);async function handleSearch() {    const res = await fetch(`/api/search?q=${query}`);    setResults(await res.json());  }return (    <div>      <input onChange={e => setQuery(e.target.value)} />      <button onClick={handleSearch}>搜索</button>      <ul>{results.map(r => <li>{r.title}</li>)}</ul>    </div>  );}

再看一个AI Agent组件:

// AI组件:接收提示,处理上下文,返回响应import { ChatOpenAI } from "@langchain/openai";import { HumanMessage } from "@langchain/core/messages";async function createAIAgent() {const model = new ChatOpenAI({    model: "gpt-4o-mini",    openAIApiKey: process.env.OPENAI_API_KEY,  });const response = await model.invoke([    new HumanMessage("解释一下React的useEffect")  ]);return response.content;}

看出来了吗?结构一模一样

React组件 AI组件 对应关系
props prompt 输入
state memory 状态/记忆
setState 工具调用 改变状态的方式
UI渲染 文本生成 输出

理解了这个映射,LangChain.js用起来就和写React组件一样自然。


第一个AI组件:让模型说句话

先跑通最简单的调用,建立直觉:

mkdir ai-component-demo && cd ai-component-demonpm init -ynpm install langchain @langchain/openai typescript tsx @types/node

创建 tsconfig.json

{  "compilerOptions": {    "target": "ES2020",    "module": "commonjs",    "lib": ["ES2020"],    "outDir": "./dist",    "rootDir": "./src",    "strict": true,    "esModuleInterop": true,    "skipLibCheck": true,    "forceConsistentCasingInFileNames": true,    "resolveJsonModule": true},"include": ["src/**/*"],"exclude": ["node_modules"]}

写第一个AI组件(src/ai-component.ts):

import { ChatOpenAI } from "@langchain/openai";import { HumanMessage, SystemMessage } from "@langchain/core/messages";// 像创建React组件一样创建AI组件export async function AIAgentComponent(props: {  systemPrompt: string;  userMessage: string;}) {// 1. 初始化"渲染器"(ChatModel)const model = new ChatOpenAI({    model: "gpt-4o-mini",    openAIApiKey: process.env.OPENAI_API_KEY,    temperature: 0.7, // 控制"创造力",像CSS控制样式  });// 2. 构造"虚拟DOM"(Messages)const messages = [    new SystemMessage(props.systemPrompt),    new HumanMessage(props.userMessage),  ];// 3. "渲染"得到输出const response = await model.invoke(messages);// 4. 返回"UI"(文本内容)return response.content;}// 使用(像渲染React组件一样)async function main() {const result = await AIAgentComponent({    systemPrompt: "你是一个前端技术专家,回答简洁明了。",    userMessage: "用一句话解释React的useEffect",  });console.log(result);}main();

运行:

OPENAI_API_KEY=sk-xxxx npx tsx src/ai-component.ts# 输出:useEffect 让你在组件渲染完成后执行副作用,比如获取数据、订阅事件。

流程如下(和React组件渲染流程对比):

React组件渲染 vs AI组件渲染


加个"状态":让组件记住上下文

React组件用useState记状态,AI组件用ChatMessageHistory记对话历史:

import { ChatOpenAI } from "@langchain/openai";import { HumanMessage, SystemMessage, AIMessage } from "@langchain/core/messages";// "状态管理":记住对话历史const conversationHistory: (SystemMessage | HumanMessage | AIMessage)[] = [new SystemMessage("你是一个前端技术专家。"),];export async function AIAgentWithMemory(userInput: string) {const model = new ChatOpenAI({    model: "gpt-4o-mini",    openAIApiKey: process.env.OPENAI_API_KEY,  });// 把用户输入加到历史里(像setState一样)  conversationHistory.push(new HumanMessage(userInput));// "渲染"(模型推理)const response = await model.invoke(conversationHistory);// 把AI回答也加到历史里(更新状态)  conversationHistory.push(response);return response.content;}// 测试多轮对话async function main() {console.log(await AIAgentWithMemory("React是什么?"));console.log(await AIAgentWithMemory("它和Vue有什么区别?")); // 第二问能理解"它"指的是React}

关键点:AI组件的"状态"就是对话历史。每次调用都把完整历史传给模型,模型才能理解上下文。


流式输出:像React的Suspense一样

实际产品里,用户不想等5秒看完整答案。流式输出——一个字一个字往外蹦——体验好得多。

这就像React的Suspense + 流式SSR,用户能越早看到内容越好。

import { ChatOpenAI } from "@langchain/openai";import { HumanMessage } from "@langchain/core/messages";const model = new ChatOpenAI({model: "gpt-4o-mini",openAIApiKey: process.env.OPENAI_API_KEY,streaming: true, // 启用流式});// 流式"渲染"const stream = await model.stream([new HumanMessage("详细解释React的useEffect"),]);// 像读取ReadableStream一样for await (const chunk of stream) {  process.stdout.write(chunk.content); // 逐字打印}

非流式 vs 流式

集成到React组件(这才是前端该干的)

上面的代码是纯TypeScript,实际项目中要集成到React组件里:

// components/AIChat.tsximport { useState } from "react";import { ChatOpenAI } from "@langchain/openai";import { HumanMessage } from "@langchain/core/messages";export function AIChat() {const [input, setInput] = useState("");const [response, setResponse] = useState("");const [isLoading, setIsLoading] = useState(false);const [error, setError] = useState<string | null>(null);const abortControllerRef = useRef<AbortController | null>(null);const handleSubmit = async () => {    setIsLoading(true);    setResponse("");    setError(null);    try {      const model = new ChatOpenAI({        model: "gpt-4o-mini",        openAIApiKey: process.env.NEXT_PUBLIC_OPENAI_API_KEY,        streaming: true,      });      const stream = await model.stream([new HumanMessage(input)]);      for await (const chunk of stream) {        setResponse(prev => prev + chunk.content);      }    } catch (err) {      setError(err instanceof Error ? err.message : "出错了");    } finally {      setIsLoading(false);    }  };// 取消请求const handleCancel = () => {    abortControllerRef.current?.abort();    setIsLoading(false);  };return (    <div>      <input value={input} onChange={e => setInput(e.target.value)} />      <button onClick={handleSubmit} disabled={isLoading}>        {isLoading ? "思考中..." : "发送"}      </button>      {isLoading && <button onClick={handleCancel}>取消</button>}      {error && <div className="error">{error}</div>}      <div>{response}</div>    </div>  );}

这才是前端开发者熟悉的节奏:组件 + 状态 + 错误处理 + 取消请求,和写普通React组件没区别。


第一天小结

今天讲了一件事:React组件和AI组件,思维是通的

概念 React组件 AI组件
输入 props prompt
状态 useState message history
输出 UI 文本/工具调用
更新方式 setState 追加message
流式渲染 Suspense + SSR model.stream()
错误处理 try/catch try/catch
取消操作 AbortController AbortController

明天聊:怎么让AI组件"动手"? 定义Tool(工具),让Agent能查天气、搜文档、调API。这就像给React组件加onClick处理函数,只是现在调用者是AI模型。

传统产品经理,正在成为下个被淘汰的“传统岗位”。

过去画原型、写 PRD、跟进度的“传统技能包”,在AI时代正迅速贬值。63% 的企业转型做 AI 产品!当下的问题不再是“要不要学 AI ”,而是“如何构建 AI 产品”。

前段时间还跟字节、腾讯的资深 AI 产品经理沟通,他们反馈:在大量招人,只要有 AI 相关的项目经验,基本都能拿到面试机会,而且领导很舍得给钱,涨薪 40-60% 很正常!
图片

01

接下来的产品人,得卷AI能力了!

如今AI大火,行业极速发展的背后,懂AI 产品人才却严重稀缺。这不是要你转技术岗,而是要掌握构建 AI 产品的核心方法:

  • 如何将你的领域知识,转化为 AI 产品的核心竞争力?
  • 如何用 AI 技术实现你的产品需求?
  • 如何设计真正懂用户的 AI 交互体验?
  • ……

懂AI,就是产品经理的“救命稻草”!

风口之下,与其焦虑被行业淘汰

不如先人一步享受AI技术带来的红利!

我把AI产品经理的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

(不限年龄!不限岗位!没有代码基础也能学!)

🎁现在扫码,完课还送:

《AI产品面试题库》《AI大模型应用案例集》

02

掌握技术+实战,快速转型!

想成为一名卓越的AI大模型产品经理,需要从技术、到项目实战的全方位转型指南!

**1)**AI产品应用原理解析,产品经理也能听懂!

对于产品经理来说,如果你不懂技术,做不了业务和AI大模型技术衔接、定义不了数据需求,是没法完整的落地一个产品的!

本次课程,专门面向产品经理人群,解析当下最热门的AI产品应用的必备的「大模型」、「多模态」的实际应用和算法原理!解析AI产品应用技术,积累大模型能力!简单易懂,不需要会代码,小白也能掌握!

  • 大模型微调:掌握主流大模型(如DeepSeek、Qwen等)的微调技术,针对特定场景优化模型性能。学习如何利用领域数据(如制造、医药、金融等)进行模型定制
  • AI Agent智能体搭建:学习如何设计和开发AI Agent,实现多任务协同、自主决策和复杂问题解决。构建垂类场景下的智能助手产品(如制造业中的设备故障诊断Agent、金融领域的投资分析Agent等)

图片

2)超全行业案例解析!

课程详细讲解现阶段,大模型在各个行业和领域的应用现状!包括:零售与电商、教育、医疗、泛娱乐、法律等等10大行业!

详细讲解案例的思路、应用场景,以及背后的技术原理、核心技术!揭秘各个行业、场景的真实现状,和未来产品的发展与机遇!

图片

可以说,讲解完一个案例,就能积累一个AI产品实践的经验!

课程中所涉及到的实战项目,都可以直接在自己的工作中使用,让自己的产品/项目有可借鉴的成功案例!

3)AI产品经理求职专项辅导

课程中会系统的帮助大家拆解字节、腾讯、百度等大厂AI PM岗位JD关键词,掌握AI PM高频面试题型与回答框架;展示 AI 相关能力的关键技巧:Prompt设计、模型评估、A/B测试、成本意识、与算法/工程协作经验;

  • To B类AI产品经理:突出“行业理解 + 技术落地 + 商业闭环”能力的简历结构设计,展示项目成果;从客户需求洞察到技术方案设计,展现端到产品思维;如何评估To B AI产品的可行性、客户付费意愿与实施成本
  • To C类AI产品经理:拆解头部公司岗位JD,将过往尽力转化为AI产品叙事逻辑;从行业趋势、产品设计题、案例分析&数据分析题、技术理解边界等全流程辅导面试;避免无效海投、锁定最适合的AI产品岗位;

图片

03

本次课程,全程直播讲解,能直接对话大佬和专业助教,不懂就问,超详细的案例,小白也能轻松get!

完课后,还赠送《AI产品经理面试题库》、《AI大模型应用案例集》!不断更新中……

图片

适合人群:

  • 想转型AI产品经理、AI项目管理专家、AI产品解决方案等岗位
  • 想进行AI产品创业的创业者
  • 想成为制作AI产品的程序员
  • 想利用AI解决企业问题的管理岗
  • 想在AI方向寻找就业方向的毕业生
  • AI方向前景广阔、待遇好!

目前,很多产品人已经通过完整学习拿到大厂高薪offer,收入嗷嗷涨!

我把AI产品经理的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐