自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于Langbase Memory Agents將任意LLM轉(zhuǎn)為可對話式AI文檔助手 原創(chuàng)

發(fā)布于 2025-2-7 08:31
瀏覽
1收藏

在 2025 年當(dāng)下,大語言模型(LLM)依舊無法獲取用戶的私有數(shù)據(jù)。當(dāng)用戶向其詢問某些與個人相關(guān)的問題時,大語言模型要么憑借推測進行回應(yīng),要么給出錯誤的解答。這體現(xiàn)了大語言模型存在的固有局限性——它們僅基于公開信息進行訓(xùn)練,無法獲取用戶的私有上下文信息。

內(nèi)存代理(Memory Agent)則通過實時且安全地將用戶的私有數(shù)據(jù)與任意大語言模型進行鏈接,有效解決了上述問題。在本教程中,筆者將詳細指導(dǎo)你如何借助Langbase(一個流行的開發(fā)工具平臺,它提供了一套用于構(gòu)建 AI 應(yīng)用的工具和基礎(chǔ)設(shè)施)內(nèi)存代理,把大語言模型轉(zhuǎn)變?yōu)橐粋€能夠與你的個人文檔進行交互對話的人工智能。

目錄

1. 內(nèi)存代理是什么?

2. 使用內(nèi)存代理保護你的數(shù)據(jù)

3. 內(nèi)存代理的應(yīng)用場景

4. 前提條件

5. 步驟 1:創(chuàng)建一個目錄并初始化npm

6. 步驟 2:創(chuàng)建一個管道代理

7. 步驟 3:添加一個.env文件

8. 步驟 4:創(chuàng)建一個內(nèi)存代理

9. 步驟 5:將文檔添加到內(nèi)存代理

10. 步驟 6:生成內(nèi)存嵌入

  • 內(nèi)存嵌入是什么?
  • 為什么需要內(nèi)存嵌入?
  • 如何生成嵌入?

11. 步驟 7:在管道代理(Pipe Agent)中集成內(nèi)存

12. 步驟 8:在Node.js中集成內(nèi)存代理

13. 步驟 9:啟動BaseAI服務(wù)器

14. 步驟 10:運行內(nèi)存代理

15. 結(jié)果

內(nèi)存代理是什么?

內(nèi)存代理是使人機交互變得有意義的關(guān)鍵,它是系統(tǒng)存儲和檢索先前信息的機制,是構(gòu)建真正智能AI代理的核心要素。

實際上,盡管大型語言模型(LLM)看似人性化,但從設(shè)計本質(zhì)上講,其內(nèi)部并未內(nèi)置的存儲機制,在設(shè)計架構(gòu)上屬于無狀態(tài)模式。鑒于現(xiàn)實世界中的任務(wù)往往具有復(fù)雜性與多樣性,若要讓大語言模型在這些實際任務(wù)中發(fā)揮有效作用,為其增添存儲能力就顯得尤為必要。而內(nèi)存代理恰恰在這一需求場景中發(fā)揮關(guān)鍵作用。

Langbase內(nèi)存代理作為一種長期存儲解決方案,其核心設(shè)計目標就在于實現(xiàn)信息獲取、處理、保留以及檢索各個環(huán)節(jié)之間的無縫銜接。借助該內(nèi)存代理,可以動態(tài)地為任意大語言模型添加私有數(shù)據(jù),這不僅使得大語言模型在交互過程中能夠?qū)崿F(xiàn)實時的上下文感知響應(yīng),還能顯著減少“幻覺生成(指的是大語言模型生成的與當(dāng)前上下文不相符或錯誤的信息)”現(xiàn)象。

這些內(nèi)存代理通過整合向量存儲、檢索增強生成(RAG)以及互聯(lián)網(wǎng)訪問功能,構(gòu)建了一個功能強大的托管上下文搜索API。借助這一API,開發(fā)人員能夠開發(fā)出更加智能、功能更為強大的人工智能應(yīng)用程序。

在檢索增強生成(RAG)的架構(gòu)體系中,當(dāng)內(nèi)存與Langbase管道代理(Pipe Agent:是Langbase框架中的一個核心概念,它本質(zhì)上是一個數(shù)據(jù)處理和流轉(zhuǎn)的管道代理)實現(xiàn)直接連接時,便形成了一個完整意義上的內(nèi)存代理。這種組合方式賦予了大語言模型獲取相關(guān)數(shù)據(jù)的能力,并使其能夠基于這些私有數(shù)據(jù)提供精確且上下文貼合的回答,從而有效克服了大語言模型在處理私有數(shù)據(jù)時面臨的諸多局限性。

