AI Agent 赋能智能客服:Vue3 + LangChain + 千问落地实战

AI Agent 赋能智能客服:Vue3 + LangChain + 千问落地实战本文适合有前端基础的开发者阅读 我会从整体架构 出发 详解如何用 Vue3 TypeScript 做前端交互 Python3 LangChain 千问 Qwen 做后端推理 构建一个真正能落地的智能客服 Agent 代码干货较多 建议收藏 传统规则式客服的问题显而易见 传统规则客服 AI Agent 智能客服 问答对数量有限 无法覆盖长尾 大模型理解任意自然语言

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



👋 本文适合有前端基础的开发者阅读。我会从整体架构出发,详解如何用Vue3 + TypeScript做前端交互、Python3 + LangChain + 千问(Qwen)做后端推理,构建一个真正能落地的智能客服 Agent。代码干货较多,建议收藏 👍

传统规则式客服的问题显而易见:

传统规则客服 AI Agent 智能客服 ❌ 问答对数量有限,无法覆盖长尾 ✅ 大模型理解任意自然语言 ❌ 只能精确匹配关键词 ✅ 精准意图识别 + 实体抽取 ❌ 更新成本高,每次改规则 ✅ 知识库更新无需改代码 ❌ 无法多轮对话 ✅ LangChain Memory 全程记忆

💡 核心目标:

用户用自然语言提问,Agent 自动判断意图,调用后端工具链(知识库检索 → 商品查询 → 订单确认 → 生成回复),形成完整闭环。

系统分为三层:前端交互层Agent 调度层工具能力层

技术 选型理由 Vue3 + TypeScript 前端主流框架,类型安全 + Vite 极速开发 Python3 + FastAPI LangChain 原生支持,AI 后端首选 LangChain RAG / Memory / Tool Calling 开箱即用 千问(Qwen-Max) 中文能力强,支持 Function Calling FAISS 向量数据库 高速语义检索,低成本部署

3.1 环境依赖
pip install langchain langchain-community langchain-core

pip install fastapi uvicorn

pip install dashscope

pip install sentence-transformers faiss-cpu

pip install pydantic

3.2 RAG 商品知识库构建
from langchain_community.embeddings import DashScopeEmbeddings

from langchain_community.vectorstores import FAISS

from langchain.text_splitter import RecursiveCharacterTextSplitter

product_docs = [

“商品:运动跑步鞋,品牌:Nike,货号:AJ2024,价格:¥699,分类:运动鞋,特点:轻盈透气” ,

“商品:无线蓝牙耳机,品牌:Sony,型号:WF-1000XM5,价格:¥1599,分类:数码,特点:主动降噪” ,

“商品:智能手环,品牌:华为,型号:Band 8,价格:¥299,分类:穿戴设备,特点:心率监测、睡眠追踪” ,

]

splitter = RecursiveCharacterTextSplitter(chunk_size= 100 , chunk_overlap= 20 )

docs = splitter.create_documents(product_docs)

embeddings = DashScopeEmbeddings(

model= 

“text-embedding-v3” ,

dashscope_api_key= 

“your-dashscope-api-key”

)

vectorstore = FAISS.from_documents(docs, embeddings)

vectorstore.save_local( “faiss_product_index” )

print(f “商品知识库构建完成,共索引 {len(docs)} 条” )

3.3 定义 Agent Tools
from langchain.agents import AgentExecutor, create_react_agent

from langchain.tools import tool

@tool (description= “检索平台商品信息。” )

def search_product(query: str) -> str:

results = retriever.get_relevant_documents(query) 

if not results:

return “未找到相关商品,请联系人工客服。”

return “ ” .join([f “- {r.page_content}” for r in results])

@tool (description= “查询用户订单状态。” )

def check_order(order_id: str) -> str:

mock_orders = { 
“ORD”

“已发货,预计3天后送达” ,

“ORD”

“运输中,运单号:CN” ,

“ORD”

“已签收” ,

}

return mock_orders. get(order_id, “未找到订单信息,请核实订单号” )

@tool (description= “转人工客服处理。” )

def escalate_to_human(reason: str) -> str:

return f “正在为您转接人工客服,请稍候…(原因:{reason})”

tools = [search_product, check_order, escalate_to_human]

3.4 构建 ReAct Agent(核心)
from langchain_community.chat_models import ChatDashScope

from langchain.memory import ConversationBufferMemory

from langchain.prompts “import PromptTemplate

初始化千问大模型

llm = ChatDashScope(

model_name= 

“qwen-max” ,

dashscope_api_key= 

“your-dashscope-api-key” ,

temperature= 

0.3

)

对话记忆

memory = ConversationBufferMemory(

memory_key= 

“chat_history” ,

return_messages= 

True,

output_key= 

“output”

)

构建 ReAct Agent

