Aracılığıyla paylaş


komut istemi akışı SDK'sını kullanarak Python'da özel sohbet uygulaması oluşturma

Önemli

Bu makalede açıklanan özelliklerden bazıları yalnızca önizleme aşamasında kullanılabilir. Bu önizleme, hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri Ek Kullanım Koşulları.

Bu hızlı başlangıçta, istem akışı SDK'sı ile yerel geliştirme ortamınızı ayarlama konusunda size yol göstereceğiz. Bir istem yazar, uygulama kodunuzun bir parçası olarak çalıştırır, yapılan LLM çağrılarını izler ve LLM'nin çıkışlarında temel bir değerlendirme çalıştırırız.

Önkoşullar

Bu hızlı başlangıcı takip etmeden önce uygulamanız için ihtiyacınız olan kaynakları oluşturun:

Henüz yapmadıysanız bu kaynakları oluşturmak için AI Studio oyun alanı hızlı başlangıcını tamamlayın. Ayrıca, hub ve proje makalesi oluşturmak için SDK kılavuzunu izleyerek de bu kaynakları oluşturabilirsiniz.

Ayrıca, Azure aboneliğinizdeki depolama hesapları için rol atamaları eklemek için gerekli izinlere sahip olmanız gerekir. İzin verme (rol ataması ekleme) yalnızca belirli Azure kaynaklarının sahibi tarafından izin verilir. Kimliğinizi kullanarak Azure OpenAI Hizmeti'ni çağırmak için bt yöneticinizden yardım istemeniz gerekebilir.

Kimliğinizi kullanarak Azure OpenAI Hizmetini çağırmak için erişim verme

Güvenlikle ilgili en iyi yöntemleri kullanmak için API anahtarları yerine Kullanıcı kimliğinizi kullanarak Azure OpenAI ile kimlik doğrulaması yapmak için Microsoft Entra Id kullanırız.

Sizin veya yöneticinizin kullanıcı kimliğinize kullanmakta olduğunuz Azure AI Services kaynağında Bilişsel Hizmetler OpenAI Kullanıcı rolü vermeniz gerekir. Bu rol, kullanıcı kimliğinizi kullanarak Azure OpenAI hizmetini çağırma olanağı sağlar.

Kullandığınız Azure AI Services kaynağına erişim izni vermek için:

  1. AI Studio'da projenize gidin ve sol bölmeden Ayarlar seçin.

  2. Bağlan kaynaklar bölümünde AIServices türündeki bağlantı adını seçin.

    Bağlantılı yapay zeka hizmetleri kaynağını seçerek açmak için proje ayarları sayfasının ekran görüntüsü.

    Not

    AIServices bağlantısını görmüyorsanız bunun yerine Azure OpenAI bağlantısını kullanın.

  3. 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.

    Kaynağın Azure portalında nasıl aç yapılacağını gösteren AI Services bağlantı ayrıntılarının ekran görüntüsü.

  4. Azure portalının sol sayfasında Erişim denetimi (IAM)>+ Rol ataması ekle'yi>seçin.

  5. Bilişsel Hizmetler OpenAI Kullanıcı rolünü arayın ve seçin. Sonra İleri'yi seçin.

    Bilişsel Hizmetler OpenAI Kullanıcı rolünü seçmek için sayfanın ekran görüntüsü.

  6. Kullanıcı, grup veya hizmet sorumlusu'nun seçin. Ardından Üye seç'i seçin.

  7. Açılan Üye seç bölmesinde rol atamasını eklemek istediğiniz kullanıcının adını arayın. Kullanıcıyı ve ardından Seç'i seçin.

    Kullanıcıya yeni rolün atandığı sayfanın ekran görüntüsü.

  8. Sihirbaz aracılığıyla devam edin ve rol atamasını eklemek için Gözden Geçir + ata'yı seçin.

Azure CLI'yi yükleme ve oturum açma

Şimdi Azure OPENAI hizmetini çağırmak için kullanıcı kimlik bilgilerinizi kullanabilmeniz için Azure CLI'yi yükleyip yerel geliştirme ortamınızdan oturum açıyoruz.

Çoğu durumda, aşağıdaki komutu kullanarak terminalinizden Azure CLI'yi yükleyebilirsiniz:

winget install -e --id Microsoft.AzureCLI

Bu komutlar belirli bir işletim sisteminiz veya kurulumunuz için çalışmıyorsa Azure CLI'yı yükleme yönergelerini izleyebilirsiniz.

