色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Redis Enterprise,LangChain,OpenAI 構建一個電子商務聊天機器人

虹科網絡可視化技術 ? 2023-11-25 08:04 ? 次閱讀

鑒于最近人工智能支持的API網絡開發工具的激增,許多科技公司都在將聊天機器人集成到他們的應用程序中。

LangChain是一種備受歡迎的新框架,近期引起了廣泛關注。該框架旨在簡化開發人員與語言模型、外部數據和計算資源進行交互的應用程序開發過程。它通過清晰且模塊化的抽象,關注構建所需的所有構建模塊,并構建了常用的"鏈條",即構建模塊的組合。例如,對話檢索鏈條可以讓用戶與外部存儲中的數據進行交互,實現真實的對話體驗。

LangChain是如何實現這一目標的呢?OpenAI的語言模型并沒有針對特定企業的具體數據進行訓練或優化。如果您的聊天機器人依賴于該框架,您需要在運行時向OpenAI提供數據。在檢索步驟中,我們使用向量相似性搜索(VSS)從Redis中獲取與用戶查詢相關的數據,并將這些數據與原始問題一起輸入到語言模型中。這要求模型僅使用提供的信息(在人工智能領域中稱為"上下文")來回答問題。

這個鏈條中的大部分復雜性都歸結于檢索步驟。因此,我們選擇將LangChain與Redis Enterprise集成為一個向量數據庫。這種組合為復雜的人工智能和產品開發之間搭建了橋梁。


在這個簡短的教程中,我們將展示如何構建一個會話式的零售購物助手,幫助顧客在產品目錄中發現那些被埋藏的令人感興趣的商品。讀者可以按照提供的完整代碼進行操作。

01

構建你的聊天機器人

首先,安裝項目所需的所有組件。

1、安裝 Python 依賴項

這個項目需要一些Python庫。這些庫存儲在github倉庫的文件中。

pip install langchain==0.0.123pip install openai==0.27.2pip install redis==4.5.3pip install numpypip install pandaspip install gdown

2、準備產品數據集

對于零售聊天機器人,我們選擇使用Amazon Berkeley Objects數據集。該數據集包含了大量適用于生成零售助手的亞馬遜產品。

使用Python的pandas庫來加載和預處理數據集。在加載過程中,我們可以截斷較長的文本字段。這樣一來,我們的數據集會更加精簡,從而節省內存和計算時間。

import pandas as pd
MAX_TEXT_LENGTH=1000 # Maximum num of text characters to use def auto_truncate(val): """Truncate the given text.""" return val[:MAX_TEXT_LENGTH] # Load Product data and truncate long text fields all_prods_df = pd.read_csv("product_data.csv", converters={ 'bullet_point': auto_truncate, 'item_keywords': auto_truncate, 'item_name': auto_truncate })

3、在完全加載了我們的產品數據集之后,進行一些最后的預處理步驟,以清理關鍵詞字段并刪除缺失值。

# Replace empty strings with None and drop all_prods_df['item_keywords'].replace('', None, inplace=True) all_prods_df.dropna(subset=['item_keywords'], inplace=True) # Reset pandas dataframe index all_prods_df.reset_index(drop=True, inplace=True)

4、如果你持續在跟進GitHub上的代碼步驟,可以使用all_prods_df.head()來查看數據框的前幾行。完整的數據集包含超過100,000個產品,但是對于這個聊天機器人,我們將其限制在2500個的子集中。

# Num products to use (subset)NUMBER_PRODUCTS = 2500 # Get the first 2500 productsproduct_metadata = ( all_prods_df .head(NUMBER_PRODUCTS) .to_dict(orient='index')) # Check one of the productsproduct_metadata[0]

02

使用Redis作為向量數據庫的設置

1、LangChain為Redis提供了一個簡單的包裝器,可用于加載文本數據并創建捕捉“含義”的嵌入向量。在以下代碼中,我們準備產品文本和元數據,準備文本嵌入的提供程序(OpenAI),為搜索索引分配一個名稱,并提供一個用于連接的Redis URL。