需要注意的是,管道是一種無服務(wù)器的AI代理,它集成了代理內(nèi)存和工具。

以下將以圖示的方式,對整個過程進行直觀展示:

基于Langbase Memory Agents將任意LLM轉(zhuǎn)為可對話式AI文檔助手-AI.x社區(qū)

使用內(nèi)存代理保護你的數(shù)據(jù)

內(nèi)存代理高度重視數(shù)據(jù)安全,通過將私密信息進行隔離,并在本地環(huán)境或安全的環(huán)境中進行處理,以此作為保障數(shù)據(jù)安全的首要舉措。具體而言,用于創(chuàng)建內(nèi)存嵌入的數(shù)據(jù),在未進行明確配置的情況下,不會被發(fā)送至外部服務(wù)器,這種嚴格的設(shè)定從源頭上確保了敏感信息能夠得到妥善保護。

除此之外,內(nèi)存系統(tǒng)的訪問權(quán)限通過 API 密鑰和相關(guān)權(quán)限設(shè)置進行嚴格管控。只有經(jīng)過授權(quán)的操作才能訪問內(nèi)存系統(tǒng),這一措施有效防止了未經(jīng)授權(quán)的訪問行為發(fā)生。如此一來,這種精心設(shè)計的安全設(shè)置,不僅能夠顯著增強人工智能(AI)能力,更通過全方位保護用戶數(shù)據(jù),切實維護了用戶對系統(tǒng)的信任。

內(nèi)存代理的應(yīng)用場景

以下為這些內(nèi)存代理在實際中的具體應(yīng)用領(lǐng)域:

  • 客戶支持:內(nèi)存代理能夠回調(diào)交互歷史記錄,以此為基礎(chǔ)提供個性化且具備上下文感知能力的支持服務(wù)。
  • 文檔搜索:在處理大型數(shù)據(jù)集、手冊或者常見問題解答文檔時,內(nèi)存代理可實現(xiàn)快速且語義化的搜索功能。
  • 代碼輔助:針對開發(fā)人員,內(nèi)存代理可以提供與項目特定相關(guān)的文檔資料,并基于項目歷史和代碼邏輯給出調(diào)試建議,助力開發(fā)者更高效地完成開發(fā)工作。
  • 知識管理:內(nèi)存代理有助于將團隊內(nèi)部信息進行高效集中存儲,并實現(xiàn)便捷的檢索功能。團隊成員能夠快速獲取所需信息,提升團隊整體的知識流轉(zhuǎn)和工作效率。
  • 教育與培訓(xùn):在教育與培訓(xùn)場景中,內(nèi)存代理可以為學(xué)生或員工提供定制化的培訓(xùn)材料,通過跟蹤學(xué)習(xí)進度,基于存儲的知識庫回答學(xué)習(xí)者提出的問題。
  • 醫(yī)療保?。?/strong>在醫(yī)療領(lǐng)域,內(nèi)存代理可安全地檢索患者記錄或病史信息,為醫(yī)護人員提供準確的數(shù)據(jù)支持,輔助他們做出更精準的醫(yī)療決策。
  • 協(xié)調(diào)工作流程:內(nèi)存代理能夠追蹤項目歷史記錄并結(jié)合各類工具來實現(xiàn)團隊成員之間的協(xié)調(diào)與溝通,確保項目順利推進。
  • 法律合規(guī):在法律事務(wù)和合規(guī)管理方面,內(nèi)存代理可以幫助相關(guān)人員快速參考法律指南和合規(guī)標準,確保決策過程準確無誤且完全符合法律規(guī)定要求。

上述由內(nèi)存代理所賦能的眾多應(yīng)用場景,正不斷開拓新的可能性,并且逐步改變著人工通用智能(AGI)的發(fā)展格局與能力邊界。

前提條件

在著手創(chuàng)建能夠與文檔進行交互的內(nèi)存代理之前,你需要完成以下設(shè)置并準備相應(yīng)工具。

本教程將采用以下技術(shù)棧:

  • BaseAI:一款用于在本地構(gòu)建AI代理的Web框架。
  • Langbase:一個專門用于構(gòu)建和部署無服務(wù)器AI代理的平臺。
  • OpenAI:通過該平臺獲取首選模型所需的 LLM 密鑰。

