共用方式為


開始在 JavaScript 的聊天應用程式中評估答案

本文說明如何針對一組正確或理想的答案來評估聊天應用程式的答案(稱為基礎真相)。 每當您以影響答案的方式變更聊天應用程式時,請執行評估來比較變更。 此示範應用程式提供您目前可以使用的工具,讓您更輕鬆地執行評估。

遵循本文中的指示,您將會:

  • 使用針對主旨網域量身打造的範例提示。 這些已在存放庫中。
  • 從您自己的文件產生範例用戶問題和基礎真相解答。
  • 使用範例提示搭配產生的用戶問題來執行評估。
  • 檢閱答案的分析。

注意

本文使用一或多個 AI 應用程式範本 作為本文範例和指引的基礎。 AI 應用程式範本提供您妥善維護且易於部署的參考實作,以協助確保 AI 應用程式的高品質起點。

架構概觀

結構的重要元件包括:

  • Azure 託管的聊天應用程式:聊天應用程式會在 Azure App 服務 中執行。 聊天應用程式符合聊天通訊協定,可讓評估應用程式針對任何符合通訊協定的聊天應用程式執行。
  • Azure AI 搜尋:聊天應用程式會使用 Azure AI 搜尋來儲存您自己的文件中的數據。
  • 範例問題產生器:可以為每個文件產生一些問題,以及基礎真相答案。 問題越多,評估就越長。
  • 評估工具 會針對聊天應用程式執行範例問題和提示,並傳回結果。
  • 檢閱工具 可讓您檢閱評估的結果。
  • 差異工具 可讓您比較評估之間的答案。

當您將此評估部署至 Azure 時,會為 GPT-4 模型建立 Azure OpenAI 端點,其本身 具有容量。 評估聊天應用程式時,評估工具必須有自己的 OpenAI 資源,並使用 GPT-4 搭配自己的容量。

必要條件

  • Azure 訂閱。 免費建立一個

  • 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 的存取權。

    目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access 的表單,以申請 Azure OpenAI 的存取權。

  • 部署聊天應用程式

  • 這些聊天應用程式會將數據載入 Azure AI 搜尋服務資源。 評估應用程式需要此資源才能運作。 請勿完成 上一個程式的清除資源 區段。

    您將需要來自該部署的下列 Azure 資源資訊,這稱為 本文中的聊天應用程式

    • 聊天 API URI:進程結束時 azd up 顯示的服務後端端點。
    • Azure AI 搜尋服務。 需要下列值:
      • 資源名稱:Azure AI 搜尋服務資源名稱,在程式中回報為 Search serviceazd up
      • 索引名稱:儲存檔之 Azure AI 搜尋服務索引的名稱。 這可以在 搜尋服務 的 Azure 入口網站 中找到。

    聊天 API URL 可讓評估透過後端應用程式提出要求。 Azure AI 搜尋資訊可讓評估腳本使用與後端相同的部署,並載入檔。

    收集此資訊之後,您就不需要再次使用 聊天應用程式 開發環境。 本文稍後會參考數次,以指出評估應用程式如何使用聊天應用程式。 除非您完成本文中的整個程序, 否則請勿刪除聊天應用程式 資源。

  • 開發容器環境可提供完成本文所需的所有相依性。 您可以在 GitHub Codespaces (瀏覽器中) 或使用 Visual Studio Code 在本機執行開發容器。

    • GitHub 帳戶

開啟開發環境

立即使用已安裝所有相依性的開發環境開始,以完成本文。 您應該安排監視工作區,以便同時查看這份文件和開發環境。

本文已針對 switzerlandnorth 評估部署使用區域進行測試。

GitHub Codespaces 會使用網頁版 Visual Studio Code 作爲使用者介面,執行由 GitHub 管理的開發容器。 如需最直接的開發環境,請使用 GitHub Codespaces,使得您有已預先安裝的正確開發人員工具和相依性,以便完成本文。

重要