import os from langchain.embeddings import OpenAIEmbeddingsfrom langchain.vectorstores.redis import Redis as RedisVectorStore # set your openAI api key as an environment variableos.environ['OPENAI_API_KEY'] = "YOUR OPENAI API KEY" # data that will be embedded and converted to vectorstexts = [ v['item_name'] for k, v in product_metadata.items()] # product metadata that we'll store along our vectorsmetadatas = list(product_metadata.values()) # we will use OpenAI as our embeddings providerembedding = OpenAIEmbeddings() # name of the Redis search index to createindex_name = "products" # assumes you have a redis stack server running on local hostredis_url = "redis://localhost:6379"

2、然后,我們將它們整合在一起,創建Redis向量存儲。

# create and load redis with documentsvectorstore = RedisVectorStore.from_texts( texts=texts, metadatas=metadatas, embedding=embedding, index_name=index_name, redis_url=redis_url)

03

創建 LangChain 對話鏈

現在我們準備好創建一個聊天機器人,使用存儲在Redis中的產品數據來進行對話。聊天機器人因其極大的實用性而非常受歡迎。在我們下面構建的場景中,我們假設用戶需要穿搭建議。

1、為了引入更多LangChain功能,我們需要導入幾個LangChain工具。

from langchain.callbacks.base import CallbackManagerfrom langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandlerfrom langchain.chains import ( ConversationalRetrievalChain, LLMChain)from langchain.chains.question_answering import load_qa_chainfrom langchain.llms import OpenAIfrom langchain.prompts.prompt import PromptTemplate

2、正如在介紹中提到的,這個項目使用了一個ConversationalRetrievalChain來簡化聊天機器人的開發。

Redis作為我們的存儲介質,保存了完整的產品目錄,包括元數據和由OpenAI生成的捕捉產品內容語義屬性的嵌入向量。通過使用底層的Redis Vector Similarity Search(VSS),我們的聊天機器人可以直接查詢目錄,以找到與用戶購物需求最相似或相關的產品。這意味著您無需進行繁瑣的關鍵字搜索或手動過濾,VSS會自動處理這些問題。

構成聊天機器人的ConversationalRetrievalChain分為三個階段:

問題創建:在這個階段,聊天機器人評估輸入的問題,并利用OpenAI GPT模型將其與之前的對話交互知識(如果有)結合起來。通過這個過程,機器人可以更好地理解購物者的問題,并為后續的檢索提供準確的上下文。

檢索:在檢索階段,聊天機器人根據購物者表達的興趣項,搜索Redis數據庫,以獲取最佳的可用產品。通過使用Redis Vector Similarity Search(VSS)等技術,機器人能夠快速而準確地檢索與購物者需求相匹配的產品。

問題回答:在這個階段,聊天機器人從向量搜索的查詢結果中獲取產品信息,并利用OpenAI GPT模型幫助購物者瀏覽選項。機器人可以生成適當的回答,提供有關產品特征、價格、評價等方面的信息,以幫助購物者做出決策。

3、雖然LangChain和Redis極大地提升了工作流程的效率,但與大型語言模型(如GPT)進行交互時需要使用"提示(prompt)"來進行溝通。我們創造出一組指令作為提示,以引導模型的行為朝著期望的結果發展。為了獲得聊天機器人的最佳效果,需要進一步完善提示的設置。

template = """Given the following chat history and a follow up question, rephrase the follow up input question to be a standalone question.Or end the conversation if it seems like it's done.Chat History:\"""{chat_history}\"""Follow Up Input: \"""{question}\"""Standalone question:""" condense_question_prompt = PromptTemplate.from_template(template) template = """You are a friendly, conversational retail shopping assistant. Use the following context including product names, descriptions, and keywords to show the shopper whats available, help find what they want, and answer any questions. It's ok if you don't know the answer.Context:\""" {context}\"""Question:\"\""" Helpful Answer:""" qa_prompt= PromptTemplate.from_template(template)

4、接下來,我們定義兩個OpenAI LLM,并分別使用鏈條對其進行封裝,用于問題生成和問題回答。streaming_llm允許我們逐個標記地將聊天機器人的響應傳輸到stdout,從而為用戶提供類似于聊天機器人的用戶體驗。