此外,你還需完成以下操作:

  • 在Langbase平臺上完成注冊,以便獲取API密鑰。
  • 在OpenAI平臺上進行注冊,從而生成所需模型(本演示使用的是 GPT - 4o mini)的 LLM 密鑰 。

當(dāng)上述準備工作全部完成后,我們即可正式開啟后續(xù)操作!  

步驟 1:創(chuàng)建一個目錄并初始化npm

若要著手創(chuàng)建一個能夠與你的文檔實現(xiàn)交互的內(nèi)存代理,首先需要在本地計算機中創(chuàng)建一個專門的目錄,并在該目錄下安裝所有與之相關(guān)的開發(fā)依賴項。具體操作方法為:導(dǎo)航至目標目錄,然后在終端中運行相應(yīng)命令,以此完成相關(guān)設(shè)置:

mkdir my-project
npm init -y
npm install dotenv

此命令會在你的項目目錄下創(chuàng)建一個具有默認值的package.json文件。與此同時,該命令還會執(zhí)行dotenv包的安裝操作。安裝dotenv包的目的在于,使項目能夠從.env文件中順利讀取環(huán)境變量,從而為項目的運行提供必要的配置支持。  

步驟 2:創(chuàng)建一個管道代理

接下來,我們著手創(chuàng)建一個管道代理。管道代理在特性上區(qū)別于其他代理,它屬于無服務(wù)器AI代理,并且配備了代理工具,具備與任意語言或框架協(xié)同運作的能力。管道代理的部署過程較為簡便,僅需借助一個API,就能將 100 多個大型語言模型與任何數(shù)據(jù)相連接,進而助力開發(fā)人員構(gòu)建各類API工作流程。

若要創(chuàng)建你的AI代理管道,請先進入項目目錄,然后運行以下命令:

npx baseai@latest pipe

在運行該命令后,你將會看到如下提示:

BaseAI is not installed but required to run. Would you like to install it? Yes/No
Name of the pipe?  pipe-with-memory
Description of the pipe? Pipe attached to a memory
Status of the pipe? Public/Private
System prompt? You are a helpful AI assistant

當(dāng)你完成 AI 管道代理的名稱、描述以及狀態(tài)設(shè)置后,系統(tǒng)會自動完成所有相關(guān)配置,你的管道代理將成功創(chuàng)建在 /baseai/pipes/pipe-with-memory.ts 路徑下。

步驟 3:添加一個.env文件

完成上述操作后,需在項目根目錄中創(chuàng)建一個.env 文件,并在其中添加OpenAI和Langbase的 API 密鑰。你可從指定位置獲取你的Langbase API密鑰 。

步驟 4:創(chuàng)建一個內(nèi)存代理

接下來,我們要創(chuàng)建一個內(nèi)存,并將其附加到管道(Pipe)中,以此讓它轉(zhuǎn)變?yōu)閮?nèi)存代理。要達成這一目標,請在終端中運行以下命令:  

npx baseai@latest memory

運行此命令后,將會得到以下提示:

Name of the memory?  chat-with-docs-agent
Description of the pipe? FAQs docs
Do you want to create memory from the current project git repository? Yes/No

執(zhí)行上述操作之后,系統(tǒng)會自動完成所有相關(guān)設(shè)置。你便能夠訪問成功創(chuàng)建在 /baseai/memory/chat-with-docs-agent.ts 路徑下的內(nèi)存。

步驟 5:將文檔添加到內(nèi)存代理

在 /baseai/memory/chat-with-docs-agent.ts 路徑下,你會看到一個名為 documents 的文件夾。此文件夾專門用于存儲期望 AI 代理能夠訪問的文件。在本次演示過程中,我先將管道(Pipe)的常見問題頁面另存為.pdf 或.txt 格式的文件。隨后,把該文件轉(zhuǎn)換為markdown格式,并將轉(zhuǎn)換后的文件放置在 baseai/memory/chat-with-docs/documents 目錄中。  

執(zhí)行這一步驟,能夠切實保證內(nèi)存代理具備處理和檢索文檔信息的能力。如此一來,AI代理在面對用戶提出的查詢時,便能夠根據(jù)你所提供的文檔內(nèi)容做出準確回答。  

步驟 6:生成內(nèi)存嵌入