所有 GitHub 帳戶每個月最多可以使用 Codespaces 60 小時,且有 2 個核心執行個體。 如需詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存體和核心時數

  1. 開始在 Azure-Samples/ai-rag-chat-evaluator GitHub 存放庫分的 main 分支上建立新的 GitHub Codespace 的流程。

  2. 以滑鼠右鍵按下列按鈕,然後選取 新視窗中 的 [開啟] 連結,以便同時提供開發環境和檔。

    在 GitHub Codespaces 中開啟

  3. 在 [建立 Codespace] 頁面上,檢閱 Codespace 組態設定,然後選取 [建立新的 Codespace]

    建立新 Codespace 之前確認畫面的螢幕擷取畫面。

  4. 等候 Codespace 開始。 此啟動程序可能需要幾分鐘的時間。

  5. 在畫面底部的終端機中,使用 Azure Developer CLI 登入 Azure。

    azd auth login --use-device-code
    
  6. 從終端機複製程式碼,然後將它貼到瀏覽器中。 遵循指示使用 Azure 帳戶進行驗證。

  7. 為評估應用程式布建必要的 Azure 資源 Azure OpenAI。

    azd up
    

    這不會部署評估應用程式,但會使用 GPT-4 部署建立 Azure OpenAI 資源,以在開發環境中本機執行評估所需的 GPT-4 部署。

  8. 本文中的其餘工作會在此開發容器的內容中進行。

  9. GitHub 存放庫的名稱會顯示在搜尋列中。 此視覺指標可協助您區分此評估應用程式與聊天應用程式。 此 ai-rag-chat-evaluator 存放庫稱為 本文中的評估應用程式

準備環境值和組態資訊

使用您在評估應用程式必要條件期間收集的資訊來更新環境值和組態資訊。

  1. 使用下列命令,將 Evaluations 應用程式資源資訊.env放入檔案中:

    azd env get-values > .env
    
  2. 將下列值從聊天應用程式為其 Azure AI 搜尋實例新增至 .env您在必要條件一節中收集的

    AZURE_SEARCH_SERVICE="<service-name>"
    AZURE_SEARCH_INDEX="<index-name>"
    

    此值 AZURE_SEARCH_KEYAzure AI 搜尋實例的查詢索引鍵

  3. 建立名為 my_config.json 的新檔案,並將下列內容複製到其中:

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/experiment<TIMESTAMP>",
        "target_url": "http://localhost:50505/chat",
        "target_parameters": {
            "overrides": {
                "semantic_ranker": false,
                "prompt_template": "<READFILE>my_input/prompt_refined.txt"
            }
        }
    }
    

    評估文本會 my_results 建立資料夾。

  4. target_url將 變更為您在必要條件一節中收集的聊天應用程式的 URI 值。 聊天應用程式必須符合聊天通訊協定。 URI 格式如下 https://CHAT-APP-URL/chat。 請確定通訊協定和 chat 路由是 URI 的一部分。

產生範例資料

為了評估新的答案,必須將其與「基礎真理」答案進行比較,這是特定問題的理想答案。 從儲存在 Azure AI 搜尋中聊天 應用程式的檔案產生問題和解答。

  1. example_input 資料夾複製到名為my_input 的新資料夾。

  2. 在終端機中,執行下列命令來產生範例數據:

    python3 -m scripts generate --output=my_input/qa.jsonl --numquestions=14 --persource=2
    

問答組會以 JSONL 格式產生並儲存my_input/qa.jsonl為下一個步驟中所用評估工具的輸入。 針對生產評估,您會為此數據集產生更多 QA 配對,超過 200 個。

注意

每個來源的幾個問題和答案,旨在讓您快速完成此程式。 這不是生產評估,每個來源應該有更多的問題和答案。

使用精簡的提示執行第一個評估

  1. my_config.json編輯群組態檔屬性:

    屬性 新值
    results_dir my_results/experiment_refined
    prompt_template <READFILE>my_input/prompt_refined.txt

    精簡的提示是關於主旨網域的特定提示。

    If there isn't enough information below, say you don't know. Do not generate answers that don't use the sources below. If asking a clarifying question to the user would help, ask the question.
    
    Use clear and concise language and write in a confident yet friendly tone. In your answers ensure the employee understands how your response connects to the information in the sources and include all citations necessary to help the employee validate the answer provided.
    
    For tabular information return it as an html table. Do not return markdown format. If the question is not in English, answer in the language used in the question.
    
    Each source has a name followed by colon and the actual information, always include the source name for each fact you use in the response. Use square brackets to reference the source, e.g. [info1.txt]. Don't combine sources, list each source separately, e.g. [info1.txt][info2.pdf].
    
  2. 在終端機中,執行下列命令以執行評估:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

    此文稿會使用評估在 中 my_results/ 建立新的實驗資料夾。 資料夾包含評估的結果,包括:

    檔案名稱 描述
    eval_results.jsonl 每個問答,以及每個 QA 配對的 GPT 計量。
    summary.json 整體結果,例如平均 GPT 計量。

