如何使用一個 API 建立 AI 聊天機器人來存取多個 LLM

王林
發布: 2024-08-25 06:02:02
原創
643 人瀏覽過

最初由 Liz Acosta 在 Streamlit 部落格上發布

還記得第一次使用人工智慧影像產生器有多酷嗎?那兩千萬根手指和惡夢般的吃義大利麵的畫面不僅僅是有趣,它們在不經意間透露了哎呀!人工智慧模型的智慧程度與我們一樣。和我們一樣,他們也很難畫手。

How to create an AI chatbot using one API to access multiple LLMs

人工智慧模型很快變得更加複雜,但現在的模型數量太多了。而且,和我們一樣,他們中的一些人比其他人更擅長某些任務。以文字生成為例。儘管 Llama、Gemma 和 Mistral 都是法學碩士,但他們中的一些人更擅長產生程式碼,而其他人則更擅長腦力激盪、編碼或創意寫作。它們根據提示提供不同的優勢,因此在您的 AI 應用程式中包含多個模型可能是有意義的。

但是如何將所有這些模型整合到您的應用程式中而不重複程式碼?如何使人工智慧的使用更加模組化,從而更易於維護和擴展?這就是 API 可以提供用於跨不同技術進行通訊的標準化指令集的地方。

在這篇部落格文章中,我們將了解如何使用 Replicate 和 Streamlit 來建立一個應用程序,該應用程式允許您透過單一 API 呼叫來配置和提示不同的 LLM。別擔心——當我說「應用程式」時,我並不是說必須啟動整個 Flask 伺服器或繁瑣地配置你的路由或擔心 CSS。 Streamlit 已經為您解決了這個問題?

繼續閱讀以了解:

  • 什麼是複製
  • Streamlit 是什麼
  • 如何建立示範複製聊天機器人 Streamlit 應用程式
  • 以及使用 Replicate 的最佳實踐

不想讀書?以下是探索此演示的一些其他方法:

  • 在此處的 Streamlit Cookbook 儲存庫中尋找程式碼
  • 在此處嘗試應用程式的部署版本
  • 在此處觀看 Replicate 創始設計師 Zeke Sikelianos 的影片演練

什麼是複製?

Replicate 是一個平台,使開發人員能夠透過 CLI、API 或 SDK 部署、微調和存取開源 AI 模型。該平台可以輕鬆地以程式設計方式將人工智慧功能整合到軟體應用程式中。

Replicate 上的可用模型

  • 文字:像 Llama 3 這樣的模型可以根據輸入提示產生連貫且上下文相關的文字。
  • 圖像:像穩定擴散這樣的模型可以根據文字提示產生高品質的圖像。
  • 語音:像whisper這樣的模型可以將語音轉換為文本,而像xtts-v2這樣的模型可以產生聽起來自然的語音。
  • 影片:像 animate-diff 這樣的模型或像 videocrafter 這樣的穩定擴散的變體可以分別根據文字和圖像提示產生和/或編輯影片。

當一起使用時,Replicate 允許您開發多模式應用程序,這些應用程式可以接受輸入並產生各種格式的輸出,無論是文字、圖像、語音還是視訊。

什麼是 Streamlit?

Streamlit 是一個開源 Python 框架,只需幾行程式碼即可建立高度互動的應用程式。 Streamlit 與生成式 AI 中的所有最新工具集成,例如任何 LLM、向量資料庫或各種 AI 框架(如 LangChain、LlamaIndex 或 Weights & Biases)。 Streamlit 的聊天元素讓與 AI 互動變得特別容易,因此您可以建立「與您的資料對話」的聊天機器人。

與 Replicate 這樣的平台相結合,Streamlit 允許您創建生成式 AI 應用程序,而無需任何應用程式設計開銷。

?若要詳細了解 Streamlit 如何讓您取得進步,請查看此部落格文章。

要了解有關 Streamlit 的更多信息,請查看 101 指南。

嘗試應用程式配方:複製 + Streamlit

但是不要相信我的話。親自嘗試該應用程式或觀看影片演示,看看您的想法。

在此示範中,您將使用 Replicate 啟動 Streamlit 聊天機器人應用程式。該應用程式使用單一 API 來存取三個不同的 LLM 並調整溫度和 top-p 等參數。這些參數會影響人工智慧生成文字的隨機性和多樣性,以及選擇標記的方法。

什麼是模型溫度? 溫度控制模型如何選擇令牌。較低的溫度使模型更加保守,有利於常見和“安全”的詞語。相反,較高的溫度會鼓勵模型透過選擇可能性較小的標記來承擔更多風險,從而產生更多創意輸出。

什麼是top-p? 也稱為「核採樣」—是另一種調整隨機性的方法。隨著 top-p 值的增加,它的工作原理是考慮更廣泛的代幣集合。較高的 top-p 值會導致採樣的令牌範圍更加多樣化,從而產生更多樣化的輸出。

先決條件

  • Python 版本 >=3.8, !=3.9.7
  • 複製 API 金鑰 (請注意,需要使用付款方式才能存取超出免費試用限制的功能。)

?要了解有關 API 密鑰的更多信息,請查看此處的部落格文章。

環境設定