Azure CLI'yı yükledikten sonra komutunu kullanarak az login oturum açın ve tarayıcıyı kullanarak oturum açın:

az login

Şimdi uygulamamızı oluşturup koddan Azure OpenAI Hizmeti'ni çağıracağız.

Yeni python ortamı oluşturma

İlk olarak, istem akışı SDK paketlerini yüklemek için kullanabileceğimiz yeni bir Python ortamı oluşturmamız gerekir. Paketleri genel Python yüklemenize YÜKLEMEYİN. Python paketlerini yüklerken her zaman bir sanal veya conda ortamı kullanmanız gerekir, aksi takdirde Python'ın genel yüklemesini bozabilirsiniz.

Gerekirse Python'ı yükleyin

Python 3.10 veya üzerini kullanmanızı öneririz, ancak en az Python 3.8'e sahip olmak gerekir. Python'ın uygun bir sürümü yüklü değilse, işletim sisteminize Python yüklemenin en kolay yolu için VS Code Python Öğreticisi'ndeki yönergeleri izleyebilirsiniz.

Sanal ortam oluşturma

Python 3.10 veya üzeri yüklüyse aşağıdaki komutları kullanarak bir sanal ortam oluşturabilirsiniz:

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

Python ortamını etkinleştirmek, komut satırını çalıştırdığınızda veya pip komut satırından çalıştırdığınızda python uygulamanızın klasöründe bulunan Python yorumlayıcısını .venv kullandığınız anlamına gelir.

Not

komutunu kullanarak deactivate Python sanal ortamından çıkabilirsiniz ve daha sonra gerektiğinde yeniden etkinleştirebilirsiniz.

İstem akışı SDK'sını yükleme

Bu bölümde, uygulamamızı derlemek için istem akışını kullanacağız. İstem akışı , LLM tabanlı yapay zeka uygulamalarının fikir geliştirme, prototip oluşturma, test, değerlendirmeden üretim dağıtımı ve izlemesine kadar uçtan uca geliştirme döngüsünü kolaylaştırmak için tasarlanmış bir geliştirme araçları paketidir.

oluşturduğunuz sanal ortama istem akışı SDK'sını yüklemek için pip kullanın.

pip install promptflow
pip install azure-identity

İstem akışı SDK'sı birden çok pakete bağımlılık alır ve bunların tümünü istemiyorsanız ayrı olarak yüklemeyi seçebilirsiniz:

  • promptflow-core: LLM kodunu yürütmek için kullanılan çekirdek istem akışı çalışma zamanını içerir
  • promptflow-tracing: Standartlarda OpenTelemetry izlemeleri yaymada kullanılan basit kitaplık
  • promptflow-devkit: yerel geliştirme ortamları için istem akışı test yatağı ve izleme görüntüleyici araçlarını içerir
  • openai: Azure OpenAI hizmetini kullanmak için istemci kitaplıkları
  • python-dotenv: ortam değişkenlerini dosyalardan .env okuyarak ayarlamak için kullanılır

Ortam değişkenlerinizi yapılandırma

Kodunuzdan Azure OpenAI hizmetini çağırmak için yapay zeka hizmetleri uç noktanız ve dağıtım adınız gereklidir. Bu hızlı başlangıçta, bu değerleri .env uygulamanızın okuyabileceği ortam değişkenlerini içeren bir dosyaya kaydedersiniz. Bu değerleri AI Studio sohbet oyun alanında bulabilirsiniz.

  1. Bir .env dosya oluşturun ve aşağıdaki kodu yapıştırın:

    AZURE_OPENAI_ENDPOINT=endpoint_value
    AZURE_OPENAI_DEPLOYMENT_NAME=deployment_name
    AZURE_OPENAI_API_VERSION=2024-02-15-preview
    
  2. AI Studio projenizin içindeki sohbet oyun alanında gezinin. İlk olarak LLM'ye bir ileti göndererek sohbetin modelinizle çalıştığını doğrulayın.

  3. Sohbet oyun alanında Azure OpenAI dağıtım adını bulun. Açılan listeden dağıtımı seçin ve görüntülemek için dağıtım adının üzerine gelin. Bu örnekte dağıtım adı gpt-35-turbo-16k şeklindedir.

    Dağıtım adını ve kodu görüntüle düğmesini vurgulayan AI Studio sohbet oyun alanının ekran görüntüsü.

  4. .env dosyasında değerini önceki adımdaki dağıtımın adıyla değiştirindeployment_name. Bu örnekte dağıtım adını gpt-35-turbo-16kkullanıyoruz.

  5. <> Kodu Görüntüle düğmesini seçin ve uç nokta değerini kopyalayın.

    Uç nokta değerini kopyalamak için düğmeyi vurgulayan kodu görüntüle açılan penceresinin ekran görüntüsü.

  6. .env dosyasında değerini önceki adımda iletişim kutusundan kopyalanan uç nokta değeriyle değiştirinendpoint_value.