使用弱式提示執行第二次評估

  1. my_config.json編輯群組態檔屬性:

    屬性 新值
    results_dir my_results/experiment_weak
    prompt_template <READFILE>my_input/prompt_weak.txt

    該弱式提示沒有關於主旨網域的內容:

    You are a helpful assistant.
    
  2. 在終端機中,執行下列命令以執行評估:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

使用特定溫度執行第三次評估

使用提示,允許更多創造力。

  1. my_config.json編輯群組態檔屬性:

    Existing 屬性 新值
    Existing results_dir my_results/experiment_ignoresources_temp09
    Existing prompt_template <READFILE>my_input/prompt_ignoresources.txt
    新增 溫度 0.9

    默認溫度為 0.7。 溫度越高,答案就越有創意。

    忽略提示簡短:

    Your job is to answer questions to the best of your ability. You will be given sources but you should IGNORE them. Be creative!
    
  2. 除了使用您自己的 results_dir之外,config 對象應該如下所示:

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/prompt_ignoresources_temp09",
        "target_url": "https://YOUR-CHAT-APP/chat",
        "target_parameters": {
            "overrides": {
                "temperature": 0.9,
                "semantic_ranker": false,
                "prompt_template": "<READFILE>my_input/prompt_ignoresources.txt"
            }
        }
    }
    
  3. 在終端機中,執行下列命令以執行評估:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

檢閱評估結果

您已根據不同的提示和應用程式設定來執行三項評估。 結果會儲存在 my_results 資料夾中。 檢閱結果如何根據設定而有所不同。

  1. 使用檢閱工具來查看評估的結果:

    python3 -m review_tools summary my_results
    
  2. 結果看起來會像這樣:

    評估檢閱工具的螢幕快照,其中顯示三項評估。

    每個值都會以數位和百分比傳回。

  3. 使用下表來瞭解值的意義。

    Description
    根據性 這是指模型回應根據事實、可驗證的資訊有多好。 如果回應實際上是準確的,並反映現實,就會被視為有基礎的。
    相關性 這會測量模型回應與內容或提示的對齊程度。 相關的回應會直接解決使用者的查詢或語句。
    連貫性 這是指模型回應在邏輯上如何一致。 一致的回應會維護邏輯流程,而且本身不會相互矛盾。
    引文 這表示回應是否以提示中所要求的格式傳回。
    長度 這會測量回應的長度。
  4. 結果應該表示所有 3 個評估具有較高的相關性,而 experiment_ignoresources_temp09 具有最低的相關性。

  5. 選取資料夾以查看評估的組態。

  6. 輸入 Ctrl + C 結束應用程式並返回終端機。

比較答案

比較評估中傳回的答案。

  1. 選取兩個要比較的評估,然後使用相同的檢閱工具來比較答案:

    python3 -m review_tools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
    
  2. 檢閱結果。 您的結果可能會有所不同。

    評估之間評估答案比較的螢幕快照。

  3. 輸入 Ctrl + C 結束應用程式並返回終端機。

進一步評估的建議

  • 編輯 中的 my_input 提示,以量身打造答案,例如主旨領域、長度和其他因素。
  • 編輯檔案 my_config.json 以變更 的參數,例如 temperature、 和 semantic_ranker 和 ,然後重新執行實驗。
  • 比較不同的答案,以瞭解提示和問題如何影響答案品質。
  • 針對 Azure AI 搜尋索引中的每個文件產生個別的問題和基礎真相解答。 然後重新執行評估,以查看答案的差異。
  • 藉由將需求新增至提示結尾,改變提示以指出較短或更長的答案。 例如,Please answer in about 3 sentences.

清除資源

清除 Azure 資源

在本文中建立的 Azure 資源會向您的 Azure 訂用帳戶計費。 如果您預計未來不需要這些資源,請將其刪除,以避免產生更多費用。

執行下列 Azure Developer CLI 命令來刪除 Azure 資源並移除原始程式碼:

azd down --purge

清除 GitHub Codespaces

刪除 GitHub Codespaces 環境,可確保您可將您為帳戶取得的每個核心免費時數權利數量最大化。

重要

如需 GitHub 帳戶權利的詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存體和核心時數

  1. 登入 GitHub Codespaces 儀表板 (https://github.com/codespaces)。

  2. 找出您目前執行中的 Codespaces,而其來源為 Azure-Samples/ai-rag-chat-evaluator GitHub 存放庫。

    執行中 Codespaces 的螢幕擷取畫面,包括其狀態和範本。

  3. 開啟 Codespace 的快顯功能表,然後選取 [刪除]

    單一 Codespace 的操作功能表 (已醒目提示刪除選項) 螢幕擷取畫面。

返回聊天應用程式發行項以清除這些資源。

下一步