本地設定

  1. 複製 Cookbook 儲存庫:git clone https://github.com/streamlit/cookbook.git
  2. 從 Cookbook 根目錄,將目錄更改為複製配方: cd Recipe/replicate
  3. 將您的複製 API 金鑰新增至 .streamlit/secrets_template.toml 檔案
  4. 將檔案名稱從secrets_template.toml更新為secrets.toml: mv .streamlit/secrets_template.toml .streamlit/secrets.toml (要了解有關 Streamlit 中秘密處理的更多信息,請參閱此處的文檔。)
  5. 建立虛擬環境:python -m venvreplicatevenv
  6. 啟動虛擬環境:sourcereplicatevenv/bin/activate
  7. 安裝依賴項:pip install -rrequirements.txt

GitHub Codespaces 設定

  1. 從 GitHub 上的 Cookbook 儲存庫中,透過從「程式碼」按鈕中選擇「程式碼空間」選項來建立一個新的程式碼空間

    How to create an AI chatbot using one API to access multiple LLMs

  2. 產生程式碼空間後,將您的 Replicate API 金鑰新增至 Recipe/replicate/.streamlit/secrets_template.toml 檔案

  3. 將檔案名稱從secrets_template.toml更新為secrets.toml
    (要了解有關 Streamlit 中秘密處理的更多信息,請參閱此處的文檔。)

  4. 從 Cookbook 根目錄中,將目錄更改為複製配方:cd Recipe/replicate

  5. 安裝相依性:pip install -rrequirements.txt

使用 Replicate 運行文字產生模型

  1. 在recipes/replicate目錄中建立一個名為replicate_hello_world.py的文件
  2. 將以下程式碼加入檔案:

    import replicate   
    
    import toml
    
    import os
    
    # Read the secrets from the secrets.toml file
    with open(".streamlit/secrets.toml", "r") as f:
        secrets = toml.load(f)
    
    # Create an environment variable for the Replicate API token 
    os.environ['REPLICATE_API_TOKEN'] = secrets["REPLICATE_API_TOKEN"]
    
    # Run a model
    for event in replicate.stream("meta/meta-llama-3-8b",
                                 input={"prompt": "What is Streamlit?"},):
        print(str(event), end="")
    
    登入後複製
  3. 執行腳本:pythonreplicate_hello_world.py

您應該看到模型產生的文字的列印結果。

要了解有關複製模型及其工作原理的更多信息,您可以在此處參考其文件。從本質上講,複製「模型」是指經過訓練、打包和發布的軟體程序,它接受輸入並返回輸出。

在這個特殊情況下,模型是meta/meta-llama-3-8b,輸入是「提示」:「什麼是Streamlit?」。執行腳本時,將呼叫 Replicate 端點,列印的文字是模型透過 Replicate 傳回的輸出。

運行演示 Replicate Streamlit 聊天機器人應用程式

要執行示範應用程序,請使用 Streamlit CLI:streamlit run streamlit_app.py。

執行此命令會​​將應用程式部署到本機上的連接埠。當您訪問此位置時,您應該會看到 Streamlit 應用程式正在運行。

How to create an AI chatbot using one API to access multiple LLMs

您可以使用此應用程式透過複製提示不同的LLM,並根據您提供的配置產生生成文字。

適用於多個 LLM 模型的通用 API

使用 Replicate 表示您可以使用一個 API 提示多個開源 LLM,這有助於簡化 AI 與現代軟體流程的整合。

這是透過以下程式碼區塊完成的:

for event in replicate.stream(model, 
                             input={"prompt": prompt_str,
                             "prompt_template": r"{prompt}", 
                             "temperature": temperature,
                             "top_p": top_p,}):
    yield str(event)
登入後複製

模型、溫度和 top p 配置由使用者透過 Streamlit 的輸入小工具提供。 Streamlit 的聊天元素可以輕鬆地將聊天機器人功能整合到您的應用程式中。最好的部分是您不需要了解 JavaScript 或 CSS 來實現和設計這些元件 - Streamlit 提供開箱即用的所有這些。

複製最佳實踐

使用提示的最佳模型

Replicate 提供了一個 API 端點來搜尋公用模型。您還可以在他們的網站上探索特色模型和用例。這樣可以輕鬆找到適合您特定需求的型號。

不同的型號有不同的性能特點。根據您對準確性和速度的需求使用適當的模型。

使用 Webhooks、串流媒體和圖像 URL 提高效能

Replicate 的輸出資料只可用一小時。使用 webhook 將資料儲存到您自己的儲存空間。您也可以設定 Webhook 來處理來自模型的非同步回應。這對於建立可擴展的應用程式至關重要。

盡可能利用串流媒體。某些模型支援串流傳輸,允許您在生成部分結果時獲得它們。這非常適合即時應用程式。

使用圖像 URL 比使用 Base 64 編碼的上傳圖像可提供更高的效能。

使用 Streamlit 釋放 AI 的潛力

借助 Streamlit,數月的應用程式設計工作被簡化只需幾行 Python 程式碼。它是展示最新人工智慧發明的完美框架。

使用 Streamlit Cookbook 中的其他 AI 食譜快速啟動並運行。 (別忘了在論壇中向我們展示您正在建造的內容!)

串流媒體快樂! ?

以上是如何使用一個 API 建立 AI 聊天機器人來存取多個 LLM的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!