Bagikan melalui


Membangun aplikasi obrolan kustom di Python menggunakan SDK alur perintah

Penting

Item yang ditandai (pratinjau) dalam artikel ini sedang dalam pratinjau publik. Pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan kami tidak merekomendasikannya untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Dalam mulai cepat ini, kami memanding Anda menyiapkan lingkungan pengembangan lokal Anda dengan SDK alur permintaan. Kami menulis perintah, menjalankannya sebagai bagian dari kode aplikasi Anda, melacak panggilan LLM yang dilakukan, dan menjalankan evaluasi dasar pada output LLM.

Prasyarat

Penting

Anda harus memiliki izin yang diperlukan untuk menambahkan penetapan peran untuk akun penyimpanan di langganan Azure Anda. Memberikan izin (menambahkan penetapan peran) hanya diizinkan oleh Pemilik sumber daya Azure tertentu. Anda mungkin perlu meminta bantuan kepada pemilik langganan Azure Anda (siapa yang mungkin admin TI Anda) untuk memberikan akses untuk memanggil Layanan Azure OpenAI menggunakan identitas Anda.

Sebelum Anda dapat mengikuti mulai cepat ini, buat sumber daya yang Anda butuhkan untuk aplikasi Anda:

  • Hub AI Studio untuk menyambungkan ke sumber daya eksternal.
  • Proyek untuk mengatur artefak proyek Anda dan berbagi jejak dan evaluasi berjalan.
  • Model obrolan Azure OpenAI yang disebarkan (gpt-35-turbo atau gpt-4)

Selesaikan mulai cepat AI Studio playground untuk membuat sumber daya ini jika Anda belum melakukannya. Anda juga dapat membuat sumber daya ini dengan mengikuti panduan SDK untuk membuat hub dan artikel proyek .

Memberikan akses untuk memanggil Layanan Azure OpenAI menggunakan identitas Anda

Untuk menggunakan praktik terbaik keamanan, alih-alih kunci API, kami menggunakan ID Microsoft Entra untuk mengautentikasi dengan Azure OpenAI menggunakan identitas pengguna Anda.

Anda atau administrator Anda perlu memberikan identitas pengguna Anda peran Pengguna OpenAI Cognitive Services pada sumber daya Azure AI Services yang Anda gunakan. Peran ini memberi Anda kemampuan untuk memanggil layanan Azure OpenAI menggunakan identitas pengguna Anda.

Untuk memberi diri Anda akses ke sumber daya Azure AI Services yang Anda gunakan:

  1. Di AI Studio, buka proyek Anda dan pilih Pengaturan dari panel kiri.

  2. Di bagian Sumber daya tersambung, pilih nama koneksi dengan jenis AIServices.

    Cuplikan layar halaman pengaturan proyek, menyoroti cara memilih sumber daya layanan AI yang tersambung untuk membukanya.

    Catatan

    Jika Anda tidak melihat koneksi AIServices , gunakan koneksi Azure OpenAI sebagai gantinya.

  3. Pada halaman detail sumber daya, pilih tautan di bawah judul Sumber Daya untuk membuka sumber daya layanan AI di portal Azure.

    Cuplikan layar detail koneksi Layanan AI yang menunjukkan cara membuka sumber daya di portal Azure.

  4. Dari halaman kiri di portal Azure, pilih Kontrol akses (IAM)>+ Tambahkan>penetapan peran.

  5. Cari peran Pengguna OpenAI Cognitive Services lalu pilih. Kemudian pilih Berikutnya.

    Cuplikan layar halaman untuk memilih peran Pengguna OpenAI Cognitive Services.

  6. Pilih Pengguna, grup, atau perwakilan layanan. Lalu pilih Pilih anggota.

  7. Di panel Pilih anggota yang terbuka, cari nama pengguna yang ingin Anda tambahkan penetapan perannya. Pilih pengguna lalu pilih Pilih.

    Cuplikan layar halaman dengan pengguna diberi peran baru.

  8. Lanjutkan melalui wizard dan pilih Tinjau + tetapkan untuk menambahkan penetapan peran.

Menginstal Azure CLI dan masuk

Anda menginstal Azure CLI dan masuk dari lingkungan pengembangan lokal Anda, sehingga Anda dapat menggunakan kredensial pengguna Anda untuk memanggil layanan Azure OpenAI.

