ယခင်သင်ခန်းစာများတွင် သင်တော်တော်များများလေ့လာပြီးဖြစ်ပါပြီ။ သို့သော် ကျွန်ုပ်တို့ ပိုမိုကောင်းမွန်စေရန် ဆက်လက်တိုးတက်နိုင်ပါသေးသည်။ ကျွန်ုပ်တို့ လုပ်ဆောင်နိုင်သည့် အချို့သောအရာများမှာ တုံ့ပြန်မှုကို အလွယ်တကူ အလုပ်လုပ်နိုင်ရန် တုံ့ပြန်မှုပုံစံကို ပိုမိုတိကျစေခြင်းနှင့် အခြားအရင်းအမြစ်များမှ ဒေတာများကို ထည့်သွင်းခြင်းဖြင့် ကျွန်ုပ်တို့၏အက်ပလီကေးရှင်းကို ပိုမိုချမ်းသာစေခြင်းတို့ဖြစ်သည်။
အထက်ဖော်ပြထားသော ပြဿနာများကို ဒီအခန်းမှာ ဖြေရှင်းရန် ရည်ရွယ်ထားသည်။
ဒီသင်ခန်းစာမှာ အောက်ပါအကြောင်းအရာများကို လေ့လာပါမည်-
- Function Calling ဆိုတာဘာလဲ၊ ၎င်း၏ အသုံးချနိုင်မှုများကို ရှင်းပြခြင်း။
- Azure OpenAI ကို အသုံးပြု၍ Function Call တစ်ခု ဖန်တီးခြင်း။
- Function Call ကို အက်ပလီကေးရှင်းတစ်ခုထဲတွင် ပေါင်းစပ်အသုံးပြုခြင်း။
ဒီသင်ခန်းစာပြီးဆုံးချိန်တွင် သင်သည်-
- Function Calling ကို အသုံးပြုရသည့် ရည်ရွယ်ချက်ကို ရှင်းပြနိုင်မည်။
- Azure OpenAI Service ကို အသုံးပြု၍ Function Call ကို စနစ်တကျတပ်ဆင်နိုင်မည်။
- သင့်အက်ပလီကေးရှင်း၏ အသုံးပြုမှုအတွက် ထိရောက်သော Function Calls ကို ဒီဇိုင်းဆွဲနိုင်မည်။
ဒီသင်ခန်းစာအတွက် ကျွန်ုပ်တို့သည် ကျောင်းသားများကို နည်းပညာသင်တန်းများ ရှာဖွေရန် Chatbot ကို အသုံးပြုနိုင်စေရန် feature တစ်ခု ဖန်တီးလိုပါသည်။ ကျွန်ုပ်တို့သည် ၎င်းတို့၏ ကျွမ်းကျင်မှုအဆင့်၊ လက်ရှိအလုပ်အကိုင်နှင့် စိတ်ဝင်စားသော နည်းပညာများနှင့် ကိုက်ညီသော သင်တန်းများကို အကြံပြုပေးမည်ဖြစ်သည်။
ဒီအခြေအနေကို ပြည့်စုံစေရန် ကျွန်ုပ်တို့သည် အောက်ပါအရာများကို ပေါင်းစပ်အသုံးပြုပါမည်-
Azure OpenAIကို အသုံးပြု၍ အသုံးပြုသူအတွက် chat အတွေ့အကြုံ ဖန်တီးခြင်း။Microsoft Learn Catalog APIကို အသုံးပြု၍ အသုံးပြုသူ၏ တောင်းဆိုမှုအပေါ် အခြေခံ၍ သင်တန်းများကို ရှာဖွေခြင်း။Function Callingကို အသုံးပြု၍ အသုံးပြုသူ၏ မေးခွန်းကို function သို့ ပို့ပြီး API တောင်းဆိုမှုကို ပြုလုပ်ခြင်း။
စတင်ရန်၊ Function Calling ကို ဘာကြောင့် အသုံးပြုလိုသလဲဆိုတာကို ကြည့်လိုက်ရအောင်-
Function Calling မရှိမီ LLM မှ တုံ့ပြန်မှုများသည် အဆင့်မပြေဘဲ မတူညီမှုများရှိခဲ့သည်။ Developer များသည် တုံ့ပြန်မှု၏ အမျိုးမျိုးကို ကိုင်တွယ်နိုင်ရန် အလွန်ရှုပ်ထွေးသော အတည်ပြုရေး code များရေးရန် လိုအပ်ခဲ့သည်။ "Stockholm ရှိ လက်ရှိရာသီဥတုက ဘာလဲ?" ဆိုသည့် မေးခွန်းများကို အသုံးပြုသူများ မရနိုင်ခဲ့ပါ။ ၎င်းသည် မော်ဒယ်များသည် ဒေတာကို လေ့လာသည့်အချိန်အတိုင်းအတာအတွင်း အကန့်အသတ်ရှိသောကြောင့် ဖြစ်သည်။
Function Calling သည် Azure OpenAI Service ၏ feature တစ်ခုဖြစ်ပြီး အောက်ပါ အကန့်အသတ်များကို ကျော်လွှားရန် ရည်ရွယ်ထားသည်-
- တုံ့ပြန်မှုပုံစံတိကျမှု - တုံ့ပြန်မှုပုံစံကို ပိုမိုထိန်းချုပ်နိုင်ပါက တုံ့ပြန်မှုကို အခြားစနစ်များသို့ ပိုမိုလွယ်ကူစွာ ပေါင်းစပ်နိုင်မည်။
- အပြင်ပဒေတာ - Chat context တွင် အက်ပလီကေးရှင်း၏ အခြားအရင်းအမြစ်များမှ ဒေတာကို အသုံးပြုနိုင်စွမ်း။
အောက်ပါအခြေအနေကို လုပ်ဆောင်လိုပါက ထည့်သွင်းထားသော notebook ကို အသုံးပြုရန် ကျွန်ုပ်တို့ အကြံပြုပါသည်။ သို့မဟုတ် function များက ပြဿနာကို ဘယ်လိုဖြေရှင်းနိုင်မည်ကို ဖော်ပြရန် ကျွန်ုပ်တို့ ကြိုးစားနေသောအတိုင်း ဖတ်ရှုနိုင်ပါသည်။
တုံ့ပြန်မှုပုံစံပြဿနာကို ဖော်ပြသည့် ဥပမာကို ကြည့်လိုက်ရအောင်-
ကျောင်းသားဒေတာများကို စုစည်းထားသော database တစ်ခု ဖန်တီးလိုသည်ဟု ဆိုပါစို့။ ၎င်းတို့ကို သင်တန်းများအတွက် အကြံပြုရန် အသုံးပြုနိုင်မည်။ အောက်တွင် ကျောင်းသားများ၏ ဖော်ပြချက်နှစ်ခုရှိပြီး ၎င်းတို့တွင် ပါဝင်သော ဒေတာများသည် တူညီမှုများရှိသည်။
-
ကျွန်ုပ်တို့၏ Azure OpenAI resource သို့ ချိတ်ဆက်မှုတစ်ခု ဖန်တီးပါ-
import os import json from openai import AzureOpenAI from dotenv import load_dotenv load_dotenv() client = AzureOpenAI( api_key=os.environ['AZURE_OPENAI_API_KEY'], # this is also the default, it can be omitted api_version = "2023-07-01-preview" ) deployment=os.environ['AZURE_OPENAI_DEPLOYMENT']
အောက်တွင်
api_type,api_base,api_versionနှင့်api_keyကို သတ်မှတ်ထားသော Azure OpenAI ချိတ်ဆက်မှုကို ဖန်တီးရန် Python code တစ်ချို့ပါရှိသည်။ -
student_1_descriptionနှင့်student_2_descriptionvariables ကို အသုံးပြု၍ ကျောင်းသားဖော်ပြချက်နှစ်ခု ဖန်တီးခြင်း။student_1_description="Emily Johnson is a sophomore majoring in computer science at Duke University. She has a 3.7 GPA. Emily is an active member of the university's Chess Club and Debate Team. She hopes to pursue a career in software engineering after graduating." student_2_description = "Michael Lee is a sophomore majoring in computer science at Stanford University. He has a 3.8 GPA. Michael is known for his programming skills and is an active member of the university's Robotics Club. He hopes to pursue a career in artificial intelligence after finishing his studies."
အထက်ပါ ကျောင်းသားဖော်ပြချက်များကို LLM သို့ ပို့လိုပါသည်။ ဒီဒေတာကို ကျွန်ုပ်တို့၏အက်ပလီကေးရှင်းတွင် အသုံးပြုနိုင်ပြီး API သို့ ပို့ခြင်း သို့မဟုတ် database တွင် သိမ်းဆည်းနိုင်သည်။
-
LLM ကို ဘာအချက်အလက်များကို ရှာဖွေပြီး JSON ပုံစံဖြင့် တုံ့ပြန်ရန် အမိန့်ပေးသော identical prompts နှစ်ခုကို ဖန်တီးလိုက်ပါ-
prompt1 = f''' Please extract the following information from the given text and return it as a JSON object: name major school grades club This is the body of text to extract the information from: {student_1_description} ''' prompt2 = f''' Please extract the following information from the given text and return it as a JSON object: name major school grades club This is the body of text to extract the information from: {student_2_description} '''
အထက်ပါ prompts တွင် LLM ကို အချက်အလက်များကို ထုတ်ယူပြီး JSON ပုံစံဖြင့် တုံ့ပြန်ရန် အမိန့်ပေးထားသည်။
-
Prompts များနှင့် Azure OpenAI ချိတ်ဆက်မှုကို စနစ်တကျတပ်ဆင်ပြီးနောက်၊
openai.ChatCompletionကို အသုံးပြု၍ LLM သို့ prompts များကို ပို့လိုက်ပါ။ Prompt ကိုmessagesvariable တွင် သိမ်းဆည်းပြီး role ကိုuserသတ်မှတ်ပါ။ ၎င်းသည် chatbot သို့ အသုံးပြုသူမှ message ရေးသားခြင်းကို အတုယူရန်ဖြစ်သည်။# response from prompt one openai_response1 = client.chat.completions.create( model=deployment, messages = [{'role': 'user', 'content': prompt1}] ) openai_response1.choices[0].message.content # response from prompt two openai_response2 = client.chat.completions.create( model=deployment, messages = [{'role': 'user', 'content': prompt2}] ) openai_response2.choices[0].message.content
ယခု LLM သို့ requests နှစ်ခုလုံးကို ပို့ပြီး openai_response1['choices'][0]['message']['content'] ဖြင့် response ကို ရှာဖွေကြည့်နိုင်ပါသည်။
-
Response ကို JSON ပုံစံသို့ ပြောင်းရန်
json.loadsကို ခေါ်ပါ-# Loading the response as a JSON object json_response1 = json.loads(openai_response1.choices[0].message.content) json_response1
Response 1:
{ "name": "Emily Johnson", "major": "computer science", "school": "Duke University", "grades": "3.7", "club": "Chess Club" }Response 2:
{ "name": "Michael Lee", "major": "computer science", "school": "Stanford University", "grades": "3.8 GPA", "club": "Robotics Club" }Prompts တူညီပြီး ဖော်ပြချက်များ တူညီမှုများရှိသော်လည်း
Gradesproperty ၏ values မတူညီသော format များဖြင့် ရရှိသည်။ ဥပမာအားဖြင့်3.7သို့မဟုတ်3.7 GPAအဖြစ် ရရှိနိုင်သည်။ဒီရလဒ်သည် LLM သည် unstructured data ကို ရေးသားထားသော prompt အဖြစ်ယူပြီး unstructured data ကို ပြန်ပေးသည်ဖြစ်သည်။ ဒီဒေတာကို သိမ်းဆည်းခြင်း သို့မဟုတ် အသုံးပြုခြင်းအတွက် ဘာကိုမျှော်လင့်ရမည်ကို သိရန် structured format တစ်ခုရှိရန် လိုအပ်သည်။
ဒါဆို formatting ပြဿနာကို ဘယ်လိုဖြေရှင်းမလဲ? Functional calling ကို အသုံးပြုခြင်းဖြင့် structured data ကို ပြန်လည်ရရှိစေရန် သေချာစေနိုင်သည်။ Function calling ကို အသုံးပြုသောအခါ LLM သည် function များကို တကယ်ခေါ်ခြင်း သို့မဟုတ် အလုပ်မလုပ်ပါ။ ၎င်း၏ response များအတွက် LLM ကို လိုက်နာရန် structure တစ်ခု ဖန်တီးသည်။ ထို့နောက် ၎င်း response များကို အသုံးပြု၍ ကျွန်ုပ်တို့၏ အက်ပလီကေးရှင်းများတွင် function ကို အလုပ်လုပ်ရန် သိရှိသည်။
ထို့နောက် function မှ ပြန်ပေးသောအရာကို ယူပြီး LLM သို့ ပြန်ပို့နိုင်သည်။ ထို့နောက် LLM သည် အသုံးပြုသူ၏ မေးခွန်းကို ဖြေဆိုရန် သဘာဝဘာသာစကားဖြင့် တုံ့ပြန်မည်။
Function Calls သည် သင့်အက်ပလီကေးရှင်းကို တိုးတက်စေရန် အမျိုးမျိုးသော အသုံးချနိုင်မှုများရှိသည်-
-
အပြင်ပကိရိယာများကို ခေါ်ခြင်း - Chatbots များသည် အသုံးပြုသူများ၏ မေးခွန်းများကို ဖြေဆိုပေးရန် အလွန်ကောင်းမွန်သည်။ Function Calling ကို အသုံးပြုခြင်းဖြင့် Chatbots များသည် အသုံးပြုသူများ၏ message များကို အသုံးပြု၍ တာဝန်အချို့ကို ပြီးမြောက်စေသည်။ ဥပမာအားဖြင့် ကျောင်းသားတစ်ဦးသည် chatbot ကို "ကျွန်ုပ်၏ဆရာထံ email ပို့ပါ၊ ဒီဘာသာရပ်မှာ အကူအညီပိုလိုပါတယ်လို့ ပြောပါ" ဟု မေးမြန်းနိုင်သည်။ ၎င်းသည်
send_email(to: string, body: string)ဟုခေါ်သော function call ကို ပြုလုပ်နိုင်သည်။ -
API သို့မဟုတ် Database Queries ဖန်တီးခြင်း - အသုံးပြုသူများသည် natural language ကို အသုံးပြု၍ formatted query သို့မဟုတ် API request အဖြစ် ပြောင်းလဲပြီး အချက်အလက်များကို ရှာဖွေနိုင်သည်။ ဥပမာအားဖြင့် ဆရာတစ်ဦးသည် "နောက်ဆုံးအလုပ်ကို ပြီးမြောက်ခဲ့သော ကျောင်းသားများ ဘယ်သူတွေလဲ" ဟု မေးမြန်းနိုင်သည်။ ၎င်းသည်
get_completed(student_name: string, assignment: int, current_status: string)ဟုခေါ်သော function ကို ခေါ်နိုင်သည်။ -
Structured Data ဖန်တီးခြင်း - အသုံးပြုသူများသည် text block သို့မဟုတ် CSV ကို ယူပြီး LLM ကို အသုံးပြု၍ ၎င်းမှ အရေးပါသော အချက်အလက်များကို ထုတ်ယူနိုင်သည်။ ဥပမာအားဖြင့် ကျောင်းသားတစ်ဦးသည် peace agreements အကြောင်း Wikipedia ဆောင်းပါးတစ်ခုကို AI flashcards ဖန်တီးရန် ပြောင်းလဲနိုင်သည်။ ၎င်းကို
get_important_facts(agreement_name: string, date_signed: string, parties_involved: list)ဟုခေါ်သော function ကို အသုံးပြု၍ ပြုလုပ်နိုင်သည်။
Function Call တစ်ခု ဖန်တီးခြင်းလုပ်ငန်းစဉ်တွင် အဓိကအဆင့် ၃ ဆင့်ပါဝင်သည်-
- Calling - Function များ၏ စာရင်းနှင့် အသုံးပြုသူ message တို့ဖြင့် Chat Completions API ကို ခေါ်ခြင်း။
- Reading - မော်ဒယ်၏ response ကို ဖတ်၍ တာဝန်တစ်ခုကို အကောင်အထည်ဖော်ခြင်း၊ ဥပမာအားဖြင့် function သို့မဟုတ် API Call ကို အကောင်အထည်ဖော်ခြင်း။
- Making - Function response မှ အချက်အလက်များကို အသုံးပြု၍ အသုံးပြုသူ message ကို Chat Completions API သို့ ပြန်လည်ခေါ်ခြင်း။
ပထမအဆင့်မှာ အသုံးပြုသူ message ကို ဖန်တီးခြင်းဖြစ်သည်။ ၎င်းကို text input ၏ value ကို dynamically သတ်မှတ်ခြင်းဖြင့် ပြုလုပ်နိုင်သည် သို့မဟုတ် ဒီနေရာတွင် value ကို သတ်မှတ်နိုင်သည်။ Chat Completions API ကို ပထမဆုံးအကြိမ် အသုံးပြုနေပါက message ၏ role နှင့် content ကို သတ်မှတ်ရန် လိုအပ်သည်။
role သည် system (rule ဖန်တီးခြင်း), assistant (model) သို့မဟုတ် user (end-user) ဖြစ်နိုင်သည်။ Function Calling အတွက် ၎င်းကို user အဖြစ် သတ်မှတ်ပြီး ဥပမာမေးခွန်းတစ်ခု ထည့်သွင်းပါမည်။
messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ]Role များကို မတူညီစွာ သတ်မှတ်ခြင်းဖြင့် LLM သို့ system မှ ပြောနေသည်၊ user မှ ပြောနေသည်ကို ရှင်းလင်းစေပြီး LLM သည် conversation history ကို တည်ဆောက်နိုင်သည်။
နောက်တစ်ဆင့်မှာ function ကို သတ်မှတ်ပြီး function ၏ parameters များကို ဖန်တီးခြင်းဖြစ်သည်။ ဒီနေရာမှာ search_courses ဟုခေါ်သော function တစ်ခုသာ အသုံးပြုမည်ဖြစ်သော်လည်း function များစွာကို ဖန်တီးနိုင်သည်။
အရေးကြီးသည် - Functions များကို LLM သို့ system message တွင် ထည့်သွင်းထားပြီး သင့်တွင် ရရှိနိုင်သော tokens အရေအတွက်တွင် ပါဝင်မည်။
အောက်တွင် functions များကို items များ၏ array အဖြစ် ဖန်တီးထားသည်။ Item တစ်ခုစီသည် function တစ်ခုဖြစ်ပြီး name, description နှင့် parameters properties များပါရှိသည်-
functions = [
{
"name":"search_courses",
"description":"Retrieves courses from the search index based on the parameters provided",
"parameters":{
"type":"object",
"properties":{
"role":{
"type":"string",
"description":"The role of the learner (i.e. developer, data scientist, student, etc.)"
},
"product":{
"type":"string",
"description":"The product that the lesson is covering (i.e. Azure, Power BI, etc.)"
},
"level":{
"type":"string",
"description":"The level of experience the learner has prior to taking the course (i.e. beginner, intermediate, advanced)"
}
},
"required":[
"role"
]
}
}
]Function instance တစ်ခုစီကို အောက်တွင် အသေးစိတ်ဖော်ပြပါ-
name- Function ကို ခေါ်လိုသော အမည်။description- Function ၏ လုပ်ဆောင်ပုံကို ဖော်ပြထားသော ဖော်ပြချက်။ ဒီနေရာမှာ တိကျပြီးရှင်းလင်းဖို့ အရေးကြီးသည်။parameters- Model response အတွက် ထုတ်လုပ်လိုသော values နှင့် format ၏ စာရင်း။ Parameters array တွင် items များပါရှိပြီး items များတွင် အောက်ပါ properties များပါဝင်သည်-type- Properties များကို သိမ်းဆည်းမည့် data type။properties- Model response အတွက် အသုံးပြုမည့် specific values များ၏ စာရင်း။name- Model response formatted မှာ အသုံးပြုမည့် property ၏ အမည် key, ဥပမာအားဖြင့်product။type- Property ၏ data type, ဥပမာအားဖြင့်string။description- Specific property ၏ ဖော်ပြချက်။
Optional property required - Function call ပြီးမြောက်ရန် လိုအပ်သော property။
Function ကို သတ်မှတ်ပြီးနောက်၊ Chat Completion API သို့ ခေါ်ဆိုမှုတွင် function ကို ထည့်သွင်းရန် လိုအပ်သည်။ ၎င်းကို request တွင် functions ကို ထည့်သွ
- ဖန်တီးထားသော function call နှင့်/သို့မဟုတ် API call မှ သင့်လျော်သော course မရှိပါက error ကို handle လုပ်ပါ။
အကြံပြုချက်: Learn API reference documentation စာမျက်နှာကို လိုက်နာပြီး ဒီ data ကို ဘယ်လို၊ ဘယ်နေရာမှာ ရနိုင်တယ်ဆိုတာ ကြည့်ပါ။
ဒီသင်ခန်းစာကို ပြီးမြောက်ပြီးနောက်မှာ Generative AI Learning collection ကို ကြည့်ပြီး Generative AI အသိပညာကို ဆက်လက်မြှင့်တင်ပါ။
Lesson 12 ကို သွားကြည့်ပါ၊ အဲဒီမှာ AI application များအတွက် UX ကို ဒီဇိုင်းဆွဲနည်း ကို လေ့လာပါ!
အကြောင်းကြားချက်:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု Co-op Translator ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူက ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။