# define two LLM models from OpenAIllm = OpenAI(temperature=0) streaming_llm = OpenAI( streaming=True, callback_manager=CallbackManager([ StreamingStdOutCallbackHandler() ]), verbose=True, max_tokens=150, temperature=0.2) # use the LLM Chain to create a question creation chainquestion_generator = LLMChain( llm=llm, prompt=condense_question_prompt) # use the streaming LLM to create a question answering chaindoc_chain = load_qa_chain( llm=streaming_llm, chain_type="stuff", prompt=qa_prompt)

5、最后,我們使用ConversationalRetrievalChain將所有三個步驟封裝起來。

chatbot = ConversationalRetrievalChain( retriever=vectorstore.as_retriever(), combine_docs_chain=doc_chain, question_generator=question_generator)

04

虛擬購物助手已就緒

1、請注意,這并不是一個全能的聊天AI。然而,通過Redis的幫助,它存儲了完整的產品庫知識,我們能夠打造出一個相當出色的體驗。

# create a chat history bufferchat_history = []# gather user input for the first question to kick off the botquestion = input("Hi! What are you looking for today?") # keep the bot running in a loop to simulate a conversationwhile True: result = chatbot( {"question": question, "chat_history": chat_history} ) print("\n") chat_history.append((result["question"], result["answer"])) question = input()

2、該機器人將實時與您交互,并根據目錄中的商品幫助您縮小選擇范圍。以下是一個簡單的示例:

Hi! What are you looking for today? >> gold-plated earrings Hi there! I'm happy to help you find the perfect earrings. Do you have a preference for yellow gold plated sterling silver or platinum or gold-plated sterling silver? >> My preference is the yellow gold plated sterling silver Hi there! Are you looking for yellow gold-plated sterling silver earrings with Swarovski Zirconia or Topaz gemstones? We have a few options that might fit the bill. We have yellow gold-plated sterling silver Swarovski Zirconia fancy green stud earrings, yellow gold-plated sterling silver honey topaz stud earrings made with Swarovski Topaz gemstones, and yellow gold-plated sterling silver antique drop earrings set.

3、在聊天機器人用發出“你好!今天你在找什么?”此類的招呼后,嘗試一些示例提示,或者自己創建一個。

05

定制您的鏈條以提高性能

1、LangChain最好的部分之一是每個類抽象都可以擴展或創建自己的預設。我們自定義BaseRetriever類,在返回結果之前執行一些文檔預處理。

import jsonfrom langchain.schema import BaseRetrieverfrom langchain.vectorstores import VectorStorefrom langchain.schema import Documentfrom pydantic import BaseModel class RedisProductRetriever(BaseRetriever, BaseModel): vectorstore: VectorStore class Config: arbitrary_types_allowed = True def combine_metadata(self, doc) -> str: metadata = doc.metadata return ( "Item Name: " + metadata["item_name"] + ". " + "Item Description: " + metadata["bullet_point"] + ". " + "Item Keywords: " + metadata["item_keywords"] + "." ) def get_relevant_documents(self, query): docs = [] for doc in self.vectorstore.similarity_search(query): content = self.combine_metadata(doc) docs.append(Document( page_content=content, metadata=doc.metadata )) return docs

2、我們需要更新檢索類和聊天機器人,以使用上述的自定義實現。

redis_product_retriever = RedisProductRetriever(vectorstore=vectorstore) chatbot = ConversationalRetrievalChain( retriever=redis_product_retriever, combine_docs_chain=doc_chain, question_generator=question_generator)

3、大功告成!現在你的聊天機器人可以在對話中注入更多的產品信息。以下是另一個短對話的示例:

printf("hello Hi! What are you looking for today? >>> fancy footwear for going out Hi there! We have a few great options for women's shoes and sandals. We have the Amazon Brand - The Fix Women's Giana Open Toe Bootie with Pearl Buckle, bright white leather, 9.5 B US, Flavia Women's Beige Fashion Sandals-7 UK (39 EU) (8 US) (FL/236/BEG), Flavia Women's Blue Fashion Sandals-8 UK (40 EU) (9 US) (FL/211/BLU), and The Fix Women's Faris Flat Slide Sandal with Pearls. All of these shoes feature a variety of styles and colors to choose from. Let me know if you have any questions about any of these items! >>> These are nice. However, I am looking for men's shoes. Can you help me? Hi there! We have a great selection of men's formal shoes available. We have Amazon Brand - Symbol Men's Formal Shoes, Amazon Brand - Symbol Men's Leather Formal Shoes, and more. All of our formal shoes are made from high quality materials and feature a variety of closure types, toe styles, and heel types. They also come with a manufacturer's warranty and care instructions to ensure they last. Let me know if you have any questions or need help finding the perfect pair of shoes for you! >>>Can you show me some more men's options? Hi there! I'm here to help you find the perfect item for you. We have a few options available for men's formal shoes. We have the Men's Stainless Steel Link Bracelet, the Amazon Brand - Arthur Harvey Men's Leather Formal Shoes, and the Amazon Brand - Symbol Men's Formal Derby shoes. All of these items feature a variety of features such as leather material, lace-up closure, pointed toe, block heel, and more. If you have any questions about any of these items, please let me know. I'm happy to help! >>> Ok this looks great, thanks!world!");

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    211

    文章

    28524

    瀏覽量

    207539
  • 人工智能
    +關注

    關注

    1792

    文章

    47442

    瀏覽量

    238996
  • VSS
    VSS
    +關注

    關注

    1

    文章

    35

    瀏覽量

    21458