目前,你已成功將文檔添加至內(nèi)存。接下來的關(guān)鍵步驟是生成內(nèi)存嵌入。不過在此之前,有必要先了解一下:嵌入究竟是什么,以及為什么它們對于整個系統(tǒng)而言是不可或缺的 ? 

內(nèi)存嵌入是什么?

嵌入是文檔的一種數(shù)字表現(xiàn)形式。借助這種形式,人工智能能夠理解單詞、短語以及句子之間的上下文關(guān)聯(lián)和語義關(guān)系。我們不妨把嵌入看作是一種將文檔“翻譯”成人工智能能夠處理的“語言”的方式,以便實現(xiàn)語義搜索與檢索功能。  

為什么需要內(nèi)存嵌入?

若缺少嵌入這一關(guān)鍵環(huán)節(jié),AI代理便無法將用戶提出的查詢與文檔中的相關(guān)內(nèi)容進行有效匹配。而通過生成嵌入向量,實際上是在創(chuàng)建一個可供搜索的索引。這個索引對于內(nèi)存代理給出準確且高效的響應(yīng)起著至關(guān)重要的支持作用。  

如何生成嵌入?

若要為你的文檔生成嵌入,請在終端中執(zhí)行以下命令:

npx baseai@latest embed -m chat-with-docs-agent

至此,你的內(nèi)存已準備就緒,可以與管道(即內(nèi)存代理)進行連接。連接完成后,你的 AI 代理便能從你提供的文檔中獲取精準的、具備上下文感知能力的響應(yīng)。  

步驟 7:在管道代理(Pipe Agent)中集成內(nèi)存

接下來,你需要將此前創(chuàng)建的內(nèi)存附加到管道(Pipe)代理上,以此讓它成為一個內(nèi)存代理。要完成這一操作,請進入 /baseai/pipes/pipe-with-memory.ts 文件。以下是該文件目前的內(nèi)容展示:

import { PipeI } from '@baseai/core';

const pipePipeWithMemory = (): PipeI => ({    apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys    name: 'pipe-with-memory',    description: 'Pipe attached to a memory',    status: 'public',    model: 'openai:gpt-4o-mini',    stream: true,    json: false,    store: true,    moderate: true,    top_p: 1,    max_tokens: 1000,    temperature: 0.7,    presence_penalty: 1,    frequency_penalty: 1,    stop: [],    tool_choice: 'auto',    parallel_tool_calls: false,    messages: [        { role: 'system', content: `You are a helpful AI assistant.` }],    variables: [],    memory: [],    tools: []});
export default pipePipeWithMemory;

現(xiàn)在,需將內(nèi)存集成到管道中。具體做法是在文件頂部導(dǎo)入內(nèi)存,并將其作為內(nèi)存數(shù)組中的函數(shù)進行調(diào)用。以下是完成所有這些操作后代碼呈現(xiàn)的樣子:  

import { PipeI } from '@baseai/core';
import chatWithDocsAgentMemory from '../memory/chat-with-docs-agent';

const pipePipeWithMemory = (): PipeI => ({
    apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys
    name: 'pipe-with-memory',
    description: 'Pipe attached to a memory',
    status: 'public',
    model: 'openai:gpt-4o-mini',
    stream: true,
    json: false,
    store: true,
    moderate: true,
    top_p: 1,
    max_tokens: 1000,
    temperature: 0.7,
    presence_penalty: 1,
    frequency_penalty: 1,
    stop: [],
    tool_choice: 'auto',
    parallel_tool_calls: false,
    messages: [
        { role: 'system', content: `You are a helpful AI assistant.` }],
    variables: [],
    memory: [chatWithDocsAgentMemory()],
tools: []
});

export default pipePipeWithMemory;

步驟 8:在Node.js中集成內(nèi)存代理

接下來,我們要把之前創(chuàng)建的內(nèi)存代理集成到 Node.js 項目中,目的是為所關(guān)聯(lián)的文檔構(gòu)建一個交互式命令行界面(CLI)。這個 Node.js 項目將充當(dāng)測試內(nèi)存代理以及與內(nèi)存代理進行交互的基礎(chǔ)環(huán)境(在本教程開篇部分,我們已經(jīng)通過初始化npm完成了一個 Node.js 項目的初步設(shè)置 )。

現(xiàn)在,創(chuàng)建一個 index.ts 文件:

touch index.ts

在這個TypeScript文件里,需要導(dǎo)入你此前創(chuàng)建的管道代理。后續(xù)我們會借助@baseai/core里的管道原語(pipe primitive:用于構(gòu)建和操作管道的基本元素)來運行該管道。

