实战进阶:结合华为云 ModelArts 与 LangChain,打造企业级智能客服系统

举报
cl16315 发表于 2026/10/30 15:09:01 2026/10/30
【摘要】 当企业大模型部署上线后,如何让它真正服务于业务?本文将结合前两篇的知识,手把手带你使用华为云 ModelArts 托管的大模型 API,搭配 LangChain 框架,打造一个具备私有知识库检索能力的“企业级智能客服系统”。

一、 前言

在前两天的文章中,我们分别探讨了:

1. RAG(检索增强生成):如何通过外部知识库解决大模型幻觉问题。
2. 华为云 ModelArts 部署:如何一键在云端运行开源大模型并获取 API。

但在实际企业落地中,仅仅有一个孤立的模型 API 是不够的。客服场景不仅要求模型“会说话”,更要求它“说得准、说的是企业内部规范”。

今天我们就来串联全流程,用 Python 写一个真正可用于业务的智能客服原型系统。

────────────────────────────────────

二、 系统架构设计

整个企业级智能客服的核心链路如下:

1. 知识库准备:收集企业的《产品说明书》、《售后政策》、《常见FAQ》等文档。
2. 向量化存储:利用嵌入模型(Embedding)将文档切片并存入向量数据库。
3. 华为云大模型推理:通过 ModelArts 提供的在线服务 API 作为大脑。
4. LangChain 调度:将“用户提问 $\rightarrow$ 向量检索 $\rightarrow$ 华为云大模型生成”串联成完整的检索问答链(RetrievalQA)。

────────────────────────────────────

三、 核心代码实现

在编写代码前,请确保安装了相关依赖:

pip install langchain requests chromadb tiktoken

以下是完整的企业级智能客服核心脚本:

import os
from langchain.chains import RetrievalQA
from langchain.embeddings.openai import OpenAIEmbeddings  # 也可以替换为开源Embedding
from langchain.llms.base import LLM
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
import requests

# ==================== 1. 自定义华为云 ModelArts 大模型包装类 ====================
class ModelArtsLLM(LLM):
    endpoint_url: str = "https://your-modelarts-endpoint-url.com/v1/infer"
    api_token: str = "您的华为云-IAM-Token"

    @property
    def _llm_type(self) -> str:
        return "modelarts_llm"

    def _call(self, prompt: str, stop=None) -> str:
        headers = {
            "Content-Type": "application/json",
            "X-Auth-Token": self.api_token
        }
        payload = {
            "inputs": prompt,
            "parameters": {
                "max_new_tokens": 512,
                "temperature": 0.1,  # 客服场景建议温度调低,保证回答严谨
                "top_p": 0.9
            }
        }
        try:
            response = requests.post(self.endpoint_url, headers=headers, json=payload, timeout=60)
            if response.status_code == 200:
                # 根据 ModelArts 实际返回的 JSON 结构解析文本
                result = response.json()
                return result.get("generated_text", "未能解析到回答")
            else:
                return f"调用华为云大模型失败,状态码: {response.status_code}"
        except Exception as e:
            return f"请求异常: {str(e)}"

# ==================== 2. 构建知识库与问答链 ====================
def create_customer_service_bot():
    # 模拟企业售后知识库
    faq_text = """
    问题1:华为云 ModelArts 支持哪些框架?
    回答:ModelArts 支持 TensorFlow、PyTorch、MindSpore 等主流深度学习框架,以及主流开源大模型。
    问题2:购买的云服务资源可以退款吗?
    回答:根据华为云相关政策,包年包月产品在规定退订时间内支持非全额退订,按需付费产品则实时结算不予退款。
    问题3:如何联系人工客服?
    回答:您可以拨打华为云官方客服热线,或在控制台右下角点击“在线咨询”转接人工专员。
    """
    
    with open("company_faq.txt", "w", encoding="utf-8") as f:
        f.write(faq_text)

    # 加载与切分文档
    from langchain.document_loaders import TextLoader
    loader = TextLoader("company_faq.txt", encoding="utf-8")
    documents = loader.load()

    text_splitter = RecursiveCharacterTextSplitter(chunk_size=150, chunk_overlap=20)
    docs = text_splitter.split_documents(documents)

    # 向量化存储(此处简化演示使用默认Embedding,生产环境可换为本地模型)
    embeddings = OpenAIEmbeddings() 
    vectorstore = Chroma.from_documents(docs, embeddings)

    # 实例化我们的华为云大模型
    huawei_llm = ModelArtsLLM()

    # 创建检索问答链
    qa_chain = RetrievalQA.from_chain_type(
        llm=huawei_llm,
        chain_type="stuff",
        retriever=vectorstore.as_retriever(search_kwargs={"k": 1}),
        return_source_documents=True # 返回溯源文档,增强客服可信度
    )
    
    return qa_chain

# ==================== 3. 模拟客户咨询测试 ====================
if __name__ == "__main__":
    bot = create_customer_service_bot()
    
    user_query = "请问购买的云服务能退款吗?"
    print(顾客提问: {user_query}\n)
    
    response = bot({"query": user_query})
    print(f"智能客服回答: \n{response['result']}")
    print(f"\n[参考知识库来源]: {response['source_documents'][0].page_content}")

────────────────────────────────────

四、 生产环境落地的优化方向

如果你想把这个原型推向真实业务上线,建议从以下几个维度进行加固:

1. 多轮对话记忆(Chat History):目前的脚本是一问一答的,客服场景需要引入 ConversationalRetrievalChain 来支持上下文追问(例如用户接着问:“那怎么退呢?”)。
2. 混合检索与重排(Rerank):结合关键词检索(BM25)与向量检索,并加入 Rerank 模型,确保在庞大的企业知识库中精准捞出答案。
3. 敏感词过滤与安全审核:利用华为云内容安全(Moderation)服务,过滤客户的不当言论,并防止大模型吐出违规内容。

────────────────────────────────────

五、 总结

通过今天这篇实战,我们打通了从企业私有知识库切分 $\rightarrow$ 华为云 ModelArts 大模型推理 $\rightarrow$ LangChain 智能编排的全链路。

借助华为云强大的云计算与 AI 基础设施,企业可以非常轻松、安全地构建出具备行业专业度的智能客服系统。

如果你在实现过程中遇到了架构设计或代码报错的问题,欢迎在评论区留言交流!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。