Rumah >Peranti teknologi >AI >Tutorial Panggilan Fungsi Terbuka: menghasilkan output berstruktur

Tutorial Panggilan Fungsi Terbuka: menghasilkan output berstruktur

Lisa Kudrow
Lisa Kudrowasal
2025-03-10 12:02:12674semak imbas

menggunakan openai tanpa fungsi panggilan

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

Contoh panggilan fungsi terbuka

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.

  • Nama : Tulis nama fungsi python yang baru anda buat.
  • Description : Fungsi fungsi.
  • Parameter
  • : Dalam "sifat", kami akan menulis nama argumen, jenis, dan keterangan. Ia akan membantu Openai API untuk mengenal pasti dunia yang kita cari.

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

Pelbagai fungsi tersuai

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

Tutorial Panggilan Fungsi Terbuka: menghasilkan output berstruktur

Aplikasi fungsi panggilan

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
  1. Buat senarai python, yang terdiri daripada penerangan pelajar, prompt rawak, dan satu keterangan sekolah. Prompt rawak ditambah untuk mengesahkan fungsi automatik yang memanggil mekanik.
  2. kami akan menghasilkan respons menggunakan setiap teks dalam senarai `deskripsi`.
  3. Jika panggilan fungsi digunakan, kami akan mendapat nama fungsi dan, berdasarkannya, gunakan argumen yang relevan untuk fungsi menggunakan respons. Jika tidak, kembalikan tindak balas biasa.
  4. Cetak output ketiga -tiga sampel.
import os
from openai import OpenAI

client = OpenAI(
  api_key=os.environ['OPENAI_API_KEY'],
)
  • Contoh#1 : Model GPT telah memilih "extract_student_info," dan kami mendapat ringkasan ringkas mengenai pelajar.
  • Contoh#2
  • : Model GPT tidak memilih sebarang fungsi dan dirawat dengan cepat sebagai soalan biasa, dan akibatnya, kami mendapat biografi Abraham Lincoln.
  • Contoh#3
  • : Model GPT telah memilih "extract_school_info," dan kami mendapat ringkasan ringkas mengenai Stanford University.
Kesimpulan
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."

Dalam tutorial ini, kami belajar tentang panggilan fungsi Openai. Kami juga belajar bagaimana menggunakannya untuk menghasilkan output yang konsisten, membuat pelbagai fungsi, dan membina summarizer teks yang boleh dipercayai.

Jika anda ingin mengetahui lebih lanjut mengenai API Openai, pertimbangkan untuk mengambil kerja dengan Kursus API Openai dan menggunakan API Openai dalam lembaran cheat Python untuk membuat projek yang berkuasa AI Anda untuk menentukan struktur JSON bersarang dalam skema fungsi. Dengan menentukan hubungan hierarki dalam harta parameter, anda dapat memastikan model menghasilkan output JSON bersarang dan berstruktur untuk keperluan data yang kompleks. Fungsi yang melaksanakan panggilan API atau pertanyaan pangkalan data berdasarkan argumen yang diluluskan dari model. Ini membolehkan interaksi dinamik dengan sistem luaran sambil mengekalkan tindak balas yang konsisten dan berstruktur.

Apa yang berlaku jika panggilan fungsi model tidak sepadan dengan sebarang fungsi yang ditetapkan? Ini memastikan fleksibiliti dalam mengendalikan jenis input yang bervariasi.

Atas ialah kandungan terperinci Tutorial Panggilan Fungsi Terbuka: menghasilkan output berstruktur. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn