Type something to search...
在 B2C 行业中利用大型语言模型 (LLM):在 B2C 行业中利用大型语言模型 (LLM):...

在 B2C 行业中利用大型语言模型 (LLM):在 B2C 行业中利用大型语言模型 (LLM):...

在金融服务、零售和电子商务等B2C行业快速发展的环境中,客户对个性化和即时响应的期望达到了前所未有的高度。随着人工智能技术的进步,尤其是大型语言模型(LLMs)的发展,企业在处理客户互动方面发生了剧烈变化。在银行和信用卡服务等行业,客户经常寻求有关产品、福利或交易的详细信息,因此采用基于LLM的自主代理提供了显著的优势。这些代理能够提供实时、智能的响应,转变客户参与方式,同时提高运营效率。

根据我在金融服务行业AI产品开发的经验,这些基于LLM的代理在正确实施时,可以成为游戏规则的改变者。它们提供可扩展的、上下文感知的客户支持,不仅提高了客户满意度,还减少了对人工代理的依赖。但我们如何开发这些智能系统呢?下面,我将带您了解创建一个用于处理与信用卡产品相关的客户查询的代理检索增强生成(RAG)系统的业务问题,并解释LLMs、嵌入、向量数据库和提示工程如何在这个解决方案中结合在一起。

商业问题:创建一个用于信用卡查询的自主代理

想象一下,一家主要的金融服务公司向其客户提供多种信用卡产品。处理客户关于不同信用卡产品的特性、福利、利率和奖励计划的查询是一个劳动密集型的过程。目标是开发一个能够自主、准确并具备深刻上下文理解能力的人工智能代理,以处理大量问题。

用于代理RAG开发的数据源

对于这个用例,我们将使用来自花旗银行的公共数据源,其中包含一系列信用卡产品的详细信息,可以保存为PDF格式。这些文档包含回答客户关于花旗银行信用卡产品查询所需的信息:花旗信用卡概述。完整的代码库和逐步的笔记本可以在这个git仓库中找到。

嵌入与向量数据库创建

为了使AI代理能够从可用的产品PDF中检索相关信息,第一步是创建嵌入。嵌入是文本的向量表示,允许模型在连续的向量空间中捕捉单词、短语甚至完整文档的语义意义。

在这个用例中,下载并处理包含不同信用卡详细信息的PDF文件。使用预训练语言模型 text-embedding-3-small,我们将文本数据转换为稠密的向量表示。这些向量存储在向量数据库中,从而实现高效的相似性搜索。

关键步骤:

  1. 数据摄取:解析并将花旗银行信用卡产品的PDF转换为文本格式。
for file in os.listdir("../credit_card_products"):
    if file.endswith(".pdf"):
        loaders.append(file)     
pdf_loaders = [PyPDFLoader(f"../credit_card_products/{file}") for file in loaders]

pages = []

for loader in pdf_loaders:
    pages.extend(loader.load())

2. 切分:将文本拆分为块,使用换行符 ("\n") 作为分隔符。每个块具有一定的字符重叠。这有助于确保在嵌入或检索等下游处理过程中的文本分割更为顺畅。

text_splitter = CharacterTextSplitter(
    separator="\n",
    chunk_size=1500,
    chunk_overlap=100,
    length_function=len
)
docs = text_splitter.split_documents(pages)

3. 嵌入创建与向量数据库:使用基于LLM的嵌入模型将预处理的文本转换为向量表示,并将嵌入存储在如Pinecone、FAISS或基于MongoDB的自定义解决方案等向量数据库中。我们在这里使用FAISS(Facebook AI相似性搜索)。这将允许对大量文档集进行快速、可扩展的搜索。

embeddings_model = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY, model="text-embedding-3-small")
## Load it into the vector store and embed
vectordb = FAISS.from_documents(docs, embeddings_model)

大型语言模型 (LLM) 和检索增强生成 (RAG)

LLM,例如 GPT 模型,在生成类人文本方面非常强大,但当与 RAG 系统配对时,它们的能力得到了增强,显著减少了大型语言模型 (LLM) 的幻觉,并使自主代理能够提供可靠且具有上下文意识的信息。检索增强生成 (RAG) 通过将其响应生成与从向量数据库检索的相关外部知识相结合,来提高 LLM 的性能。在现实世界中,检索来源可以是任何东西,从企业向量数据库到私有或公共网址(维基百科、谷歌文档等)。

在我们的信用卡代理的上下文中,客户查询可能包括:“Citi 的 Costco Anywhere Visa® Card 的利率 (APR) 是多少?”基于 RAG 的系统将分两步工作:

1. 检索:使用向量数据库根据与查询的嵌入相似性获取相关的花旗信用卡 PDF 的部分内容。

retriever = vectordb.as_retriever(search_type="similarity", search_kwargs={"k": 6})

2. 生成:LLM 获取检索到的上下文,并生成直接回答客户问题的详细且准确的响应。

question = """ """

ai_msg = rag.invoke({"input": question, "chat_history": retriever})

这种方法确保代理的响应既基于真实数据(从数据库中检索)又具有上下文相关性。

提升交互的提示工程

部署基于LLM的代理的一个重要方面是提示工程。在这个过程中,精心设计的提示引导LLM生成准确且具有上下文相关性的输出。当回答与信用卡产品相关的查询时,代理需要能够理解用户意图,从数据库中检索正确的信息,并以对话的方式进行回应。

有效提示工程的示例包括:

  • 上下文跟进:清晰地解释角色和信息领域。我们在这里使用来自langchain_coreChatPromptTemplate
qa_system_prompt = """You are an assistant for question-answering tasks. \
Use the following pieces of retrieved context to answer the question. \
If you don't know the answer, just say that you don't know. \
Use three sentences maximum and keep the answer concise.\

{context}"""

qa_prompt = ChatPromptTemplate.from_messages(
    [
        ("system", qa_system_prompt),
        ("human", "{input}"),
    ]
)

通过微调提示并确保其涵盖查询的各个角度,AI代理能够利用最佳的上下文和指令提供更好的客户体验。

检索聊天历史以增强上下文意识

AI驱动的客户服务面临的挑战之一是,在一系列互动中提供连贯且具有上下文意识的回应。例如,客户可能在一次会话中对信用卡产品提出多个问题。为了保持对话的流畅性,系统必须跟踪先前的互动。

system_prompt = """Given the chat history and a recent user question \
generate a new standalone question \
that can be understood without the chat history. Do NOT answer the question, \
just reformulate it if needed or otherwise return it as is."""

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", system_prompt),
        MessagesPlaceholder("chat_history"),
        ("human", "{input}"),
    ]
)

retriever_with_history = create_history_aware_retriever(
    llm, retriever, prompt
)

检索聊天历史帮助代理保持上下文并提供更个性化的回应。这在客户提出后续问题或在多个产品之间切换的情况下尤其重要。系统确保早期的数据点(例如,客户正在讨论的产品)仍然是当前对话的一部分。

Langchain:协调代理

Langchain 是连接所有这些组件的关键工具:LLMs、向量数据库、RAG 系统和外部 API。它提供了一个集成框架,用于构建这些自主代理,简化开发过程,并确保代理在不同任务之间无缝工作,包括检索、上下文生成和响应制定。

llm = ChatOpenAI(openai_api_key=OPENAI_API_KEY, model="gpt-3.5-turbo-0125")
question_answer_chain = create_stuff_documents_chain(llm, qa_system_prompt)

retriever_with_history = create_history_aware_retriever(
    llm, retriever, prompt
)

