国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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!");

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

    關注

    213

    文章

    31071

    瀏覽量

    222162
  • 人工智能
    +關注

    關注

    1817

    文章

    50094

    瀏覽量

    265256
  • VSS
    VSS
    +關注

    關注

    1

    文章

    36

    瀏覽量

    22058
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    小型自重構機器人能不能幫忙做一個

    當然可以!我直接**給你套能做、能跑、能自己變形的小型自重構機器人完整方案**,適合 ESP32S3 + 舵機 + 簡單結構,不用復雜加工,能跑、能拼接、能變形。 我給你做**最容易實現、成本
    發表于 02-21 19:24

    再談低溫燒結銀的應用:從春晚四家機器人出鏡的幕后推手說起

    、芯片封裝、功率模塊的關鍵支撐;而低溫燒結銀正從實驗室走向機器人、新能源、第三代半導體等產業核心,成為高端電子互連的 隱形推手。 、春晚四家機器人:幕后推手與技術硬核 1 四家
    發表于 02-17 14:07

    探索RISC-V在機器人領域的潛力

    應用,特別是機器人操作系統領域的可行性。MUSE Pi Pro以其強大的K1 AI CPU和官方對主流開源軟件棧的積極適配,成為了非常有吸引力的選擇。 二、 硬件初窺:性能小鋼炮 MUSE Pi Pro
    發表于 12-03 14:40

    高精度機器人控制的核心——基于 MYD-LT536 開發板的精密運動控制方案

    方案; 開發者可直接對接上層 ROS 框架,實現多軸機器人同步控制與智能路徑規劃。 三、典型應用:高精度裝配機器人控制系統 在某高端電子裝配項目中,工程團隊基于 MYD-LT536 構建
    發表于 11-14 15:48

    RK3576機器人核心:三屏異顯+八路攝像頭,重塑機器人交互與感知

    ,已經成為機器人開發者不容忽視的核心處理器。而米爾電子的MYD-LR3576開發板,則以其豐富的接口、穩定的性能和成熟的軟硬件支持,為快速原型驗證和產品開發提供了絕佳的平臺。如果您正在尋找款能夠同時處理復雜視覺任務和豐富交互界
    發表于 10-29 16:41

    小蘿卜機器人的故事

    代替, LED, 有大佬感興趣, 起關注和討論代碼, 這個機器人知名度不高, 可是是機器人的原型, 如果開放接口, 定位和無線充電, 也不失為未來的禮物。 讓我們為小蘿卜工程師的, 自掏腰包救蘿卜
    發表于 10-23 05:24

    機器人競技幕后:磁傳感器芯片激活 “精準感知力”

    支撐機器人競技能力的核心力量,深刻改變著競技機器人的能力邊界。 磁傳感器芯片為機器人運動提供 “精準導航”。在動態平衡系統中,像昆泰芯 KTH71 系列磁傳感器芯片,通過檢測地磁場與運動磁場變化
    發表于 08-26 10:02

    【EASY EAI Orin Nano開發板試用體驗】基于RKLLM大模型的聊天機器人

    計劃在EASY EAI Orin Nano開發板部署QWEN大模型,然后通過部署flask服務將其web化,成為web聊天對話機器人,最后再對接語音識別模塊,最終實現
    發表于 08-07 16:52

    工業機器人的特點

    是實現工業互聯網的基礎,也是第步。 三大優勢:提高產品品質、提高產出、適用范圍廣 機器人在生產上的優勢可以分為提高產品品質、提高產出以及適用范圍廣三方面。提高產品品質 工業機器人
    發表于 07-26 11:22

    小智 AI 聊天機器人 (XiaoZhi AI Chatbot)

    小智 AI 聊天機器人款基于開源硬件的智能對話設備,由開發者“蝦哥”以 ?MIT 許可證發布,旨在幫助用戶入門 AI 硬件開發,將大語言模型(LLM)應用于實體設備中。小智 AI 聊天機器人
    的頭像 發表于 05-30 15:56 ?1.4w次閱讀
    小智 AI <b class='flag-5'>聊天機器人</b> (XiaoZhi AI Chatbot)

    盤點#機器人開發平臺

    地瓜機器人RDK X5開發套件地瓜機器人RDK X5開發套件產品介紹 旭日5芯片10TOPs算力-電子發燒友網機器人開發套件 Kria KR260
    發表于 05-13 15:02

    【「# ROS 2智能機器人開發實踐」閱讀體驗】視覺實現的基礎算法的應用

    的本質是解決“雞與蛋”問題:機器人需要地圖來定位,又需要準確定位來構建地圖。書中從前端(傳感器數據處理)和后端(位姿優化)兩層面解析了SLAM的算法邏輯。 激光雷達和視覺SLAM各有優劣,例如激光
    發表于 05-03 19:41

    【「# ROS 2智能機器人開發實踐」閱讀體驗】機器人入門的引路書

    的非常好的,特別是些流程圖,很清晰的闡釋了概念 很適合作為初學者入門的引路書 還能了解很多技術和框架,破除初學者的自負困境,讓初學者知道功能是由很多開發者維護的,前人已經為各種產品搭建了完善的框架。避免陷入得一個人單打獨斗的錯覺
    發表于 04-30 01:05

    【「# ROS 2智能機器人開發實踐」閱讀體驗】+ROS2應用案例

    整書的內容非常多有476頁。非常厚,像本厚厚的工具書 拿出文章中的小節加以書寫吧 視覺應用:二維碼識別 二維碼識別是視覺應用中的重要部分,它在機器人導航、物品追蹤和信息交互等方面有著廣泛
    發表于 04-27 11:42

    【「# ROS 2智能機器人開發實踐」閱讀體驗】+內容初識

    的運動。例如,對于輪式機器人,可以通過發布速度指令到電機驅動節點,控制機器人的前進、后退、轉彎等動作。書中還介紹了如何使用 PID 控制算法等對運動控制進行優化,提高控制精度和穩定
    發表于 04-27 11:24