Uyarı

Anahtar tabanlı kimlik doğrulaması desteklenir ancak Microsoft tarafından önerilmez. Anahtarları kullanmak istiyorsanız anahtarınızı .envdosyasına ekleyebilirsiniz, ancak lütfen git deponuzda yanlışlıkla iade etmemek için dosyanızda .gitignore olduğundan emin olun.env.

Temel sohbet istemi ve uygulaması oluşturma

İlk olarak bir istem şablonu dosyası oluşturun, bunun için istem akışı tarafından desteklenen istem şablonu biçimi olan Prompty'yi kullanacağız.

Bir chat.prompty dosya oluşturun ve içine aşağıdaki kodu kopyalayın:

---
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}}

Şimdi bu istem şablonunu kullanan bir Python dosyası oluşturalım. Bir chat.py dosya oluşturun ve içine aşağıdaki kodu yapıştırın:

import os
from dotenv import load_dotenv
load_dotenv()

from promptflow.core import Prompty, AzureOpenAIModelConfiguration

model_config = AzureOpenAIModelConfiguration(
    azure_deployment=os.getenv("AZURE_OPENAI_DEPLOYMENT_NAME"),
    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)

Şimdi konsolunuzdan Python kodunu çalıştırın:

python chat.py

Şimdi istemi çalıştırmanın çıkışını görmeniz gerekir:

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.

Sohbet kodunuzun yürütülmesini izleme

Şimdi python betiklerimizde gerçekleşen çeşitli LLM çağrıları hakkında nasıl içgörüler sağlayabildiğine göz atacağız.

Dosyanızın chat.py başlangıcında, istem akışı izlemeyi etkinleştirmek için aşağıdaki kodu ekleyin:

from promptflow.tracing import start_trace
start_trace()

Yeniden chat.py çalıştırın:

python chat.py

Bu kez çıktıda yürütmenin istem akışı izlemesini görüntülemek için bir bağlantı görürsünüz:

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

Bu bağlantıyı seçerseniz, program yürütme adımlarını, LLM'ye nelerin geçirildiğini ve yanıt çıkışını gösteren izlemeyi görürsünüz.

Program yürütme adımlarını gösteren izlemenin ekran görüntüsü.

İstem akışı izleme, belirli işlev çağrılarını izlemenize ve izlemeleri AI Studio'ya kaydetmenize de olanak tanır. Daha fazla bilgi için istem akışı SDK'sında izlemeyi kullanma bölümüne göz attığınıza emin olun.

İsteminizi değerlendirme

Şimdi konuşmanın kalitesini 0'dan 5'e kadar ölçeğe göre puanlayan ölçümler oluşturmak için istem akışı değerlendiricilerini nasıl kullanabileceğimizi gösterelim. İstemi yeniden çalıştıracağız, ancak bu kez sonuçları konuşmanın tamamını içeren bir dizide depolarız ve bunu puanlama için bire ChatEvaluator geçiririz.

İlk olarak şunu yükleyin promptflow-evals package:

pip install promptflow-evals

Şimdi aşağıdaki kodu bir evaluate.py dosyaya kopyalayın:

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_DEPLOYMENT_NAME"),
    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)

Betiği evaluate.py çalıştırın:

python evaluate.py

Şuna benzer bir çıkış görmeniz gerekir:

{'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]}}}

Görünüşe göre bu konuşmadaki LLM yanıtlarının tutarlılığı ve akıcılığı için 5 puan aldık!

Kendi özel değerlendiricilerinizi oluşturma ve değerlendirme sonuçlarını AI Studio'da günlüğe kaydetme de dahil olmak üzere, istem akışı değerlendiricilerini kullanma hakkında daha fazla bilgi için bkz . Komut istemi akışı SDK'sını kullanarak uygulamanızı değerlendirme.