chat_history = [""" """]
rag_chain = create_retrieval_chain(retriever_with_history, question_answer_chain)
ai_msg = rag_chain.invoke({"input": question, "chat_history": chat_history}
chat_history.append([HumanMessage(content=question),ai_msg["answer"]])

Langchain 的模块化架构允许轻松集成不同的数据源,无论它们是存储在向量数据库中还是通过 API 访问。它还促进了用户查询的实时协调,结合适当的检索、生成和上下文感知机制。

使用 Flask 和 Streamlit 部署

一旦 RAG 模型经过训练和优化,就可以使用轻量级的 Web 框架如 Flask 或 Streamlit 进行部署。Flask 允许对部署进行更多的自定义和控制,而 Streamlit 则专注于简单性,提供快速原型开发。完整实现可以在 git repo 中找到。

Flask 示例:

app = Flask(__name__)

@app.route('/query', methods=['POST'])
def query_model():
    input_data = request.json['query']
    response = rag_chain.invoke({"input": input_data})
    return jsonify({"response": response})

if __name__ == '__main__':
    app.run(debug=True)

Streamlit 示例:

st.title("信用卡产品查询代理")
user_query = st.text_input("询问有关花旗信用卡的问题:")
if user_query:
    response = rag_chain.invoke({"input": user_query})
    st.write(f"响应: {response}")

关键要点与未来展望

在这篇博客中,我讨论了大型语言模型(LLMs)在B2C行业中的相关性,特别是在客户接触点较多的领域,重点应用于银行产品的对话式AI代理,包括基于RAG的管道的逐步开发和部署,利用流行的lang-chain框架。流程包括定制的工程管道,数据摄取,向量数据库(检索器)的配置。最后展示了使用微型Web框架如Flask进行全面控制或使用Streamlit进行快速原型开发的部署。

在当今快速发展的B2C环境中,提供快速、准确和个性化的客户服务是获得竞争优势的关键。通过将LLMs与向量数据库、检索增强生成(RAG)和提示工程相结合,公司可以部署不仅能回答客户查询的AI代理,而且能够以高上下文准确性进行回答。

感谢阅读本文。要阅读更多精彩的AI故事,请关注我的medium stories

Related Posts

使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
10 个强大的 Perplexity AI 提示,让您的营销任务自动化

10 个强大的 Perplexity AI 提示,让您的营销任务自动化

在当今快速变化的数字世界中,营销人员总是在寻找更智能的方法来简化他们的工作。想象一下,有一个个人助理可以为您创建受众档案,建议营销策略,甚至为您撰写广告文案。这听起来像是一个梦想? 多亏了像 Perplexity 这样的 AI 工具,这个梦想现在成为现实。通过正确的提示,您可以将 AI 转变为您的 个人营销助理。在本文中,我将分享 10 个强大的提示,帮助您自动

阅读更多
10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

人工智能技术,如机器学习、自然语言处理和数据分析,正在重新定义传统设计方法。从自动化重复任务到实现个性化用户体验,人工智能使设计师能够更加专注于战略思维和创造力。随着这一趋势的不断增长,UI/UX 设计师越来越多地采用 AI 驱动的工具来促进他们的工作。利用人工智能不仅能提供基于数据的洞察,还为满足多样化用户需求的创新设计解决方案开辟了机会。 1. 用户角色开发 目的

阅读更多
在几分钟内完成数月工作的 100 种人工智能工具

在几分钟内完成数月工作的 100 种人工智能工具

人工智能(AI)的快速发展改变了企业的运作方式,使人们能够在短短几分钟内完成曾经需要几周或几个月的任务。从内容创作到网站设计,AI工具帮助专业人士节省时间,提高生产力,专注于创造力。以下是按功能分类的100个AI工具的全面列表,以及它们在现实世界中的使用实例。 1. 研究工具 研究可能耗时,但人工智能工具使查找、分析和组织数据变得更加容易。**ChatGPT, Cop

阅读更多
你从未知道的 17 个令人惊叹的 GitHub 仓库

你从未知道的 17 个令人惊叹的 GitHub 仓库

Github 隐藏的宝石!! 立即收藏的代码库 学习编程相对简单,但掌握编写更好代码的艺术要困难得多。GitHub 是开发者的宝藏,那里“金子”是其他人分享的精心编写的代码。通过探索 GitHub,您可以发现如何编写更清晰的代码,理解高质量代码的样子,并学习成为更熟练开发者的基本步骤。 1. notwaldorf/emoji-translate *谁需

阅读更多