You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用LangChain和OpenAI实现相似输入匹配特定默认响应?

使用LangChain + OpenAI构建相似语句匹配的对话系统

需求概述

构建对话系统,当用户输入与预设示例语句语义相似时,返回对应预设响应;无匹配示例时可礼貌回应。

预设示例(中文翻译)

语句:您好,我需要更新我的电子邮箱地址。
回复:感谢您告知我们,请在此提供您的新邮箱。

语句:您好,我有一些关于我的案件的问题,能给我回个电话吗?
回复:您好,我们的案件经理会尽快给您回电。

实现方案

1. 依赖安装

执行以下命令安装所需依赖:
pip install langchain openai python-dotenv

2. 核心代码实现

from langchain.llms import OpenAI
from langchain.prompts import FewShotPromptTemplate, PromptTemplate
from langchain.example_selectors import SemanticSimilarityExampleSelector
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
import os
from dotenv import load_dotenv

# 加载OpenAI API密钥(需提前在.env文件中配置OPENAI_API_KEY)
load_dotenv()

# 结构化存储预设的语句-回复对
examples = [
    {
        "statement": "您好,我需要更新我的电子邮箱地址。",
        "answer": "感谢您告知我们,请在此提供您的新邮箱。"
    },
    {
        "statement": "您好,我有一些关于我的案件的问题,能给我回个电话吗?",
        "answer": "您好,我们的案件经理会尽快给您回电。"
    }
]

# 定义单个示例的模板格式
example_template = """
语句:{statement}
回复:{answer}
"""
example_prompt = PromptTemplate(
    input_variables=["statement", "answer"],
    template=example_template
)

# 初始化语义相似度选择器:基于嵌入向量匹配用户输入与示例
example_selector = SemanticSimilarityExampleSelector.from_examples(
    examples,
    OpenAIEmbeddings(),
    FAISS,
    k=1  # 选取最相似的1条示例
)

# 构建Few-Shot提示模板
few_shot_prompt = FewShotPromptTemplate(
    example_selector=example_selector,
    example_prompt=example_prompt,
    prefix="请参照以下示例,对用户输入给出对应回复;若无相似示例,可礼貌回应。",
    suffix="语句:{user_input}\n回复:",
    input_variables=["user_input"],
    example_separator="\n\n"
)

# 初始化OpenAI模型(temperature=0保证输出稳定性)
llm = OpenAI(temperature=0)

# 定义对话响应函数
def get_response(user_input):
    formatted_prompt = few_shot_prompt.format(user_input=user_input)
    return llm(formatted_prompt)

# 测试用例
print(get_response("我想修改我的邮箱地址"))
print(get_response("关于我的案子有疑问,能给我回个电话吗?"))

关键逻辑说明

  • 语义相似度匹配:通过SemanticSimilarityExampleSelector调用OpenAI嵌入模型,将用户输入和预设示例转化为向量,计算相似度后选取最匹配的示例
  • 向量存储:使用FAISS轻量级向量数据库存储示例向量,实现快速检索
  • 稳定输出:将LLM的temperature设为0,避免生成随机内容,确保匹配示例时输出预设响应

内容的提问来源于stack exchange,提问作者iambdot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:45:24