Öğretici: Bölüm 3 - İstem akışı SDK'sı ile özel bir sohbet uygulamasını değerlendirme ve dağıtma
Bu öğreticide, öğretici serisinin 2. Bölümünde oluşturduğunuz sohbet uygulamasını değerlendirmek ve dağıtmak için istem akışı SDK'sını (ve diğer kitaplıkları) kullanırsınız. Bu üçüncü bölümde şunların nasıl yapılacağını öğreneceksiniz:
- Sohbet uygulaması yanıtlarının kalitesini değerlendirme
- Sohbet uygulamasını Azure'a dağıtma
- Dağıtımı doğrulama
Bu öğretici, üç bölümden oluşan bir öğreticinin üçüncü bölümüdür.
Önkoşullar
Sohbet uygulamasını oluşturmak için öğretici serisinin 2. bölümünü tamamlayın.
Azure aboneliğinize rol atamaları eklemek için gerekli izinlere sahip olmanız gerekir. Rol ataması tarafından izin verilmesine yalnızca belirli Azure kaynaklarının Sahibi izin verir. Öğreticinin devamında uç nokta erişimiyle ilgili yardım için Azure aboneliği sahibinizden (BT yöneticiniz kim olabilir) istemeniz gerekebilir.
Sohbet uygulaması yanıtlarının kalitesini değerlendirme
Sohbet uygulamanızın sohbet geçmişi de dahil olmak üzere sorgularınıza iyi yanıt verdiğini öğrendiğinize göre, birkaç farklı ölçümde ve daha fazla veride nasıl yapıldığını değerlendirmenin zamanı geldi.
Bir değerlendirme veri kümesi ve hedef işlev ile istem akışı değerlendiricisini get_chat_response()
kullanır, ardından değerlendirme sonuçlarını değerlendirirsiniz.
Değerlendirmeyi çalıştırdıktan sonra, sistem isteminizi geliştirme ve sohbet uygulamasının yanıtlarının nasıl değiştiğini ve geliştiğini gözlemleme gibi mantığınızda iyileştirmeler yapabilirsiniz.
Değerlendirme modelinizi ayarlama
Kullanmak istediğiniz değerlendirme modelini seçin. Uygulamayı oluştururken kullandığınız sohbet modeliyle aynı olabilir. Değerlendirme için farklı bir model istiyorsanız, bunu dağıtmanız veya zaten var olup olmadığını belirtmeniz gerekir. Örneğin, sohbet tamamlamalarınız için kullanıyor gpt-35-turbo
olabilirsiniz, ancak daha iyi performans gösterebileceğinden değerlendirme için kullanmak isteyebilirsiniz gpt-4
.
Değerlendirme modelinizin adını .env dosyanıza ekleyin:
AZURE_OPENAI_EVALUATION_DEPLOYMENT=<your evaluation model deployment name>
Değerlendirme veri kümesi oluşturma
Örnek sorular ve beklenen yanıtlar (gerçek) içeren aşağıdaki değerlendirme veri kümesini kullanın.
Rag-tutorial klasörünüzde eval_dataset.jsonl adlı bir dosya oluşturun. Başvuru için uygulama kodu yapısına bakın.
Bu veri kümesini dosyaya yapıştırın:
{"chat_input": "Which tent is the most waterproof?", "truth": "The Alpine Explorer Tent has the highest rainfly waterproof rating at 3000m"} {"chat_input": "Which camping table holds the most weight?", "truth": "The Adventure Dining Table has a higher weight capacity than all of the other camping tables mentioned"} {"chat_input": "How much do the TrailWalker Hiking Shoes cost? ", "truth": "The Trailewalker Hiking Shoes are priced at $110"} {"chat_input": "What is the proper care for trailwalker hiking shoes? ", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth."} {"chat_input": "What brand is for TrailMaster tent? ", "truth": "OutdoorLiving"} {"chat_input": "How do I carry the TrailMaster tent around? ", "truth": " Carry bag included for convenient storage and transportation"} {"chat_input": "What is the floor area for Floor Area? ", "truth": "80 square feet"} {"chat_input": "What is the material for TrailBlaze Hiking Pants?", "truth": "Made of high-quality nylon fabric"} {"chat_input": "What color does TrailBlaze Hiking Pants come in?", "truth": "Khaki"} {"chat_input": "Can the warrenty for TrailBlaze pants be transfered? ", "truth": "The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer."} {"chat_input": "How long are the TrailBlaze pants under warrenty for? ", "truth": " The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase."} {"chat_input": "What is the material for PowerBurner Camping Stove? ", "truth": "Stainless Steel"} {"chat_input": "Is France in Europe?", "truth": "Sorry, I can only queries related to outdoor/camping gear and equipment"}
İstem akışı değerlendiricileriyle değerlendirme
Şimdi aşağıdakiler için bir değerlendirme betiği tanımlayın:
- İşlevi
evaluate
ve değerlendiricileri prompt akışevals
paketinden içeri aktarın. - Örnek
.jsonl
veri kümesini yükleyin. - Sohbet uygulaması mantığımız etrafında bir hedef işlev sarmalayıcısı oluşturun.
- Değerlendirmeyi çalıştırarak hedef işlevi alır ve değerlendirme veri kümesini sohbet uygulamasından gelen yanıtlarla birleştirir.
- Sohbet uygulaması yanıtlarının kalitesini değerlendirmek için bir dizi GPT destekli ölçüm (ilgi, temellik ve tutarlılık) oluşturun.
- Sonuçları yerel olarak çıktısını alır ve sonuçları bulut projesine günlüğe kaydeder.
Betik, sonuçları komut satırında ve bir json dosyasına çıkararak sonuçları yerel olarak gözden geçirmenizi sağlar.
Betik ayrıca değerlendirme sonuçlarını bulut projesine günlüğe kaydeder, böylece kullanıcı arabirimindeki değerlendirme çalıştırmalarını karşılaştırabilirsiniz.
Rag-tutorial klasörünüzde evaluate.py adlı bir dosya oluşturun.
Aşağıdaki kodu ekleyin. ve
evaluation_name
öğesinidataset_path
kullanım örneğinize uyacak şekilde güncelleştirin.import json import os # set environment variables before importing any other code from dotenv import load_dotenv load_dotenv() import pandas as pd from promptflow.core import AzureOpenAIModelConfiguration from promptflow.evals.evaluate import evaluate from promptflow.evals.evaluators import ( RelevanceEvaluator, GroundednessEvaluator, CoherenceEvaluator, ) # Helper methods def load_jsonl(path): with open(path, "r") as f: return [json.loads(line) for line in f.readlines()] def copilot_wrapper(*, chat_input, **kwargs): from copilot_flow.copilot import get_chat_response result = get_chat_response(chat_input) parsedResult = {"answer": str(result["reply"]), "context": str(result["context"])} return parsedResult def run_evaluation(eval_name, dataset_path): model_config = AzureOpenAIModelConfiguration( azure_deployment=os.getenv("AZURE_OPENAI_EVALUATION_DEPLOYMENT"), api_version=os.getenv("AZURE_OPENAI_API_VERSION"), azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"), ) # Initializing Evaluators relevance_eval = RelevanceEvaluator(model_config) groundedness_eval = GroundednessEvaluator(model_config) coherence_eval = CoherenceEvaluator(model_config) output_path = "./eval_results.jsonl" result = evaluate( target=copilot_wrapper, evaluation_name=eval_name, data=dataset_path, evaluators={ "relevance": relevance_eval, "groundedness": groundedness_eval, "coherence": coherence_eval, }, evaluator_config={ "relevance": {"question": "${data.chat_input}"}, "coherence": {"question": "${data.chat_input}"}, }, # to log evaluation to the cloud AI Studio project azure_ai_project={ "subscription_id": os.getenv("AZURE_SUBSCRIPTION_ID"), "resource_group_name": os.getenv("AZURE_RESOURCE_GROUP"), "project_name": os.getenv("AZUREAI_PROJECT_NAME"), }, ) tabular_result = pd.DataFrame(result.get("rows")) tabular_result.to_json(output_path, orient="records", lines=True) return result, tabular_result if __name__ == "__main__": eval_name = "tutorial-eval" dataset_path = "./eval_dataset.jsonl" result, tabular_result = run_evaluation( eval_name=eval_name, dataset_path=dataset_path ) from pprint import pprint pprint("-----Summarized Metrics-----") pprint(result["metrics"]) pprint("-----Tabular Result-----") pprint(tabular_result) pprint(f"View evaluation results in AI Studio: {result['studio_url']}")
Sonundaki ana işlev, değerlendirme sonucunu yerel olarak görüntülemenizi sağlar ve size AI Studio'daki değerlendirme sonuçlarına bir bağlantı verir.
Değerlendirme betiğini çalıştırma
Konsolunuzdan Azure CLI ile Azure hesabınızda oturum açın:
az login
Gerekli paketleri yükleyin:
pip install promptflow-evals pip install promptflow-azure
Şimdi değerlendirme betiğini çalıştırın:
python evaluate.py
Değerlendirme için istem akışı SDK'sını kullanma hakkında daha fazla bilgi için bkz . İstem akışı SDK'sı ile değerlendirme.
Değerlendirme çıkışını yorumlama
Konsol çıkışında her soru için bir yanıt ve özetlenmiş ölçümleri bu güzel tablo biçiminde görürsünüz. (Çıkışınızda farklı sütunlar görebilirsiniz.)
'-----Summarized Metrics-----'
{'coherence.gpt_coherence': 4.3076923076923075,
'groundedness.gpt_groundedness': 4.384615384615385,
'relevance.gpt_relevance': 4.384615384615385}
'-----Tabular Result-----'
question ... gpt_coherence
0 Which tent is the most waterproof? ... 5
1 Which camping table holds the most weight? ... 5
2 How much does TrailWalker Hiking Shoes cost? ... 5
3 What is the proper care for trailwalker hiking... ... 5
4 What brand is the TrailMaster tent? ... 1
5 How do I carry the TrailMaster tent around? ... 5
6 What is the floor area for Floor Area? ... 3
7 What is the material for TrailBlaze Hiking Pants ... 5
8 What color do the TrailBlaze Hiking Pants come ... 5
9 Can the warranty for TrailBlaze pants be trans... ... 3
10 How long are the TrailBlaze pants under warren... ... 5
11 What is the material for PowerBurner Camping S... ... 5
12 Is France in Europe? ... 1
Betik, tam değerlendirme sonuçlarını öğesine ./eval_results.jsonl
yazar.
Azure AI Studio projenizde değerlendirme sonuçlarını görüntülemek için konsolda bir bağlantı vardır.
Not
Şunu görebilirsiniz ERROR:asyncio:Unclosed client session
: Bu güvenli bir şekilde yoksayılabilir ve değerlendirme sonuçlarını etkilemez.
AI Studio'da değerlendirme sonuçlarını görüntüleme
Değerlendirme çalıştırması tamamlandıktan sonra, Azure AI Studio'daki Değerlendirme sayfasında değerlendirme sonuçlarını görüntülemek için bağlantıyı izleyin.
Ayrıca tek tek satırlara bakabilir, satır başına ölçüm puanlarını görebilir ve alınan bağlamın/belgelerin tamamını görüntüleyebilirsiniz. Bu ölçümler değerlendirme sonuçlarını yorumlama ve hata ayıklama konusunda yararlı olabilir.
AI Studio'daki değerlendirme sonuçları hakkında daha fazla bilgi için bkz . AI Studio'da değerlendirme sonuçlarını görüntüleme.
Sohbet uygulamanızın beklendiği gibi davrandığını doğruladığınıza göre, uygulamanızı dağıtmaya hazırsınız demektir.
Sohbet uygulamasını Azure'a dağıtma
Şimdi bu sohbet uygulamasını bir dış uygulama veya web sitesi tarafından kullanılabilmesi için yönetilen bir uç noktaya dağıtalım.
Dağıtım betiği:
- Yönetilen çevrimiçi uç nokta oluşturma
- Akışımızı model olarak tanımlama
- Akışımızı, ortam değişkenlerimizi içeren bu uç noktadaki yönetilen bir ortama dağıtma
- Tüm trafiği bu dağıtıma yönlendirme
- Azure AI Studio'da dağıtımı görüntülemek ve test etmek için bağlantıyı çıktılayın
Dağıtım, akış klasörünüzde belirtilene dayalı requirement.txt
bir derleme bağlamı (Dockerfile) tanımlar ve ayrıca ortam değişkenlerimizi dağıtılan ortama ayarlar, böylece sohbet uygulamamızın yerel ortamda çalıştığı gibi üretim ortamında da aynı şekilde çalıştığından emin olabiliriz.
Dağıtım için derleme bağlamı (Dockerfile)
Dağıtılan ortamın bir derleme bağlamı olması gerektiğinden, dağıtılan ortam için bir Dockerfile tanımlayalım. Dağıtım betiği, bu Dockerfile'ı temel alan bir ortam oluşturur. bu Dockerfile dosyasını copilot_flow klasöründe oluşturun:
FROM mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest
COPY ./requirements.txt .
RUN pip install -r requirements.txt
Sohbet uygulamasını yönetilen uç noktaya dağıtma
Uygulamanızı Azure'da yönetilen bir uç noktaya dağıtmak için çevrimiçi bir uç nokta oluşturun, ardından bu uç noktada bir dağıtım oluşturun ve ardından tüm trafiği bu dağıtıma yönlendirin.
Dağıtımı oluşturmanın bir parçası olarak, copilot_flow klasörünüz bir model olarak paketlenir ve bir bulut ortamı oluşturulur. Uç nokta, Microsoft Entra Id kimlik doğrulaması ile ayarlanır. Kodda veya Azure AI Studio'da uç nokta ayrıntıları sayfasında istediğiniz kimlik doğrulama modunu güncelleştirebilirsiniz.
Önemli
Uygulamanızı Azure'da yönetilen bir uç noktaya dağıtmak, seçtiğiniz örnek türüne göre işlem maliyetiyle ilişkilidir. İlişkili maliyetin farkında olduğunuzdan ve belirttiğiniz örnek türü için kotaya sahip olduğunuzdan emin olun. Çevrimiçi uç noktalar hakkında daha fazla bilgi edinin.
Rag-tutorial klasöründe dosya deploy.py oluşturun. Şu kodu ekleyin:
import os
from dotenv import load_dotenv
load_dotenv()
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
BuildContext,
)
client = MLClient(
DefaultAzureCredential(),
os.getenv("AZURE_SUBSCRIPTION_ID"),
os.getenv("AZURE_RESOURCE_GROUP"),
os.getenv("AZUREAI_PROJECT_NAME"),
)
endpoint_name = "tutorial-endpoint"
deployment_name = "tutorial-deployment"
endpoint = ManagedOnlineEndpoint(
name=endpoint_name,
properties={
"enforce_access_to_default_secret_stores": "enabled" # for secret injection support
},
auth_mode="aad_token", # using aad auth instead of key-based auth
)
# Get the directory of the current script
script_dir = os.path.dirname(os.path.abspath(__file__))
# Define the path to the directory, appending the script directory to the relative path
copilot_path = os.path.join(script_dir, "copilot_flow")
deployment = ManagedOnlineDeployment(
name=deployment_name,
endpoint_name=endpoint_name,
model=Model(
name="copilot_flow_model",
path=copilot_path, # path to promptflow folder
properties=[ # this enables the chat interface in the endpoint test tab
["azureml.promptflow.source_flow_id", "basic-chat"],
["azureml.promptflow.mode", "chat"],
["azureml.promptflow.chat_input", "chat_input"],
["azureml.promptflow.chat_output", "reply"],
],
),
environment=Environment(
build=BuildContext(
path=copilot_path,
),
inference_config={
"liveness_route": {
"path": "/health",
"port": 8080,
},
"readiness_route": {
"path": "/health",
"port": 8080,
},
"scoring_route": {
"path": "/score",
"port": 8080,
},
},
),
instance_type="Standard_DS3_v2",
instance_count=1,
environment_variables={
"PRT_CONFIG_OVERRIDE": f"deployment.subscription_id={client.subscription_id},deployment.resource_group={client.resource_group_name},deployment.workspace_name={client.workspace_name},deployment.endpoint_name={endpoint_name},deployment.deployment_name={deployment_name}",
"AZURE_OPENAI_ENDPOINT": os.getenv("AZURE_OPENAI_ENDPOINT"),
"AZURE_SEARCH_ENDPOINT": os.getenv("AZURE_SEARCH_ENDPOINT"),
"AZURE_OPENAI_API_VERSION": os.getenv("AZURE_OPENAI_API_VERSION"),
"AZURE_OPENAI_CHAT_DEPLOYMENT": os.getenv("AZURE_OPENAI_CHAT_DEPLOYMENT"),
"AZURE_OPENAI_EVALUATION_DEPLOYMENT": os.getenv(
"AZURE_OPENAI_EVALUATION_DEPLOYMENT"
),
"AZURE_OPENAI_EMBEDDING_DEPLOYMENT": os.getenv(
"AZURE_OPENAI_EMBEDDING_DEPLOYMENT"
),
"AZUREAI_SEARCH_INDEX_NAME": os.getenv("AZUREAI_SEARCH_INDEX_NAME"),
},
)
# 1. create endpoint
created_endpoint = client.begin_create_or_update(
endpoint
).result() # result() means we wait on this to complete
# 2. create deployment
created_deployment = client.begin_create_or_update(deployment).result()
# 3. update endpoint traffic for the deployment
endpoint.traffic = {deployment_name: 100} # 100% of traffic
client.begin_create_or_update(endpoint).result()
Önemli
Uç nokta ve dağıtım adı bir Azure bölgesinde benzersiz olmalıdır. Uç nokta veya dağıtım adının zaten var olduğunu belirten bir hata alırsanız farklı adlar deneyin.
Çıkış dağıtım ayrıntıları
Değerlendirme sonucunu yerel olarak görüntülemek ve stüdyo bağlantısını almak için dağıtım betiğinizin sonuna aşağıdaki satırları ekleyin:
def get_ai_studio_url_for_deploy(
client: MLClient, endpoint_name: str, deployment_name
) -> str:
studio_base_url = "https://ai.azure.com"
deployment_url = f"{studio_base_url}/projectdeployments/realtime/{endpoint_name}/{deployment_name}/detail?wsid=/subscriptions/{client.subscription_id}/resourceGroups/{client.resource_group_name}/providers/Microsoft.MachineLearningServices/workspaces/{client.workspace_name}&deploymentName={deployment_name}"
return deployment_url
print("\n ~~~Deployment details~~~")
print(f"Your online endpoint name is: {endpoint_name}")
print(f"Your deployment name is: {deployment_name}")
print("\n ~~~Test in the Azure AI Studio~~~")
print("\n Follow this link to your deployment in the Azure AI Studio:")
print(
get_ai_studio_url_for_deploy(
client=client, endpoint_name=endpoint_name, deployment_name=deployment_name
)
)
Şimdi betiği şu şekilde çalıştırın:
python deploy.py
Not
Dağıtımın tamamlanması 10 dakikadan uzun sürebilir. Beklerken uç noktaya erişim atamak için sonraki adımı izlemenizi öneririz.
Dağıtım tamamlandıktan sonra Azure AI Studio dağıtım sayfasına bir bağlantı alırsınız ve burada dağıtımınızı test edebilirsiniz.
Dağıtımı doğrulama
Uygulamanızı Azure AI Studio'da test yapmanızı öneririz. Dağıtılan uç noktanızı yerel olarak test etmek isterseniz, bunu bazı özel kodlarla çağırabilirsiniz.
Sonraki adımlar için ihtiyacınız olan uç nokta adınızı not edin.
Azure OpenAI kaynağı için uç nokta erişimi
Bu bölümle ilgili yardım için Azure aboneliği sahibinizden (BT yöneticiniz kim olabilir) istemeniz gerekebilir.
Uygulamanızın dağıtmasını beklerken, siz veya yöneticiniz uç noktaya rol tabanlı erişim atayabilirsiniz. Bu roller, uygulamanın yerel ortamda olduğu gibi dağıtılan ortamda anahtarlar olmadan çalışmasını sağlar.
Daha önce hesabınıza Microsoft Entra Id kimlik doğrulamasını kullanarak kaynağa erişebilmek için belirli bir rol sağladınız. Şimdi uç noktayı aynı Bilişsel Hizmetler OpenAI Kullanıcı rolüne atayın.
Not
Bu adımlar, hızlı başlangıçta Azure OpenAI Hizmeti'ni kullanmak üzere kullanıcı kimliğiniz için bir rol atamanıza benzer.
Kullandığınız Azure AI Services kaynağına erişim izni vermek için:
AI Studio'da projenize gidin ve sol bölmeden Ayarlar'ı seçin.
Bağlı kaynaklar bölümünde AIServices türündeki bağlantı adını seçin.
Not
AIServices bağlantısını görmüyorsanız bunun yerine Azure OpenAI bağlantısını kullanın.
Kaynak ayrıntıları sayfasında, Azure portalında yapay zeka hizmetleri kaynağını açmak için Kaynak başlığı altındaki bağlantıyı seçin.
Azure portalının sol sayfasında Erişim denetimi (IAM)>+ Rol ataması ekle'yi>seçin.
Bilişsel Hizmetler OpenAI Kullanıcı rolünü arayın ve seçin. Sonra İleri'yi seçin.
Yönetilen kimlik öğesini seçin. Ardından Üye seç'i seçin.
Açılan Üye seç bölmesinde Yönetilen kimlik için Machine learning çevrimiçi uç noktası'nı seçin ve uç nokta adınızı arayın. Uç noktayı ve ardından Seç'i seçin.
Sihirbaz aracılığıyla devam edin ve rol atamasını eklemek için Gözden Geçir + ata'yı seçin.
Not
Erişimin yayılması birkaç dakika sürebilir. Sonraki adımda test ederken yetkisiz bir hata alırsanız birkaç dakika sonra yeniden deneyin.
Azure AI Search kaynağı için uç nokta erişimi
Bu bölümle ilgili yardım için Azure aboneliği sahibinizden (BT yöneticiniz kim olabilir) istemeniz gerekebilir.
Arama Dizini Veri Katkıda Bulunanı rolünü Azure AI Arama hizmeti'nize atadığınıza benzer şekilde, uç noktanız için aynı rolü atamanız gerekir.
Azure AI Studio'da Ayarlar'ı seçin ve bağlı Azure AI Arama hizmetine gidin.
Kaynağın özetini açmak için bağlantıyı seçin. Özet sayfasındaki bağlantıyı seçerek kaynağı Azure portalında açın.
Azure portalının sol sayfasında Erişim denetimi (IAM)>+ Rol ataması ekle'yi>seçin.
Arama Dizini Veri Katkıda Bulunanı rolünü arayın ve seçin. Sonra İleri'yi seçin.
Yönetilen kimlik öğesini seçin. Ardından Üye seç'i seçin.
Açılan Üye seç bölmesinde Yönetilen kimlik için Machine learning çevrimiçi uç noktası'nı seçin ve uç nokta adınızı arayın. Uç noktayı ve ardından Seç'i seçin.
Sihirbaz aracılığıyla devam edin ve rol atamasını eklemek için Gözden Geçir + ata'yı seçin.
Not
Erişimin yayılması birkaç dakika sürebilir. Sonraki adımda test ederken yetkisiz bir hata alırsanız birkaç dakika sonra yeniden deneyin.
AI Studio'da dağıtımınızı test edin
Dağıtım tamamlandıktan sonra dağıtımınıza kullanışlı bir bağlantı alırsınız. Bağlantıyı kullanmıyorsanız projenizdeki Dağıtımlar sekmesine gidin ve yeni dağıtımınızı seçin.
Test sekmesini seçin ve sohbet arabiriminde soru sormayı deneyin.
Örneğin, "Trailwalker yürüyüş ayakkabıları su geçirmez mi?" yazın ve girin.
Yanıtın geri geldiğini görmek dağıtımınızı doğrular.
Hata alırsanız daha fazla ayrıntı almak için Günlükler sekmesini seçin.
Not
Yetkisiz bir hata alırsanız uç nokta erişiminiz henüz uygulanmamış olabilir. Birkaç dakika sonra yeniden deneyin.
Dağıtılan sohbet uygulamasını yerel olarak çağırma
Dağıtımınızı yerel olarak doğrulamayı tercih ediyorsanız, bunu bir Python betiği aracılığıyla çağırabilirsiniz.
Şu şekilde bir betik tanımlayın:
- Puanlama URL'mize iyi biçimlendirilmiş bir istek oluşturun.
- İsteği gönderin ve yanıtı işleyebilir.
Rag-tutorial klasörünüzde aşağıdaki kodla bir invoke-local.py dosyası oluşturun. query
ve endpoint_name
(ve diğer parametreleri) kullanım örneğinize uyacak şekilde değiştirin.
import os
from dotenv import load_dotenv
load_dotenv()
import requests
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
query = "Are the trailwalker shoes waterproof?"
endpoint_name = "tutorial-endpoint"
client = MLClient(
DefaultAzureCredential(),
os.getenv("AZURE_SUBSCRIPTION_ID"),
os.getenv("AZURE_RESOURCE_GROUP"),
os.getenv("AZUREAI_PROJECT_NAME"),
)
scoring_url = client.online_endpoints.get(endpoint_name).scoring_uri
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {client._credential.get_token('https://ml.azure.com').token}",
"Accept": "application/json",
}
response = requests.post(
scoring_url,
headers=headers,
json={"chat_input": query},
)
(print(response.json()["reply"]))
Konsolda sohbet uygulamasının sorgunuza yanıtını görmeniz gerekir.
Not
Yetkisiz bir hata alırsanız uç nokta erişiminiz henüz uygulanmamış olabilir. Birkaç dakika sonra yeniden deneyin.
Kaynakları temizleme
Gereksiz Azure maliyetlerine maruz kalmamak için, artık gerekli değilse bu öğreticide oluşturduğunuz kaynakları silmeniz gerekir. Kaynakları yönetmek için Azure portalını kullanabilirsiniz.
İlgili içerik
- İstem akışı hakkında daha fazla bilgi edinin
- RAG uygulayan örnek bir sohbet uygulaması için bkz . Azure-Samples/rag-data-openai-python-promptflow