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:
Di AI Studio, buka proyek Anda dan pilih Pengaturan dari panel kiri.
Di bagian Sumber daya tersambung, pilih nama koneksi dengan jenis AIServices.
Catatan
Jika Anda tidak melihat koneksi AIServices , gunakan koneksi Azure OpenAI sebagai gantinya.
Pada halaman detail sumber daya, pilih tautan di bawah judul Sumber Daya untuk membuka sumber daya layanan AI di portal Azure.
Dari halaman kiri di portal Azure, pilih Kontrol akses (IAM)>+ Tambahkan>penetapan peran.
Cari peran Pengguna OpenAI Cognitive Services lalu pilih. Kemudian pilih Berikutnya.
Pilih Pengguna, grup, atau perwakilan layanan. Lalu pilih Pilih anggota.
Di panel Pilih anggota yang terbuka, cari nama pengguna yang ingin Anda tambahkan penetapan perannya. Pilih pengguna lalu pilih Pilih.
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:
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:
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 LLMpromptflow-tracing
: pustaka ringan yang digunakan untuk memancarkan jejak OpenTelemetry dalam standarpromptflow-devkit
: berisi tempat tidur pengujian aliran perintah dan alat penampil pelacakan untuk lingkungan pengembangan lokalopenai
: pustaka klien untuk menggunakan layanan Azure OpenAIpython-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.
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
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.
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.
.env
Dalam file, gantichat_deployment_name
dengan nama penyebaran dari langkah sebelumnya. Dalam contoh ini, kita menggunakan namagpt-35-turbo-16k
penyebaran .Pilih tombol <> Tampilkan Kode dan salin nilai titik akhir dan nilai versi API.
.env
Dalam file, gantiendpoint_value
dengan nilai titik akhir dan gantiapi_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.
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.