Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben az útmutatóban egy AI-csevegőalkalmazást hoz létre, és az Azure App Configurationból dinamikusan betöltött csevegés-befejezési konfigurációval iterálja a parancssort.
A teljes mintaforráskód elérhető a Azure App Configuration GitHub adattárban.
Előfeltételek
- A csevegési befejezés konfigurációjának létrehozásához végezze el az útmutatót.
- Python 3.10 vagy újabb verzió – a Python Windows rendszeren történő beállításáról további információt a Python on Windows dokumentációban talál.
Konzolalkalmazás létrehozása
Hozzon létre egy új könyvtárat a projekthez, és lépjen be abba:
mkdir chatapp-quickstart cd chatapp-quickstartTelepítse a szükséges Python-csomagokat:
pip install azure-appconfiguration-provider pip install azure-identity pip install azure-ai-inferenceHozzon létre egy elnevezett
app.pyfájlt, és adja hozzá a következő importálási utasításokat:import os from azure.appconfiguration.provider import load, SettingSelector, WatchKey from azure.identity import DefaultAzureCredential from azure.ai.inference import ChatCompletionsClientHozzon létre egy függvényt, amely betölti a konfigurációt az Azure App Configurationból.
Az alkalmazáskonfigurációhoz Microsoft Entra-azonosító (ajánlott) vagy kapcsolati sztring használatával csatlakozhat. Ebben a példában a Microsoft Entra-azonosítót
DefaultAzureCredentialhasználja az alkalmazáskonfigurációs áruházban való hitelesítéshez. Az alábbi utasításokat követve rendelje hozzá az alkalmazáskonfigurációs adatolvasó szerepkört az általukDefaultAzureCredentialképviselt identitáshoz. Győződjön meg arról, hogy elegendő időt hagy az engedély propagálására az alkalmazás futtatása előtt.credential = DefaultAzureCredential() def load_azure_app_configuration(): endpoint = os.environ.get("AZURE_APPCONFIGURATION_ENDPOINT") if not endpoint: raise ValueError("AZURE_APPCONFIGURATION_ENDPOINT environment variable is not set") config = load( endpoint=endpoint, credential=credential, # Load all keys that start with "ChatApp:" and have no label selectors=[SettingSelector(key_filter="ChatApp:*")], trim_prefixes=["ChatApp:"], # Reload configuration if the ChatCompletion key has changed. # Use the default refresh interval of 30 seconds. It can be overridden via refresh_interval. refresh_on=[WatchKey("ChatApp:ChatCompletion")], ) return configHozzon létre egy függvényt a csevegőügyfél AI-válaszainak lekéréséhez:
def get_ai_response(client, config, chat_conversation): chat_completion_config = config["ChatCompletion"] messages = [] # Add configured messages (system, user, assistant) if not chat_completion_config.get("messages"): chat_completion_config["messages"] = [] for msg in chat_completion_config["messages"]: messages.append({"role": msg["role"], "content": msg["content"]}) # Add the chat conversation history messages.extend(chat_conversation) # Create chat completion response = client.complete( model=chat_completion_config["model"], messages=messages, ) return response.choices[0].message.contentHozza létre a csevegési ügyfelet konfiguráló és a csevegési ciklust futtató fő függvényt.
Hozza létre a
ChatCompletionsClientegy példányát az Azure AI Foundryhoz való csatlakozáshoz. ADefaultAzureCredentialhasználatával hitelesítheti az identitást, és hozzárendelheti a Cognitive Services OpenAI User szerepkört aDefaultAzureCredentialáltal képviselt identitáshoz. Részletes lépésekért tekintse meg az Azure OpenAI szolgáltatás útmutatójának szerepköralapú hozzáférés-vezérlését . Győződjön meg arról, hogy elegendő időt hagy az engedély propagálására az alkalmazás futtatása előtt.def main(): config = load_azure_app_configuration() # Create a chat completions client using Microsoft Entra ID client = ChatCompletionsClient( endpoint=config["AzureAIFoundry:Endpoint"], credential=credential, credential_scopes=["https://cognitiveservices.azure.com/.default"], ) # Initialize chat conversation chat_conversation = [] print("Chat started! What's on your mind?") while True: # Refresh the configuration from Azure App Configuration config.refresh() # Get user input user_input = input("You: ") # Exit if user input is empty if not user_input: print("Exiting Chat. Goodbye!") break # Add user message to chat conversation chat_conversation.append({"role": "user", "content": user_input}) # Get AI response and add it to chat conversation response = get_ai_response(client, config, chat_conversation) print(f"AI: {response}\n") chat_conversation.append({"role": "assistant", "content": response}) if __name__ == "__main__": main()Az előző lépések elvégzése után a
app.pyfájlnak tartalmaznia kell a teljes implementációt az alábbiak szerint:import os from azure.appconfiguration.provider import load, SettingSelector, WatchKey from azure.identity import DefaultAzureCredential from azure.ai.inference import ChatCompletionsClient credential = DefaultAzureCredential() def load_azure_app_configuration(): endpoint = os.environ.get("AZURE_APPCONFIGURATION_ENDPOINT") if not endpoint: raise ValueError("AZURE_APPCONFIGURATION_ENDPOINT environment variable is not set") config = load( endpoint=endpoint, credential=credential, # Load all keys that start with "ChatApp:" and have no label selectors=[SettingSelector(key_filter="ChatApp:*")], trim_prefixes=["ChatApp:"], # Reload configuration if the ChatCompletion key has changed. # Use the default refresh interval of 30 seconds. It can be overridden via refresh_interval. refresh_on=[WatchKey("ChatApp:ChatCompletion")], ) return config def get_ai_response(client, config, chat_conversation): chat_completion_config = config["ChatCompletion"] messages = [] # Add configured messages (system, user, assistant) if not chat_completion_config.get("messages"): chat_completion_config["messages"] = [] for msg in chat_completion_config["messages"]: messages.append({"role": msg["role"], "content": msg["content"]}) # Add the chat conversation history messages.extend(chat_conversation) # Create chat completion response = client.complete( model=chat_completion_config["model"], messages=messages, ) return response.choices[0].message.content def main(): config = load_azure_app_configuration() # Create a chat completions client using Microsoft Entra ID client = ChatCompletionsClient( endpoint=config["AzureAIFoundry:Endpoint"], credential=credential, credential_scopes=["https://cognitiveservices.azure.com/.default"], ) # Initialize chat conversation chat_conversation = [] print("Chat started! What's on your mind?") while True: # Refresh the configuration from Azure App Configuration config.refresh() # Get user input user_input = input("You: ") # Exit if user input is empty if not user_input: print("Exiting Chat. Goodbye!") break # Add user message to chat conversation chat_conversation.append({"role": "user", "content": user_input}) # Get AI response and add it to chat conversation response = get_ai_response(client, config, chat_conversation) print(f"AI: {response}\n") chat_conversation.append({"role": "assistant", "content": response}) if __name__ == "__main__": main()
Az alkalmazás létrehozása és futtatása
Állítsa a AZURE_APPCONFIGURATION_ENDPOINT nevű környezeti változót az Alkalmazáskonfigurációs tár végpontjára, amely az Azure Portalon található áruház áttekintésében található.
Ha a Windows parancssorát használja, futtassa a következő parancsot, és indítsa újra a parancssort a módosítás érvénybe lépésének engedélyezéséhez:
setx AZURE_APPCONFIGURATION_ENDPOINT "<AppConfigurationEndpoint>"Ha a PowerShellt használja, futtassa a következő parancsot:
$Env:AZURE_APPCONFIGURATION_ENDPOINT = "<AppConfigurationEndpoint>"MacOS vagy Linux használata esetén futtassa a következő parancsot:
export AZURE_APPCONFIGURATION_ENDPOINT='<AppConfigurationEndpoint>'A környezeti változó megfelelő beállítása után futtassa a következő parancsot az alkalmazás futtatásához:
python app.pyÍrja be a "Mi a neve?" üzenetet, amikor az "Ön:" üzenet jelenik meg, majd nyomja le az Enter billentyűt.
Chat started! What's on your mind? You: What is your name? AI: I'm your helpful assistant! I don't have a personal name, but you can call me whatever you'd like. 😊 Do you have a name in mind?Az Azure Portalon válassza ki a létrehozott App Configuration Store-példányt. Az Operatív menüben válassza a Konfigurációkezelőt , és válassza a ChatApp:ChatCompletion kulcsot. Frissítse az Üzenetek tulajdonság értékét:
- Szerepkör: rendszer
- Tartalom: "Kalóz vagy, és a neved Eddy."
Írja be ugyanazt az üzenetet, amikor az "Ön:" üzenet jelenik meg. Ügyeljen arra, hogy várjon néhány percet, amíg a frissítési időköz eltelik, majd nyomja le az Enter billentyűt a frissített AI-válasz megjelenítéséhez a kimenetben.
Chat started! What's on your mind? You: What is your name? AI: I'm your helpful assistant! I don't have a personal name, but you can call me whatever you'd like. 😊 Do you have a name in mind? You: What is your name? AI: Arrr, matey! Me name be Eddy, the most fearsome pirate to ever sail the seven seas! What be yer name, landlubber?