Dalam kebanyakan kasus, Anda dapat menginstal Azure CLI dari terminal Anda menggunakan perintah berikut:

winget install -e --id Microsoft.AzureCLI

Anda dapat mengikuti instruksi Cara menginstal Azure CLI jika perintah ini tidak berfungsi untuk sistem operasi atau penyiapan tertentu.

Setelah Anda menginstal Azure CLI, masuk menggunakan az login perintah dan masuk menggunakan browser:

az login

Sekarang kita membuat aplikasi dan memanggil Azure OpenAI Service dari kode.

Membuat lingkungan Python baru

Pertama, kita perlu membuat lingkungan Python baru yang dapat kita gunakan untuk menginstal paket SDK alur prompt. JANGAN menginstal paket ke dalam penginstalan python global Anda. Anda harus selalu menggunakan lingkungan virtual atau conda saat menginstal paket python, jika tidak, Anda dapat memutuskan penginstalan global Python Anda.

Jika diperlukan, instal Python

Sebaiknya gunakan Python 3.10 atau yang lebih baru, tetapi diperlukan setidaknya Python 3.8. Jika Anda tidak memiliki versi Python yang sesuai yang terinstal, Anda dapat mengikuti instruksi dalam Tutorial Python Visual Studio Code untuk cara term mudah menginstal Python pada sistem operasi Anda.

Membuat lingkungan virtual

Jika Anda sudah menginstal Python 3.10 atau yang lebih tinggi, Anda dapat membuat lingkungan virtual menggunakan perintah berikut:

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

Mengaktifkan lingkungan Python berarti bahwa ketika Anda menjalankan python atau pip dari baris perintah, Anda kemudian menggunakan interpreter Python yang terkandung dalam .venv folder aplikasi Anda.

Catatan

Anda dapat menggunakan deactivate perintah untuk keluar dari lingkungan virtual python, dan nantinya dapat mengaktifkannya kembali saat diperlukan.

Menginstal SDK alur perintah

Di bagian ini, kami menggunakan alur prompt untuk membangun aplikasi kami. Alur prompt adalah serangkaian alat pengembangan yang dirancang untuk menyederhanakan siklus pengembangan end-to-end aplikasi AI berbasis LLM, dari ideasi, prototipe, pengujian, evaluasi hingga penyebaran dan pemantauan produksi.

Gunakan pip untuk menginstal SDK alur perintah ke lingkungan virtual yang Anda buat.

pip install promptflow
pip install azure-identity

SDK alur prompt mengambil dependensi pada beberapa paket, yang dapat Anda pilih untuk diinstal secara terpisah jika Anda tidak menginginkan semuanya:

  • promptflow-core: berisi runtime alur prompt inti yang digunakan untuk mengeksekusi kode LLM
  • promptflow-tracing: pustaka ringan yang digunakan untuk memancarkan jejak OpenTelemetry dalam standar
  • promptflow-devkit: berisi tempat tidur pengujian aliran perintah dan alat penampil pelacakan untuk lingkungan pengembangan lokal
  • openai: pustaka klien untuk menggunakan layanan Azure OpenAI
  • python-dotenv: digunakan untuk mengatur variabel lingkungan dengan membacanya dari .env file

Mengonfigurasi variabel lingkungan Anda