prompt = PromptTemplate.from_template(

你是一个专业的平台品类智能客服。

处理流程:

1 . 理解用户问题(意图识别)

2 . 判断是否需要调用工具

3 . 综合信息生成回复

4 . 无法处理时转人工

历史对话:{chat_history}

用户问题:{input}

{agent_scratchpad}

)

agent = create_react_agent(llm, tools, prompt)

agent_executor = AgentExecutor(

agent=agent, tools=tools, memory=memory, verbose= 

True, max_iterations= 5 ,

handle_parsing_errors= 

True

)

def chat(user_input: str) -> str:

“input”
user_input})[ “output” ]

测试

if name == “main” :

print(chat( “我想买一双跑步鞋,有什么推荐吗?” ))

3.5 FastAPI 对接前端
from fastapi import FastAPI, HTTPException

from fastapi.middleware.cors import CORSMiddleware

from pydantic import BaseModel

app = FastAPI(title= “AI 客服 Agent API” )

app.add_middleware(

CORSMiddleware, allow_origins=[ 

”*” ],

allow_credentials= 

True,

allow_methods=[ 

”*” ],

allow_headers=[ 

”*” ],

)

class ChatRequest(BaseModel):

 message: str session_id: str | 

None = None

class ChatResponse(BaseModel):

reply: str session_id: str 

@app .post( /api/chat” ,response_model=ChatResponse)

async def chat_endpoint(req: ChatRequest):

reply = chat(req.message) 

return ChatResponse(reply=reply, session_id=req.session_id or “default” )

启动:uvicorn main:app –reload –port 8000

⚠️ 千问 API Key:

在 阿里云百炼平台 申请。生产环境务必限定 API 调用域名,防止 Key 泄漏。

4.1 项目初始化
npm create vite@latest customer-service – –template vue-ts

cd customer-service && npm install

npm install axios pinia

4.2 Pinia 聊天状态管理
import { defineStore } from ‘pinia’

import { ref } from ‘vue’

import axios from ‘axios’

import type { Message } from ‘../types/chat’

export const useChatStore = defineStore( ‘chat’ , () => {

const messages = ref ([])

const isLoading = ref( false)

const addUser = (content: string) =>

messages.value.push({ id: crypto.randomUUID(), role: 

‘user’ ,

 content, timestamp: Date.now(), }) 

const addAssistant = () => {

const id = crypto.randomUUID()

messages.value.push({ id, role: 

‘assistant’ , content: “ ,

 timestamp: Date.now(), loading: 

true,

}) 

return id

}

const updateAssistant = (id: string, content: string) =>

}

const sendMessage = async (content: string) => {

addUser(content) isLoading.value = 

true

const loadingId = addAssistant()

try { 

const res = await axios.post(

‘http://localhost:8000/api/chat’,

 { message: content } ) updateAssistant(loadingId, res.data.reply) } catch { updateAssistant(loadingId, 

‘抱歉服务出错了,请稍后再试’ )

} finally { isLoading.value = 

false

} 

}

return { messages, isLoading, sendMessage }

})

4.3 ChatWindow 组件
 
  
    
    

 
   
     
     

“header” >🤖 智能客服

 
   
     
     

“messages” ref= “scrollRef” >

 
    
      
      

for= “msg “>in chatStore.messages”

 :key= 

“msg.id”

 class= 

“msg-item”

 :class= 

“msg.role”

 > 
     
       
       

“bubble” >

 

if= “!msg.loading” >{{ msg.content }}

 

else class= “loading” >正在思考…

 
        
          
          

“input-area” >

 

“inputText”

 @keyup.enter= 

“handleSend”

 placeholder= 

“输入您的问题…”

 :disabled= 

“chatStore.isLoading”

 /> 

“handleSend” >发送

 

import { ref, nextTick } from ‘vue’

import { useChatStore }

>from ‘../stores/chat’

const chatStore = useChatStore()

const inputText = ref( “ )

const scrollRef = ref ()

const handleSend = async () => )

}

1. 用户输入:“我想买一双跑步鞋,预算 800 以内”
2. Vue3 前端 POST /api/chat → FastAPI 接收
3. LangChain Agent 识别意图:调用 search_product
4. FAISS 检索 → 匹配到 Nike 跑步鞋 ¥699
5. 千问大模型综合检索结果 + 对话历史,生成自然语言回复
6. 回复写入 Memory,返回前端展示 ✅































🎯 效果:

整个对话在 1-2 秒内完成,用户感知到的是:智能、流畅、能真正解决问题的客服体验——而非传统关键词机器人。

🚀 快速上手建议:

先用千问 API 跑通本地方案,再逐步接入真实商品库和订单系统。建议先在测试环境跑通 LangChain Agent 的 Tool Calling 流程,再做前端 UI。

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

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

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

在这里插入图片描述

小讯
上一篇 2026-04-09 14:30
下一篇 2026-04-09 14:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/253690.html