Een aangepaste chat-app maken in Python met behulp van de promptstroom-SDK
Belangrijk
Items die in dit artikel zijn gemarkeerd (preview) zijn momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.
In deze quickstart wordt u begeleid bij het instellen van uw lokale ontwikkelomgeving met de promptstroom-SDK. We schrijven een prompt, voeren deze uit als onderdeel van uw app-code, traceren de LLM-aanroepen die worden uitgevoerd en voeren een basisevaluatie uit op de uitvoer van de LLM.
Vereisten
Belangrijk
U moet over de benodigde machtigingen beschikken om roltoewijzingen toe te voegen voor opslagaccounts in uw Azure-abonnement. Het verlenen van machtigingen (het toevoegen van roltoewijzing) is alleen toegestaan door de eigenaar van de specifieke Azure-resources. Mogelijk moet u de eigenaar van uw Azure-abonnement (die mogelijk uw IT-beheerder is) vragen om toegang te verlenen om de Azure OpenAI-service aan te roepen met behulp van uw identiteit.
Voordat u deze quickstart kunt volgen, maakt u de resources die u nodig hebt voor uw toepassing:
- Een AI Studio-hub voor het maken van verbinding met externe resources.
- Een project voor het organiseren van uw projectartefacten en het delen van traceringen en evaluatieuitvoeringen.
- Een geïmplementeerd Azure OpenAI-chatmodel (gpt-35-turbo of gpt-4)
Voltooi de quickstart voor de AI Studio-speeltuin om deze resources te maken als u dat nog niet hebt gedaan. U kunt deze resources ook maken door de SDK-handleiding te volgen om een hub- en projectartikel te maken.
Toegang verlenen om De Azure OpenAI-service aan te roepen met behulp van uw identiteit
Als u aanbevolen beveiligingsprocedures wilt gebruiken, gebruiken we Microsoft Entra ID in plaats van API-sleutels om te verifiëren met Azure OpenAI met behulp van uw gebruikersidentiteit.
U of uw beheerder moet uw gebruikersidentiteit de Rol Cognitive Services OpenAI-gebruiker verlenen op de Azure AI Services-resource die u gebruikt. Met deze rol kunt u de Azure OpenAI-service aanroepen met behulp van uw gebruikersidentiteit.
U verleent uzelf toegang tot de Azure AI Services-resource die u gebruikt:
Ga in AI Studio naar uw project en selecteer Instellingen in het linkerdeelvenster.
Selecteer in de sectie Verbonden resources de naam van de verbinding met het type AIServices.
Notitie
Als u de AIServices-verbinding niet ziet, gebruikt u in plaats daarvan de Azure OpenAI-verbinding .
Selecteer op de pagina met resourcedetails de koppeling onder de kop Resource om de AI-servicesresource in Azure Portal te openen.
Selecteer op de linkerpagina in Azure Portal toegangsbeheer (IAM)>+ Roltoewijzing toevoegen.>
Zoek de Gebruikersrol Cognitive Services OpenAI en selecteer deze. Selecteer Volgende.
Selecteer Gebruiker, groep of service-principal. Selecteer vervolgens Leden selecteren.
Zoek in het deelvenster Leden selecteren dat wordt geopend naar de naam van de gebruiker waarvoor u de roltoewijzing wilt toevoegen. Selecteer de gebruiker en selecteer vervolgens Selecteren.
Ga door met de wizard en selecteer Controleren en toewijzen om de roltoewijzing toe te voegen.
De Azure CLI installeren en u aanmelden
U installeert de Azure CLI en meldt u zich aan vanuit uw lokale ontwikkelomgeving, zodat u uw gebruikersreferenties kunt gebruiken om de Azure OpenAI-service aan te roepen.
In de meeste gevallen kunt u de Azure CLI installeren vanuit uw terminal met behulp van de volgende opdracht:
U kunt de instructies volgen voor het installeren van de Azure CLI als deze opdrachten niet werken voor uw specifieke besturingssysteem of installatie.
Nadat u de Azure CLI hebt geïnstalleerd, meldt u zich aan met behulp van de az login
opdracht en meldt u zich aan met behulp van de browser:
az login
Nu maken we onze app en roepen we de Azure OpenAI-service aan vanuit code.
Een nieuwe Python-omgeving maken
Eerst moeten we een nieuwe Python-omgeving maken die we kunnen gebruiken om de promptstroom-SDK-pakketten te installeren. INSTALLEER GEEN pakketten in uw globale Python-installatie. U moet altijd een virtuele of conda-omgeving gebruiken bij het installeren van Python-pakketten, anders kunt u uw globale installatie van Python verbreken.
Installeer Python indien nodig
U wordt aangeraden Python 3.10 of hoger te gebruiken, maar python 3.8 is vereist. Als u geen geschikte versie van Python hebt geïnstalleerd, kunt u de instructies in de VS Code Python-zelfstudie volgen voor de eenvoudigste manier om Python op uw besturingssysteem te installeren.
Een virtuele omgeving maken
Als Python 3.10 of hoger al is geïnstalleerd, kunt u een virtuele omgeving maken met behulp van de volgende opdrachten:
Als u de Python-omgeving activeert, betekent dit dat wanneer u de opdrachtregel uitvoert python
of pip
vanaf de opdrachtregel de Python-interpreter gebruikt die zich in de .venv
map van uw toepassing bevindt.
Notitie
U kunt de deactivate
opdracht gebruiken om de virtuele Python-omgeving af te sluiten en deze later opnieuw te activeren wanneer dat nodig is.
De promptstroom-SDK installeren
In deze sectie gebruiken we de promptstroom om onze toepassing te bouwen. Promptstroom is een reeks ontwikkelhulpprogramma's die zijn ontworpen om de end-to-end ontwikkelingscyclus van OP LLM gebaseerde AI-toepassingen te stroomlijnen, van ideeën, prototypen, testen, evaluatie tot productie-implementatie en bewaking.
Gebruik pip om de promptstroom-SDK te installeren in de virtuele omgeving die u hebt gemaakt.
pip install promptflow
pip install azure-identity
De promptstroom-SDK heeft een afhankelijkheid van meerdere pakketten, die u afzonderlijk kunt installeren als u niet alle pakketten wilt installeren:
promptflow-core
: bevat de kernpromptstroomruntime die wordt gebruikt voor het uitvoeren van LLM-codepromptflow-tracing
: lichtgewicht bibliotheek die wordt gebruikt voor het verzenden van OpenTelemetry-traceringen in standaardenpromptflow-devkit
: bevat de prompt flow test bed en trace viewer tools voor lokale ontwikkelomgevingenopenai
: clientbibliotheken voor het gebruik van de Azure OpenAI-servicepython-dotenv
: wordt gebruikt om omgevingsvariabelen in te stellen door ze uit.env
bestanden te lezen
Uw omgevingsvariabelen configureren
Uw EINDPUNT en implementatienaam van uw AI-services zijn vereist om de Azure OpenAI-service aan te roepen vanuit uw code. In deze quickstart slaat u deze waarden op in een .env
bestand. Dit is een bestand dat omgevingsvariabelen bevat die door uw toepassing kunnen worden gelezen. U vindt deze waarden in de AI Studio-chatspeeltuin.
Maak een
.env
bestand en plak de volgende code:AZURE_OPENAI_ENDPOINT=endpoint_value AZURE_OPENAI_CHAT_DEPLOYMENT=chat_deployment_name AZURE_OPENAI_API_VERSION=api_version
Navigeer naar de chatspeeltuin binnen uw AI Studio-project. Valideer eerst of chatten met uw model werkt door een bericht naar de LLM te verzenden.
Zoek de naam van de Azure OpenAI-implementatie in de chatspeelplaats. Selecteer de implementatie in de vervolgkeuzelijst en plaats de muisaanwijzer op de naam van de implementatie om deze te bekijken. In dit voorbeeld is de implementatienaam gpt-35-turbo-16k.
Vervang in het
.env
bestand doorchat_deployment_name
de naam van de implementatie uit de vorige stap. In dit voorbeeld gebruiken we de implementatienaamgpt-35-turbo-16k
.Selecteer de <> knop Code weergeven en kopieer de eindpuntwaarde en API-versiewaarde.
Vervang in het
.env
bestand doorendpoint_value
de eindpuntwaarde en vervang doorapi_version
de API-versie die is gekopieerd uit het dialoogvenster in de vorige stap (zoals '2024-02-15-preview').
Waarschuwing
Verificatie op basis van sleutels wordt ondersteund, maar wordt niet aanbevolen door Microsoft. Als u sleutels wilt gebruiken, kunt u uw sleutel toevoegen aan de .env
sleutel, maar zorg ervoor dat uw .env
bestand zich in uw .gitignore
bestand bevindt, zodat u deze niet per ongeluk in uw Git-opslagplaats controleert.
Een eenvoudige chatprompt en -app maken
Maak eerst een Prompty-bestand . Dit is de indeling van de promptsjabloon die wordt ondersteund door de promptstroom.
Maak een chat.prompty
bestand en kopieer de volgende code erin:
---
name: Chat Prompt
description: A basic prompt that uses the chat API to answer questions
model:
api: chat
configuration:
type: azure_openai
parameters:
max_tokens: 256
temperature: 0.2
inputs:
chat_input:
type: string
chat_history:
type: list
is_chat_history: true
default: []
outputs:
response:
type: string
sample:
chat_input: What is the meaning of life?
---
system:
You are an AI assistant who helps people find information.
{% for item in history %}
{{item.role}}:
{{item.content}}
{% endfor %}
user:
{{chat_input}}
We gaan nu een Python-bestand maken dat gebruikmaakt van deze promptsjabloon. Maak een chat.py
bestand en plak de volgende code erin:
import os
from dotenv import load_dotenv
load_dotenv()
from promptflow.core import Prompty, AzureOpenAIModelConfiguration
model_config = AzureOpenAIModelConfiguration(
azure_deployment=os.getenv("AZURE_OPENAI_CHAT_DEPLOYMENT"),
api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
)
prompty = Prompty.load("chat.prompty", model={'configuration': model_config})
result = prompty(
chat_history=[
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."}
],
chat_input="Do other Azure AI services support this too?")
print(result)
Voer nu vanuit uw console de Python-code uit:
python chat.py
U ziet nu de uitvoer van het uitvoeren van de prompt:
Yes, other Azure AI services also support various capabilities and features. Some of the Azure AI services include Azure Cognitive Services, Azure Machine Learning, Azure Bot Service, and Azure Databricks. Each of these services offers different AI capabilities and can be used for various use cases. If you have a specific service or capability in mind, feel free to ask for more details.
De uitvoering van uw chatcode traceren
Nu gaan we kijken hoe promptstroomtracering inzicht kan geven in de verschillende LLM-aanroepen die plaatsvinden in onze Python-scripts.
Voeg aan het begin van het chat.py
bestand de volgende code toe om promptstroomtracering in te schakelen:
from promptflow.tracing import start_trace
start_trace()
Voer uw chat.py
bewerking opnieuw uit:
python chat.py
Deze keer ziet u een koppeling in de uitvoer om een promptstroomtracering van de uitvoering weer te geven:
Starting prompt flow service...
Start prompt flow service on port 23333, version: 1.10.1.
You can stop the prompt flow service with the following command:'pf service stop'.
Alternatively, if no requests are made within 1 hours, it will automatically stop.
You can view the trace detail from the following URL:
http://localhost:23333/v1.0/ui/traces/?#collection=aistudio-python-quickstart&uiTraceId=0x59e8b9a3a23e4e8893ec2e53d6e1e521
Als u die koppeling selecteert, ziet u vervolgens de tracering met de stappen van de uitvoering van het programma, wat is doorgegeven aan de LLM en de antwoorduitvoer.
Met promptstroomtracering kunt u ook specifieke functie-aanroepen en logboektraceringen traceren naar AI Studio, voor meer informatie raadpleegt u Tracering gebruiken in de promptstroom-SDK.
Uw prompt evalueren
Laten we nu zien hoe we promptstroom evaluators kunnen gebruiken om metrische gegevens te genereren waarmee de kwaliteit van het gesprek op een schaal van 0 tot 5 kan worden beoordeeld. We voeren de prompt opnieuw uit, maar deze keer slaan we de resultaten op in een matrix met het volledige gesprek en geven we die vervolgens door aan een ChatEvaluator
score.
Installeer eerst het promptflow-evals package
volgende:
pip install promptflow-evals
Kopieer nu de volgende code naar een evaluate.py
bestand:
import os
from dotenv import load_dotenv
load_dotenv()
from promptflow.core import Prompty, AzureOpenAIModelConfiguration
from promptflow.evals.evaluators import ChatEvaluator
model_config = AzureOpenAIModelConfiguration(
azure_deployment=os.getenv("AZURE_OPENAI_CHAT_DEPLOYMENT"),
api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
)
chat_history=[
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."}
]
chat_input="Do other Azure AI services support this too?"
prompty = Prompty.load("chat.prompty", model={'configuration': model_config})
response = prompty(chat_history=chat_history, chat_input=chat_input)
conversation = chat_history
conversation += [
{"role": "user", "content": chat_input},
{"role": "assistant", "content": response}
]
chat_eval = ChatEvaluator(model_config=model_config)
score = chat_eval(conversation=conversation)
print(score)
Voer het evaluate.py
script uit:
python evaluate.py
Als het goed is, ziet u een uitvoer die er als volgt uitziet:
{'gpt_coherence': 5.0, 'gpt_fluency': 5.0, 'evaluation_per_turn': {'gpt_coherence': {'score': [5.0, 5.0]}, 'gpt_fluency': {'score': [5.0, 5.0]}}}
Het lijkt erop dat we 5 hebben gescoord voor coherentie en vloeiendheid van de LLM-antwoorden op dit gesprek!
Voor meer informatie over het gebruik van promptstroom-evaluators, waaronder het maken van uw eigen aangepaste evaluators en logboekevaluatieresultaten voor AI Studio, moet u uw app controleren met behulp van de promptstroom-SDK.