將以下代碼添加到 index.ts 文件中:

import 'dotenv/config';import { Pipe } from '@baseai/core';import inquirer from 'inquirer';import ora from 'ora';import chalk from 'chalk';import pipePipeWithMemory from './baseai/pipes/pipe-with-memory';
const pipe = new Pipe(pipePipeWithMemory());
async function main() {
const initialSpinner = ora('Conversation with Memory agent...').start();   try {       const { completion: calculatorTool} = await pipe.run({           messages: [{ role: 'user', content: 'Hello' }],       });       initialSpinner.stop();       console.log(chalk.cyan('Report Generator Agent response...'));       console.log(calculatorTool);   } catch (error) {       initialSpinner.stop();       console.error(chalk.red('Error processing initial request:'), error);   }
while (true) {       const { userMsg } = await inquirer.prompt([           {               type: 'input',               name: 'userMsg',               message: chalk.blue('Enter your query (or type "exit" to quit):'),           },       ]);
if (userMsg.toLowerCase() === 'exit') {           console.log(chalk.green('Goodbye!'));           break;       }
const spinner = ora('Processing your request...').start();
try {           const { completion: reportAgentResponse } = await pipe.run({               messages: [{ role: 'user', content: userMsg }],           });
spinner.stop();           console.log(chalk.cyan('Agent:'));           console.log(reportAgentResponse);       } catch (error) {           spinner.stop();           console.error(chalk.red('Error processing your request:'), error);       }   }}
main();

這段代碼旨在創(chuàng)建一個交互式命令行界面(CLI),以便與 AI 代理進行聊天互動,它借助 @baseai/core 庫中的管道來處理用戶輸入。下面為你詳細介紹代碼的運行邏輯及相關(guān)操作:

  • 首先,代碼需要導(dǎo)入一些必要的庫。其中,dotenv 用于環(huán)境配置,inquirer 用于獲取用戶輸入,ora 用于加載微調(diào)器,而 chalk 則用于實現(xiàn)彩色輸出。在運行代碼前,請務(wù)必在終端中使用以下命令安裝這些庫:npm install ora inquirer 。
  • 接著,管道對象是基于 BaseAI 庫,利用一個名為 pipe-with-memory 的預(yù)定義內(nèi)存創(chuàng)建而成。

然后,在 main() 函數(shù)內(nèi)部:

  • 當(dāng)與 AI 代理的初始對話開始時,旋轉(zhuǎn)圖標會隨即啟動,并展示 “Hello” 這條消息。
  • 之后,來自 AI 的響應(yīng)將會呈現(xiàn)出來。
  • 程序會進入循環(huán)運行狀態(tài),持續(xù)要求用戶輸入內(nèi)容,并將用戶的查詢發(fā)送給 AI 代理。
  • 每次接收到 AI 的響應(yīng)后都會顯示出來,這一過程會不斷重復(fù),直至用戶輸入 “exit” 為止。

步驟 9:啟動BaseAI服務(wù)器

若要在本地運行內(nèi)存代理,首先需要啟動 BaseAI 服務(wù)器。請在終端中運行以下命令:  

npx baseai@latest dev

步驟 10:運行內(nèi)存代理

使用以下命令運行 index.ts 文件:

npx tsx index.ts

結(jié)果

在你的終端中,系統(tǒng)會提示“輸入你的查詢”。例如,我們不妨提問:“什么是 Langbase 上的管道?” 此時,內(nèi)存代理將會給出回應(yīng),并且還會提供正確的來源或引用信息。

通過上述一系列設(shè)置,我們成功構(gòu)建了一個“Chat with Your Document”代理。該代理充分利用了大型語言模型(LLM)和 Langbase 內(nèi)存代理的強大功能,有效克服了 LLM 自身存在的局限性。它不僅能夠確保給出準確的響應(yīng),而且在處理私有數(shù)據(jù)時不會出現(xiàn)“幻覺”現(xiàn)象。

譯者介紹

劉濤,51CTO社區(qū)編輯,某大型央企系統(tǒng)上線檢測管控負責(zé)人。

原文標題:How to Use Langbase Memory Agents to Make Any LLM a Conversational AI for Your Docs

作者:??Maham Codes??

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
已于2025-2-7 10:12:52修改
收藏 1
回復(fù)
舉報
回復(fù)
相關(guān)推薦