收藏 人收藏

    評論

    相關推薦

    自然語言處理在聊天機器人中的應用

    上歸功于自然語言處理技術的進步。 聊天機器人的工作原理 聊天機器人的核心是對話系統,它能夠處理用戶的輸入(通常是文本形式),并生成相應的回復。這個系統通常包括以下幾個關鍵組件: 語
    的頭像 發表于 12-05 15:24 ?483次閱讀

    馬斯克旗下xAI計劃推出Grok聊天機器人獨立應用

    與當前市場中的佼佼者OpenAI展開競爭。 Grok聊天機器人作為xAI公司的核心產品,直備受關注。此次推出的獨立應用程序,將為Grok提供
    的頭像 發表于 11-29 13:38 ?190次閱讀

    OpenAI醞釀創新:計劃開發集成聊天機器人的瀏覽器

    近日,人工智能領域的佼佼者OpenAI正醞釀著項可能改變瀏覽器行業格局的重大創新——開發款能夠與其聊天機器人無縫結合的網絡瀏覽器。 據知情人士透露,
    的頭像 發表于 11-22 11:06 ?427次閱讀

    NLP技術在聊天機器人中的作用

    的第一個作用是幫助聊天機器人理解用戶的意圖。聊天機器人需要能夠識別用戶的問題或請求,并將其轉化為可執行的任務。這涉及到以下幾個步驟: 詞義消歧 :NLP技術可以幫助聊天機器人理解單詞的
    的頭像 發表于 11-11 10:33 ?468次閱讀

    ChatGPT 與傳統聊天機器人的比較

    近年來最受矚目的、技術基礎 1.1 傳統聊天機器人 傳統聊天機器人通常基于規則引擎構建
    的頭像 發表于 10-25 16:16 ?618次閱讀

    Meta人工智能聊天機器人進軍新市場,挑戰ChatGPT

    Meta近日宣布,其人工智能聊天機器人將進軍21新市場,與OpenAI的ChatGPT展開激烈競爭。
    的頭像 發表于 10-11 16:29 ?313次閱讀

    Meta將推出音頻版聊天機器人

    Meta公司即將在年度Connect大會上揭曉項創新舉措:推出音頻版聊天機器人。據可靠消息,Meta已與Judi Dench、Kristen Bell及John Cena等多位國際知名演員達成合作
    的頭像 發表于 09-24 15:18 ?464次閱讀

    亞馬遜秘密研發AI聊天機器人Metis,挑戰ChatGPT

    科技巨頭亞馬遜近日被曝正在秘密研發款代號為“Metis”的人工智能(AI)聊天機器人,意圖與OpenAI的ChatGPT較高下。Metis,這個名字源于希臘神話中的智慧女神,象征著
    的頭像 發表于 06-26 18:08 ?1077次閱讀

    AI聊天機器人Grok向歐洲X平臺Premium會員開放

    社交平臺X的首席執行官琳達·亞卡里諾宣布,全新研發的Grok人工智能聊天機器人正式向歐洲的X Premium會員提供服務。Grok是X平臺精心打造的款AI聊天機器人,旨在提升歐洲會員的交流體驗。
    的頭像 發表于 05-17 09:38 ?433次閱讀

    使用Ryzen ? AI處理器構建聊天機器人

    探索Ryzen ? AI技術的構建模塊,并展示利用它來構建僅在Ryzen AI筆記本電腦上以最佳性能運行的AI聊天機器人是多么容易。 全
    的頭像 發表于 05-11 14:22 ?8252次閱讀
    使用Ryzen ? AI處理器<b class='flag-5'>構建</b><b class='flag-5'>聊天機器人</b>

    揭秘聊天機器人的“大腦”-大語言模型

    如果說 AI 正處于改變歷史的“iPhone 時刻”,那么聊天機器人就是其首批熱門應用之
    的頭像 發表于 04-17 10:01 ?747次閱讀
    揭秘<b class='flag-5'>聊天機器人</b>的“大腦”-大語言模型

    英偉達引領AI新潮流,推出“Chat with RTX”聊天機器人

    隨著人工智能技術的突飛猛進,英偉達(NVIDIA)再次展現了其技術領導地位,為Windows PC用戶帶來了款革命性的本地聊天機器人應用程序——“Chat with RTX”。這創新應用的推出,不僅標志著人工智能在日常生活中
    的頭像 發表于 02-19 11:11 ?1017次閱讀

    英偉達推出全新AI聊天機器人

    近日,英偉達(Nvidia)宣布推出其全新的AI聊天機器人——“Chat With RTX”。這款聊天機器人被視為英偉達版的ChatGPT,為用戶提供了全新的、本地化的AI交互體驗
    的頭像 發表于 02-19 11:09 ?943次閱讀

    谷歌AI聊天機器人改名為Gemini

    谷歌(Google)近日宣布,旗下備受矚目的AI聊天機器人Bard正式更名為Gemini,并推出了款功能更加強大的付費版本——Gemini Advanced。這戰略調整旨在與微軟、Open
    的頭像 發表于 02-18 11:28 ?1137次閱讀

    RedisLangChain定制AI代理——OpenGPTs

    OpenAI最近推出了OpenAIGPTs——構建定制化AI代理的無代碼“應用商店”,隨后LangChain開發了類似的開源工具Open
    的頭像 發表于 01-13 08:03 ?859次閱讀
    用<b class='flag-5'>Redis</b>為<b class='flag-5'>LangChain</b>定制AI代理——OpenGPTs
    主站蜘蛛池模板: 美女胸被男子强捏视频| 国产亚洲视频中文字幕| 国产精品女上位在线观看| 麻豆区蜜芽区| 一本之道加勒比在线观看| 国产精品久久久久久久AV下载 | 新版孕妇bbwbbwbbw| 91久久精一区二区三区大全| 国产产乱码一二三区别免费| 日韩AV成人无码久久精品老人| 99久久精品国产一区二区三区| 美女扒开尿口让男生添动态图| 中文字幕1| 麻豆精品国产剧情观看| 中文有码中文字幕免费视频| 和姐姐做插得很深| 亚洲欧洲一级| 老师你奶真大下面水真多| 2019天天射干| 尿孔 调教 扩张| 凹凸精品视频分类视频| 色偷偷亚洲天堂| 国产午夜精品视频在线播放| 亚洲高清免费在线观看| 久久sese| 992交通广播| 欧美精品亚洲精品日韩专区一| VIDEOSGGRATIS欧美另类| 欧美精品成人一区二区在线观看| jk制服喷水| 王雨纯羞羞| 九九在线免费视频| 99久久久无码国产AAA精品| 日本毛片久久国产精品| 国产精品久久久久久久久99热| 亚洲国产成人精品青青草原100| 黄色网址在线看| 999国产高清在线精品| 色婷婷亚洲精品天天综合影院 | 午夜向日葵高清在线观看| 国产色婷婷亚洲99麻豆|