共用方式為


使用 Azure AI Foundry SDK 在 Python 中建置基本聊天應用程式

重要

本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

在本快速入門中,我們會逐步引導您使用 Azure AI Foundry SDK 設定本機開發環境。 我們會撰寫提示、在您的應用程式程式碼中執行它、追蹤要進行的 LLM 呼叫,以及在 LLM 的輸出上執行基本評估。

必要條件

安裝 Azure CLI 並登入

您安裝 Azure CLI 並從您的本機開發環境登入,讓您可以使用您的使用者認證來呼叫 Azure OpenAI 服務。

在大部分情況下,您可以使用下列命令,從終端機安裝 Azure CLI:

winget install -e --id Microsoft.AzureCLI

如果這些命令不適合您的特定作業系統或設定,您可以遵循如何安裝 Azure CLI 的指示。

安裝 Azure CLI 之後,請使用 az login 命令登入並使用瀏覽器登入:

az login

或者,您可以使用裝置程式代碼透過瀏覽器手動登入。

az login --use-device-code

建立新的 Python 環境

首先,您必須建立新的 Python 環境,以用來安裝本教學課程所需的套件。 請勿將套件安裝到您的全域 Python 安裝中。 安裝 Python 套件時,您應該一律使用虛擬或 conda 環境,否則您可能會破壞 Python 的全域安裝。

如有需要,請安裝 Python

我們建議使用 Python 3.10 或更新版本,但至少需要 Python 3.8。 如果您未安裝適當的 Python 版本,可以遵循 VS Code Python 教學課程中的指示,以了解在作業系統上安裝 Python 的最簡單方式。

建立虛擬環境

如果您已安裝 Python 3.10 或更高版本,您可以使用下列命令來建立虛擬環境:

py -3 -m venv .venv
.venv\scripts\activate

啟用 Python 環境表示,當您命令列執行 pythonpip,將會使用應用程式的 .venv 資料夾中所包含的 Python 解譯器。

注意

您可以使用 deactivate 命令來結束 Python 虛擬環境,並可以稍後視需要重新啟用它。

安裝套件

安裝 azure-ai-projects(預覽)、 azure-ai-inference (預覽)和 azure 身分識別套件:

pip install azure-ai-projects azure-ai-inference azure-identity 

建置聊天應用程式

建立名為 chat.py 的檔案。 將下列程式代碼複製並貼到其中。

from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential

project_connection_string = "<your-connection-string-goes-here>"

project = AIProjectClient.from_connection_string(
    conn_str=project_connection_string, credential=DefaultAzureCredential()
)

chat = project.inference.get_chat_completions_client()
response = chat.complete(
    model="gpt-4o-mini",
    messages=[
        {
            "role": "system",
            "content": "You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig?",
        },
        {"role": "user", "content": "Hey, can you help me with my taxes? I'm a freelancer."},
    ],
)

print(response.choices[0].message.content)

插入您的 連接字串

您的專案 連接字串 需要從程式代碼呼叫 Azure OpenAI 服務。

在您在 Azure AI Foundry 遊樂場快速入門中建立的 Azure AI Foundry 專案中尋找您的 連接字串。 開啟項目,然後在 [概觀] 頁面上尋找 連接字串

顯示專案概觀頁面和 連接字串 位置的螢幕快照。

複製 連接字串,並在 chat.py 檔案中取代 <your-connection-string-goes-here>

執行聊天腳本

執行文本以查看來自模型的回應。

python chat.py

從使用者輸入和提示範本產生提示

腳本會使用硬式編碼的輸入和輸出訊息。 在實際應用程式中,您會從用戶端應用程式取得輸入,產生系統訊息,其中包含模型的內部指示,然後使用所有訊息呼叫 LLM。

讓我們變更文本以從用戶端應用程式取得輸入,並使用提示範本產生系統訊息。

  1. 拿掉列印回應之腳本的最後一行。

  2. 現在定義 get_chat_response 接受訊息和內容的函式、使用提示範本產生系統訊息,以及呼叫模型。 將此程式代碼新增至您現有的 chat.py 檔案:

    from azure.ai.inference.prompts import PromptTemplate
    
    
    def get_chat_response(messages, context):
        # create a prompt template from an inline string (using mustache syntax)
        prompt_template = PromptTemplate.from_string(
            prompt_template="""
            system:
            You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig? Refer to the user by their first name, try to work their last name into a pun.
    
            The user's first name is {{first_name}} and their last name is {{last_name}}.
            """
        )
    
        # generate system message from the template, passing in the context as variables
        system_message = prompt_template.create_messages(data=context)
    
        # add the prompt messages to the user messages
        response = chat.complete(
            model="gpt-4o-mini",
            messages=system_message + messages,
            temperature=1,
            frequency_penalty=0.5,
            presence_penalty=0.5,
        )
    
        return response
    

    注意

    提示範本使用鬍鬚格式。

    get_chat_response函式可以輕鬆地新增為 FastAPI 或 Flask 應用程式的路由,以便從前端 Web 應用程式呼叫此函式。

  3. 現在,模擬將資訊從前端應用程式傳遞至此函式。 將下列程式代碼新增至 chat.py 檔案的結尾。 您可以隨意使用訊息,並新增您自己的名稱。

    if __name__ == "__main__":
        response = get_chat_response(
            messages=[{"role": "user", "content": "what city has the best food in the world?"}],
            context={"first_name": "Jessie", "last_name": "Irwin"},
        )
        print(response.choices[0].message.content)
    

執行修訂后的腳本,以查看來自模型與這個新輸入的回應。

python chat.py

後續步驟