Titik akhir layanan AI dan nama penyebaran Anda diperlukan untuk memanggil layanan Azure OpenAI dari kode Anda. Dalam mulai cepat ini, Anda menyimpan nilai-nilai ini dalam .env file, yang merupakan file yang berisi variabel lingkungan yang dapat dibaca aplikasi Anda. Anda dapat menemukan nilai-nilai ini di taman bermain obrolan AI Studio.

  1. Buat .env file, dan tempelkan kode berikut:

    AZURE_OPENAI_ENDPOINT=endpoint_value
    AZURE_OPENAI_CHAT_DEPLOYMENT=chat_deployment_name
    AZURE_OPENAI_API_VERSION=api_version
    
  2. Navigasi ke taman bermain obrolan di dalam proyek AI Studio Anda. Pertama-tama validasi bahwa obrolan berfungsi dengan model Anda dengan mengirim pesan ke LLM.

  3. Temukan nama penyebaran Azure OpenAI di taman bermain obrolan. Pilih penyebaran di menu dropdown dan arahkan mouse ke atas nama penyebaran untuk melihatnya. Dalam contoh ini, nama penyebarannya adalah gpt-35-turbo-16k.

    Cuplikan layar playground obrolan AI Studio dibuka, menyoroti nama penyebaran dan tombol tampilkan kode.

  4. .env Dalam file, ganti chat_deployment_name dengan nama penyebaran dari langkah sebelumnya. Dalam contoh ini, kita menggunakan nama gpt-35-turbo-16kpenyebaran .

  5. Pilih tombol <> Tampilkan Kode dan salin nilai titik akhir dan nilai versi API.

    Cuplikan layar popup kode tampilan yang menyoroti tombol untuk menyalin nilai titik akhir.

  6. .env Dalam file, ganti endpoint_value dengan nilai titik akhir dan ganti api_version dengan versi API yang disalin dari dialog di langkah sebelumnya (seperti "pratinjau 2024-02-15").

Peringatan

Autentikasi berbasis kunci didukung tetapi tidak direkomendasikan oleh Microsoft. Jika Anda ingin menggunakan kunci, Anda dapat menambahkan kunci Anda ke .env, tetapi pastikan bahwa Anda .env berada di file Anda .gitignore sehingga Anda tidak secara tidak sengaja memeriksanya ke repositori git Anda.

Membuat permintaan dan aplikasi obrolan dasar

Pertama-tama buat file Prompty , yang merupakan format templat prompt yang didukung oleh alur prompt.

Buat chat.prompty file dan salin kode berikut ke dalamnya:

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

Sekarang mari kita buat file Python yang menggunakan templat perintah ini. Buat chat.py file dan tempelkan kode berikut ke dalamnya:

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)

Sekarang dari konsol Anda, jalankan kode Python:

python chat.py

Anda sekarang akan melihat output dari menjalankan prompty:

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.

Melacak eksekusi kode obrolan Anda

Sekarang kita melihat bagaimana pelacakan alur prompt dapat memberikan wawasan tentang berbagai panggilan LLM yang terjadi dalam skrip Python kami.

Di awal file Anda chat.py , tambahkan kode berikut untuk mengaktifkan pelacakan alur perintah:

from promptflow.tracing import start_trace
start_trace()

Jalankan ulang anda chat.py lagi:

python chat.py

Kali ini Anda melihat tautan dalam output untuk melihat jejak alur perintah dari eksekusi:

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

Jika Anda memilih tautan tersebut, Anda kemudian akan melihat jejak yang menunjukkan langkah-langkah eksekusi program, apa yang diteruskan ke LLM dan output respons.

Cuplikan layar jejak memperlihatkan langkah-langkah eksekusi program.

Pelacakan alur perintah juga memungkinkan Anda melacak panggilan fungsi tertentu dan jejak log ke AI Studio, untuk informasi selengkapnya, pastikan untuk memeriksa Cara menggunakan pelacakan di SDK alur perintah.

Mengevaluasi perintah Anda

Sekarang mari kita tunjukkan bagaimana kita dapat menggunakan evaluator alur prompt untuk menghasilkan metrik yang dapat menilai kualitas percakapan pada skala dari 0 hingga 5. Kami menjalankan perintah lagi tetapi kali ini kami menyimpan hasilnya ke dalam array yang berisi percakapan lengkap, lalu meneruskan ke skor ke ChatEvaluator .

Pertama, instal promptflow-evals package:

pip install promptflow-evals

Sekarang salin kode berikut ke evaluate.py file:

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)

Jalankan evaluate.py skrip:

python evaluate.py

Anda akan melihat output yang terlihat seperti ini:

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

Sepertinya kami mencetak 5 untuk koherensi dan kefasihan respons LLM pada percakapan ini!

Untuk informasi selengkapnya tentang cara menggunakan evaluator alur perintah, termasuk cara membuat evaluator kustom Anda sendiri dan hasil evaluasi log ke AI Studio, pastikan untuk memeriksa Mengevaluasi aplikasi Anda menggunakan SDK alur perintah.

Langkah selanjutnya