Rumah >Peranti teknologi >AI >Tutorial Panggilan Fungsi Terbuka: menghasilkan output berstruktur
Di bahagian ini, kami akan menjana respons menggunakan model GPT-3.5-Turbo tanpa fungsi memanggil untuk melihat apakah kami mendapat output yang konsisten atau tidak.
Sebelum memasang API Python OpenAI, anda mesti mendapatkan kunci API dan menetapkannya pada sistem tempatan anda. Ikuti GPT-3.5 dan GPT-4 melalui API OpenAI dalam tutorial Python untuk mengetahui bagaimana untuk mendapatkan kunci API dan menetapkannya. Tutorial ini juga merangkumi contoh-contoh penubuhan pembolehubah persekitaran dalam DataLab, data nota data DataCamp yang dibolehkan.
Untuk bantuan selanjutnya, lihat kod di OpenAI Function Calling Workbook di Datalab.
Meningkatkan API Python Terbuka ke V1 menggunakan:
pip install --upgrade openai -q
Selepas itu, memulakan klien terbuka menggunakan kekunci API.
import os from openai import OpenAI client = OpenAI( api_key=os.environ['OPENAI_API_KEY'], )
nota : Openai tidak lagi menawarkan kredit percuma kepada pengguna baru, jadi anda perlu membelinya untuk menggunakan API.
Kami akan menulis penerangan pelajar rawak. Sama ada anda boleh membuat teks anda sendiri atau menggunakan chatgpt untuk menghasilkannya untuk anda.
student_1_description = "David Nguyen is a sophomore majoring in computer science at Stanford University. He is Asian American and has a 3.8 GPA. David 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 graduating."
Di bahagian seterusnya, kami akan menulis petikan untuk mengekstrak maklumat pelajar dari teks dan mengembalikan output sebagai objek JSON. Kami akan mengekstrak nama, major, sekolah, gred, dan kelab dalam keterangan pelajar.
# A simple prompt to extract information from "student_description" in a JSON format. 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} '''
tambahkan prompt ke modul penyempurnaan sembang API Openai untuk menghasilkan respons.
# Generating response back from gpt-3.5-turbo openai_response = client.chat.completions.create( model = 'gpt-3.5-turbo', messages = [{'role': 'user', 'content': prompt_1}] ) openai_response.choices[0].message.content
Respons agak baik. Mari kita ubahnya menjadi JSON untuk memahaminya dengan lebih baik.
'{\n "name": "David Nguyen",\n "major": "computer science",\n "school": "Stanford University",\n "grades": "3.8 GPA",\n "club": "Robotics Club"\n}'
kami akan menggunakan perpustakaan `json` untuk menukar teks menjadi objek JSON.
import json # Loading the response as a JSON object json_response = json.loads(openai_response.choices[0].message.content) json_response
Hasil akhir cukup sempurna. Jadi, mengapa kita memerlukan fungsi panggilan?
{'name': 'David Nguyen', 'major': 'computer science', 'school': 'Stanford University', 'grades': '3.8 GPA', 'club': 'Robotics Club'}
mari kita cuba prompt yang sama, tetapi menggunakan penerangan pelajar yang berbeza.
student_2_description="Ravi Patel is a sophomore majoring in computer science at the University of Michigan. He is South Asian Indian American and has a 3.7 GPA. Ravi is an active member of the university's Chess Club and the South Asian Student Association. He hopes to pursue a career in software engineering after graduating."
kami hanya akan menukar teks penerangan pelajar dalam prompt.
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} '''
dan, jalankan fungsi penyelesaian sembang menggunakan prompt kedua.
# Generating response back from gpt-3.5-turbo openai_response = client.chat.completions.create( model = 'gpt-3.5-turbo', messages = [{'role': 'user', 'content': prompt_2}] ) # Loading the response as a JSON object json_response = json.loads(openai_response.choices[0].message.content) json_response
seperti yang anda lihat, ia tidak konsisten. Daripada mengembalikan satu kelab, ia telah mengembalikan senarai kelab yang disertai oleh Ravi. Ia juga berbeza dengan pelajar pertama.
{'name': 'Ravi Patel', 'major': 'computer science', 'school': 'University of Michigan', 'grades': '3.7 GPA', 'club': ['Chess Club', 'South Asian Student Association']}
Untuk menyelesaikan masalah ini, kami akan menggunakan ciri yang diperkenalkan baru -baru ini yang dipanggil Fungsi Calling. Adalah penting untuk mewujudkan fungsi tersuai untuk menambah maklumat yang diperlukan kepada senarai kamus supaya API Openai dapat memahami fungsinya.
NOTA : Pastikan anda mengikuti corak yang betul. Ketahui lebih lanjut mengenai fungsi memanggil dengan membaca dokumentasi rasmi.
pip install --upgrade openai -q
Seterusnya, kami akan menjana respons untuk dua penerangan pelajar menggunakan fungsi tersuai yang ditambahkan pada hujah "fungsi". Selepas itu, kami akan menukar respons teks ke dalam objek JSON dan mencetaknya.
import os from openai import OpenAI client = OpenAI( api_key=os.environ['OPENAI_API_KEY'], )
Seperti yang dapat kita lihat, kita mendapat output seragam. Kami juga mendapat gred dalam angka bukan rentetan. Output yang konsisten adalah penting untuk membuat aplikasi AI bebas bug.
student_1_description = "David Nguyen is a sophomore majoring in computer science at Stanford University. He is Asian American and has a 3.8 GPA. David 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 graduating."
anda boleh menambah pelbagai fungsi tersuai ke fungsi penyelesaian sembang. Dalam bahagian ini, kita akan melihat keupayaan ajaib API Openai dan bagaimana ia secara automatik memilih fungsi yang betul dan mengembalikan argumen yang betul.
Dalam senarai Python kamus, kami akan menambah fungsi lain yang disebut "extract_school_info," yang akan membantu kami mengekstrak maklumat universiti dari teks.
Untuk mencapai matlamat ini, anda perlu menambah kamus lain fungsi dengan nama, keterangan, dan parameter.
# A simple prompt to extract information from "student_description" in a JSON format. 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} '''
kami akan menjana keterangan "Stanford University" menggunakan CHATGPT untuk menguji fungsi kami.
# Generating response back from gpt-3.5-turbo openai_response = client.chat.completions.create( model = 'gpt-3.5-turbo', messages = [{'role': 'user', 'content': prompt_1}] ) openai_response.choices[0].message.content
Buat senarai deskripsi pelajar dan sekolah dan lulus melalui fungsi penyelesaian sembang Openai untuk menghasilkan respons. Pastikan anda telah menyediakan fungsi tersuai yang dikemas kini.
'{\n "name": "David Nguyen",\n "major": "computer science",\n "school": "Stanford University",\n "grades": "3.8 GPA",\n "club": "Robotics Club"\n}'
Model GPT-3.5-Turbo telah memilih fungsi yang betul untuk jenis keterangan yang berbeza. Kami mendapat output JSON yang sempurna untuk pelajar dan sekolah.
import json # Loading the response as a JSON object json_response = json.loads(openai_response.choices[0].message.content) json_response
kita juga boleh melihat di bawah nama bahawa repose dijana menggunakan fungsi "extract_school_info".
Di bahagian ini, kami akan membina summarizer teks yang stabil yang akan meringkaskan maklumat sekolah dan pelajar dengan cara tertentu.
Pertama, kami akan membuat dua fungsi python, extract_student_info dan extract_school_info, yang mengambil argumen dari fungsi memanggil dan mengembalikan rentetan yang diringkaskan.
pip install --upgrade openai -q
import os from openai import OpenAI client = OpenAI( api_key=os.environ['OPENAI_API_KEY'], )
student_1_description = "David Nguyen is a sophomore majoring in computer science at Stanford University. He is Asian American and has a 3.8 GPA. David 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 graduating."
Atas ialah kandungan terperinci Tutorial Panggilan Fungsi Terbuka: menghasilkan output berstruktur. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!