產(chǎn)品宣傳網(wǎng)站開發(fā)網(wǎng)站移動轉換
鶴壁市浩天電氣有限公司
2026/01/24 10:48:56
產(chǎn)品宣傳網(wǎng)站開發(fā),網(wǎng)站移動轉換,阿里云oss可以做網(wǎng)站,手機微信小程序怎么制作簡介
本文介紹了如何為AI Agent接入Dify知識庫實現(xiàn)RAG功能#xff0c;區(qū)分了Agent的記憶與知識概念。通過實戰(zhàn)演示#xff0c;展示了創(chuàng)建知識庫、編寫檢索工具及將新技能加入Agent的過程。最終#xff0c;Agent同時擁有了記憶和知識#xff0c;成…簡介本文介紹了如何為AI Agent接入Dify知識庫實現(xiàn)RAG功能區(qū)分了Agent的記憶與知識概念。通過實戰(zhàn)演示展示了創(chuàng)建知識庫、編寫檢索工具及將新技能加入Agent的過程。最終Agent同時擁有了記憶和知識成為真正智能的私人助理。文章強調了萬物皆可為工具的通用賦能方法是學習大模型應用的實用指南。我們通過Store機制成功讓Agent擁有了“長期記憶”它能記住“你是誰”。我們的Agent現(xiàn)在已經(jīng)非?!叭诵曰绷怂苡涀υ挄捰洃?、也能“認識”你長期記憶。但是它依然“無知”——它不了解你所在領域的專業(yè)知識比如我們公眾號寫過的所有文章。 你“你好張三?!盇gent調用SaveUserInfo記住了你 Agent“你好張三我記住你啦” 你“那么根據(jù)咱們公眾號《AI Agent入門 #2》的文章ReAct框架是什么” AgentThought: 用戶在問一個具體文章的內容我的工具箱里沒有工具能回答這個問題... Final Answer: 抱歉我無法訪問你公眾號的具體文章內容...今天我們將為Agent進行一次關鍵的“技能升級”為它裝備一個可以無限擴展的“第二大腦”我們將接入Dify知識庫讓它學會一項全新的、至關重要的技能——“查資料”一、【概念篇】“記憶” vs “知識” (RAG)這是本系列最關鍵的概念區(qū)分請務必仔細理解Agent的“記憶” (Memory)這是Agent關于交互歷史和自身狀態(tài)的記錄。會話記憶 (Short-Term)我們用ChatMessageHistory實現(xiàn)。它回答“我們剛才聊了啥”長期記憶 (Long-Term)我們用Store實現(xiàn)。它回答“我記得你是誰”Agent的“知識” (Knowledge / RAG)這是Agent關于外部世界的信息。它是通過“工具(Tool)”去獲取的本身不屬于Agent的“記憶”而是Agent的一項“技能”。比喻查天氣QueryWeather是Agent的一項技能。同理**查知識庫RAG**也是Agent的一項技能我們可以叫它QueryKnowledgeBase。本章的核心我們不是在為Agent添加“第三種記憶”而是為它的“工具箱”里添加一個“圖書館借閱卡”工具這項新技能的名字就叫RAG檢索增強生成。二、準備“圖書館”Dify知識庫我們要打造QueryKnowledgeBase這項技能首先需要一個“圖書館”讓它去查。Dify就是我們最好的選擇。部署或注冊Dify確保你的Dify服務正在運行本地或云端。創(chuàng)建知識庫在Dify中創(chuàng)建一個新知識庫例如my_agent_knowledge并上傳你希望Agent掌握的文檔。Pro-Tip強烈建議把我們這個系列的前幾篇文章存為.md文件上傳進去創(chuàng)建應用并獲取API密鑰在Dify中創(chuàng)建一個“聊天助手”類型的應用。在該應用的“上下文”設置中關聯(lián)你剛剛創(chuàng)建的my_agent_knowledge知識庫。在“訪問API”頁面找到你的API密鑰 (Secret Key)和API基礎URL (Base URL)。記下這兩個值它們是Agent使用“圖書館借閱卡”的憑證。三、【實戰(zhàn)篇】打造“知識庫檢索”工具現(xiàn)在讓我們回到Python代碼。我們將創(chuàng)建一個新的工具文件knowledge_tools.py。第一步安裝依賴庫我們只需要requests庫來調用Dify的HTTP API。pip install requests第二步編寫“知識庫檢索”工具代碼這個工具函數(shù)的核心就是調用Dify的/chat-messagesAPI。# -----------------------------------------------------# 喵喵實戰(zhàn)室Agent知識庫工具 (knowledge_tools.py)# -----------------------------------------------------import requestsimport jsonimport os# --- 從環(huán)境變量或配置文件中讀取你的Dify密鑰 ---# 確保在運行前設置好環(huán)境變量# export DIFY_API_KEYyour_secret_key# export DIFY_API_URLhttps://api.dify.ai/v1 (Dify云端的地址本地部署請修改)DIFY_API_KEY os.environ.get(DIFY_API_KEY)# 注意這里的URL是Dify API的“聊天”端點DIFY_API_URL os.environ.get(DIFY_API_URL, https://api.dify.ai/v1) /chat-messagesdef query_dify_knowledge_base(query: str) - str: 一個專用于查詢“AI喵智能體”公眾號內部知識的工具。 當你需要回答關于 AI Agent、Dify、Ollama、Stable Diffusion 等我們教程中特定內容的問題時請使用此工具。 請勿用此工具查詢天氣、股票或執(zhí)行代碼。 參數(shù): query (str): 用戶關于私有知識的具體問題。 返回: str: Dify知識庫返回的答案。 print(f--- [工具被調用query_dify_knowledge_base] ---) print(f--- [工具入?yún)uery{query}] ---) ifnot DIFY_API_KEY: return錯誤DIFY_API_KEY 未設置。無法查詢知識庫。 # Dify API的請求頭 headers { Authorization: fBearer {DIFY_API_KEY}, Content-Type: application/json, } # Dify API的請求體 # conversation_id 確保Dify內部也能管理上下文 # query 是用戶的提問 # user 是一個唯一的用戶標識 body { inputs: {}, query: query, response_mode: blocking, # 我們需要一個同步的答案而不是流式 conversation_id: , user: my_agent_system } try: response requests.post(DIFY_API_URL, headersheaders, datajson.dumps(body)) response.raise_for_status() # 如果請求失敗則拋出異常 response_json response.json() # 解析Dify返回的答案 answer response_json.get(answer, 未在知識庫中找到明確答案。) print(f--- [工具返回值{answer[:100]}...] ---) return answer except requests.exceptions.RequestException as e: error_message f錯誤連接Dify知識庫失敗 - {e} print(f--- [工具異常{error_message}] ---) return error_message except Exception as e: error_message f錯誤解析Dify響應時發(fā)生異常 - {e} print(f--- [工具異常{error_message}] ---) return error_message# --- 本地測試 ---if __name__ __main__: ifnot DIFY_API_KEY: print(請先設置 DIFY_API_KEY 和 DIFY_API_URL 環(huán)境變量) else: # 假設你的知識庫里有關于ReAct的文章 test_query ReAct是什么 answer query_dify_knowledge_base(test_query) print(f
測試提問{test_query}) print(f知識庫回答{answer})執(zhí)行結果[代碼講解]極其重要的Docstring我們明確告訴Agent什么時候該用問公眾號教程時什么時候不該用查天氣時這個工具。這是Agent能正確“規(guī)劃”的關鍵API調用我們嚴格按照Dify的API文檔構造了headers和body。同步響應我們設置了response_mode: blocking因為Agent的ReAct循環(huán)需要一個同步、阻塞的工具。它必須拿到這個工具的Observation觀察結果才能進行下一步Thought思考。四、【終極組裝】將“知識庫技能”加入Agent現(xiàn)在我們再次回到main_with_ltm.py上一期的主文件把這個新工具“插”進去。# ... (導入所有上一期的庫) ...from langchain_core.messages import HumanMessage, AIMessagefrom langchain_core.chat_history import ChatMessageHistoryfrom langgraph.store.memory import InMemoryStorefrom dataclasses import dataclassfrom typing_extensions import TypedDict# # 步驟1導入我們的新工具# from agent_tools import ( get_realtime_weather, get_stock_realtime_price, read_file, write_file, execute_python_code)# 導入上一期的LTM工具 (假設你已將其保存為 ltm_tools.py)from ltm_tools import save_user_info, get_user_info # 導入本期的RAG工具from knowledge_tools import query_dify_knowledge_base # -- 新增導入# ... (初始化 LLM、Store、定義AgentContext、UserInfo 等代碼與上期相同) ...# -----------------------------------------------------# 步驟2將“知識庫工具”加入工具列表# -----------------------------------------------------print([4/6] 正在封裝所有工具 雙手 (新增RAG技能)...)tools [ # Web工具 Tool(nameQueryWeather, funcget_realtime_weather, description...), Tool(nameQueryStockPrice, funcget_stock_realtime_price, description...), # 本地工具 Tool(nameReadFile, funcread_file, description...), Tool(nameWriteFile, funcwrite_file, description...), Tool(nameExecutePythonCode, funcexecute_python_code, description...), # 長期記憶(LTM)工具 Tool(nameSaveUserInfo, funcsave_user_info, description...), Tool(nameGetUserInfo, funcget_user_info, description...), # # -- 新增知識庫(RAG)工具 -- # Tool( nameQueryKnowledgeBase, funcquery_dify_knowledge_base, description一個專用于查詢“AI喵智能體”公眾號內部知識的工具。 當你需要回答關于 AI Agent、Dify、Ollama、Stable Diffusion 等我們教程中特定內容的問題時請使用此工具。 請勿用此工具查詢天氣、股票或執(zhí)行代碼。 )]# ... (后續(xù)的 Prompt 模板、Agent組裝、對話循環(huán)代碼與上一期完全相同) ...# ... (你只需要修改 tools 列表其他一切照舊) ...[代碼講解] 看這就是我們Agent框架的魔力我們不需要修改任何主邏輯只需要import新工具。在tools列表中添加一個新的Tool對象。Agent的“大腦”會自動通過讀取description學會“哦我多了一項新技能是用來查私有知識的”。后臺留言“實戰(zhàn)”獲取完整源碼五、見證奇跡會“查資料”的Agent現(xiàn)在運行你最新的main.py腳本。讓我們來一次“跨記憶、跨技能”的終極測試第一次對話 (測試長期記憶): 你你好我叫張三。 Agent:你好張三很高興認識你。有什么我可以幫助你的嗎第二次對話 (測試知識庫/RAG技能): 你根據(jù)咱們公眾號的教程ReAct是什么 Agent:ReAct是一種框架其核心在于通過建立結構化的工作流讓AI能夠主動且智能地調用工具從而彌補自身能力的不足。它的關鍵作用是推動AI在執(zhí)行任務時“把話說清楚把事做扎實”通過協(xié)調“大腦”LLM與“雙手”工具的協(xié)作提升解決問題的效率與準確性。第三次對話 (測試混合記憶 多技能調用): 你根據(jù)咱們公眾號的教程ReAct是什么總結一下然后幫我查查上海的天氣最后把這兩樣東西都寫入一個文件文件名就叫 ‘我的學習筆記.txt’。 Agent:搞定我已經(jīng)將ReAct框架的核心總結和上海的天氣全部寫入了 我的學習筆記.txt 文件中。成功了我們的Agent現(xiàn)在同時擁有了完整的“記憶”和“知識”它成為了一個真正智能的、能干活的私人助理總結與預告今天我們?yōu)锳gent裝備了一項至關重要的新技能知識庫檢索RAG。我們徹底厘清了“記憶狀態(tài)”與“知識技能”的邊界。我們的Agent現(xiàn)在能思考ReAct有記憶會話記憶 長期記憶/Store有技能天氣、股票、文件、代碼、知識庫更重要的是我們掌握了為Agent“賦能”的通用方法**萬物皆可為工具。 今天我們接入了Dify知識庫未來你完全可以用同樣的方式**為它接入send_email發(fā)送郵件、control_smart_light控制智能家居、post_wechat_message發(fā)送企業(yè)微信等任何你能想到的API或SDK。Agent的能力邊界就是你工具箱的邊界從理論和功能上講它已經(jīng)是一個完全體的Agent了。六、如何學習AI大模型我在一線互聯(lián)網(wǎng)企業(yè)工作十余年里指導過不少同行后輩幫助很多人得到了學習和成長。我意識到有很多經(jīng)驗和知識值得分享給大家也可以通過我們的能力和經(jīng)驗解答大家在人工智能學習中的很多困惑所以在工作繁忙的情況下還是堅持各種整理和分享。但苦于知識傳播途徑有限很多互聯(lián)網(wǎng)行業(yè)朋友無法獲得正確的資料得到學習提升故此將并將重要的AI大模型資料包括AI大模型入門學習思維導圖、精品AI大模型學習書籍手冊、視頻教程、實戰(zhàn)學習等錄播視頻免費分享出來。這份完整版的大模型 AI 學習和面試資料已經(jīng)上傳CSDN朋友們如果需要可以微信掃描下方CSDN官方認證二維碼免費領取【保證100%免費】第一階段從大模型系統(tǒng)設計入手講解大模型的主要方法第二階段在通過大模型提示詞工程從Prompts角度入手更好發(fā)揮模型的作用第三階段大模型平臺應用開發(fā)借助阿里云PAI平臺構建電商領域虛擬試衣系統(tǒng)第四階段大模型知識庫應用開發(fā)以LangChain框架為例構建物流行業(yè)咨詢智能問答系統(tǒng)第五階段大模型微調開發(fā)借助以大健康、新零售、新媒體領域構建適合當前領域大模型第六階段以SD多模態(tài)大模型為主搭建了文生圖小程序案例第七階段以大模型平臺應用與開發(fā)為主通過星火大模型文心大模型等成熟大模型構建大模型行業(yè)應用。學會后的收獲? 基于大模型全棧工程實現(xiàn)前端、后端、產(chǎn)品經(jīng)理、設計、數(shù)據(jù)分析等通過這門課可獲得不同能力? 能夠利用大模型解決相關實際項目需求 大數(shù)據(jù)時代越來越多的企業(yè)和機構需要處理海量數(shù)據(jù)利用大模型技術可以更好地處理這些數(shù)據(jù)提高數(shù)據(jù)分析和決策的準確性。因此掌握大模型應用開發(fā)技能可以讓程序員更好地應對實際項目需求? 基于大模型和企業(yè)數(shù)據(jù)AI應用開發(fā)實現(xiàn)大模型理論、掌握GPU算力、硬件、LangChain開發(fā)框架和項目實戰(zhàn)技能 學會Fine-tuning垂直訓練大模型數(shù)據(jù)準備、數(shù)據(jù)蒸餾、大模型部署一站式掌握? 能夠完成時下熱門大模型垂直領域模型訓練能力提高程序員的編碼能力 大模型應用開發(fā)需要掌握機器學習算法、深度學習框架等技術這些技術的掌握可以提高程序員的編碼能力和分析能力讓程序員更加熟練地編寫高質量的代碼。1.AI大模型學習路線圖2.100套AI大模型商業(yè)化落地方案3.100集大模型視頻教程4.200本大模型PDF書籍5.LLM面試題合集6.AI產(chǎn)品經(jīng)理資源合集獲取方式有需要的小伙伴可以保存圖片到wx掃描二v碼免費領取【保證100%免費】