大模型知识补充二

LangChain的认识

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



在这里插入图片描述




向量数据库

在这里插入图片描述

在这里插入图片描述

分类

在这里插入图片描述



小例子:简单客服机器人代码示例

提供一个基于LangChain的简单客服机器人代码示例,结合了 Retrieval(检索)、Chains(流程) 和 Memory(记忆) 模块。代码会用到 OpenAI 的 GPT-3.5 模型和 FAQ 文档,并支持对话历史记忆。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结合 MySQL 数据库查询 和 GPT-3.5 模型。当用户询问 订单相关问题 时,系统会直接查询 MySQL 数据库;其他问题则使用 FAQ 检索和模型生成回答。

# 安装必要的库(如果未安装)
# pip install langchain openai faiss-cpu mysql-connector-python

import os
import re
from langchain.llms import OpenAI
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.agents import initialize_agent, Tool
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory
import mysql.connector

# 设置你的 OpenAI API 密钥
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"

# MySQL 配置(替换为你的数据库信息)
DB_CONFIG = {
    "host": "localhost",
    "user": "root",
    "password": "your_password",
    "database": "your_database"
}

# 1. 加载并处理 FAQ 文档
def load_faq():
    loader = TextLoader("faq.txt", encoding="utf-8")
    documents = loader.load()
    text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0)
    docs = text_splitter.split_documents(documents)
    return docs

# 2. 创建向量数据库
def create_vector_db(docs):
    embeddings = OpenAIEmbeddings()
    db = FAISS.from_documents(docs, embeddings)
    return db

# 3. 创建 MySQL 查询工具
def create_order_tool():
    def query_order(order_id):
        try:
            conn = mysql.connector.connect(**DB_CONFIG)
            cursor = conn.cursor()
            query = "SELECT status, estimated_delivery FROM orders WHERE order_id = %s"
            cursor.execute(query, (order_id,))
            result = cursor.fetchone()
            cursor.close()
            conn.close()
            if result:
                return f"订单 {order_id} 的状态是:{result[0]},预计送达时间:{result[1]}"
            else:
                return "未找到该订单。"
        except Exception as e:
            return f"查询失败:{str(e)}"
    
    return Tool(
        name="订单查询",
        func=query_order,
        description="当用户提供订单号时,调用此工具查询订单状态"
    )

# 4. 创建对话 Agent
def create_agent(db, order_tool):
    llm = OpenAI(model_name="gpt-3.5-turbo", temperature=0)
    
    # FAQ 检索工具
    def faq_retriever(query):
        docs = db.similarity_search(query, k=3)
        return "\n".join([doc.page_content for doc in docs])
    faq_tool = Tool(
        name="FAQ 检索",
        func=faq_retriever,
        description="当用户的问题属于常见问题时,调用此工具检索 FAQ"
    )
    
    tools = [order_tool, faq_tool]
    
    agent = initialize_agent(
        tools,
        llm,
        agent="zero-shot-react-description",
        verbose=True
    )
    return agent

# 5. 主对话循环
def main():
    # 加载 FAQ 文档
    docs = load_faq()
    db = create_vector_db(docs)
    
    # 创建订单查询工具
    order_tool = create_order_tool()
    
    # 初始化 Agent
    agent = create_agent(db, order_tool)
    
    print("欢迎使用客服机器人!输入 '退出' 结束对话。")
    
    while True:
        user_input = input("你: ")
        if user_input.lower() == "退出":
            break
        
        # 检测是否需要查询订单
        order_id = re.search(r'\b\d{5,10}\b', user_input)  # 假设订单号是5-10位数字
        if order_id:
            # 直接调用订单工具
            response = agent.run(f"订单号 {order_id.group()} 的状态是什么?")
        else:
            # 使用 Agent 自主决策
            response = agent.run(user_input)
        
        print(f"客服机器人: {response}")

if __name__ == "__main__":
    main()

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值