1. ওপেনএআই এর অ্যাসিস্ট্যান্ট এপিআই পরিচিতি

1.1 অ্যাসিস্ট্যান্ট এপিআই এর সংজ্ঞা এবং উদ্দেশ্য

অ্যাসিস্ট্যান্ট এপিআই বাংলাদেশে ডেভেলপারদের নিজস্ব অ্যাপ্লিকেশনের ভিত্তিতে কৃত্রিম বুদ্ধিমত্তা অ্যাসিস্ট্যান্ট তৈরি করার সুযোগ দেয়। কাস্টম কমান্ড নির্ধারণ এবং মডেল নির্বাচন করে, এসিস্ট্যান্টরা ব্যবহারকারীদের প্রশ্নে উত্তর দেতে যোগাযোগ করতে পারে। বর্তমানে, অ্যাসিস্ট্যান্ট এপিআই তিন ধরনের টুল সমর্থন করে: কোড ইন্টারপ্রিটার, রিট্রিভাল, এবং ফাংশন কলিং।

1.2 অ্যাসিস্ট্যান্ট এপিআই এর ব্যবহার

অ্যাসিস্ট্যান্ট এপিআই বিভিন্ন পরিস্থিতিতে সাহায্যকারী কৃত্রিম বুদ্ধিমত্তা সমর্থনের জন্য উপযোগী। উদাহরণস্বরূপ:

  • কাস্টমার সাপোর্ট: সাধারণ প্রশ্নে স্বয়ংক্রিয়ভাবে উত্তর দিয়ে মানুষের কাস্টমার সার্ভিসের কাজের কাজের লোডকে কমাতে।
  • অনলাইন শিক্ষা: শিক্ষার্থীদের প্রশ্নের উত্তর দেওয়া এবং অভিভাবকতা শিক্ষা সমর্থন প্রদান করা।
  • ডেটা বিশ্লেষণ: ব্যবহারকারীদের আপলোড করা ডেটা ফাইল বিশ্লেষণ করা, প্রতিবেদন তৈরি করা এবং চার্ট ভিজুয়ালাইজ করা।
  • ব্যক্তিগত সুপারিশ: ব্যবহারকারীদের ঐতিহাসিক সংযোগ ভিত্তিতে ব্যক্তিগত সুপারিশ এবং সেবা সরবরাহ করা।

1.3 অ্যাসিস্ট্যান্টের প্রধান ধারণাসমূহ

image

অ্যাসিস্ট্যান্ট এপিআই এর মৌলিক অবজেক্ট গুলি অ্যাসিস্ট্যান্ট, থ্রেড এবং মেসেজ কে। এই অবজেক্টগুলি এবং তাদের কার্যের সম্পূর্ণ বিবরণ নিম্নে দেয়া হল:

অ্যাসিস্ট্যান্ট

অ্যাসিস্ট্যান্ট অবজেক্টটি অপেনএআই মডেলের উপর নির্মিত এবং এআই অ্যাসিস্ট্যান্টের টুল কল করতে পারে। আপনি অ্যাসিস্ট্যান্টের নির্দেশিকা একত্রিত করে তার ব্যক্তিত্ব এবং কার্যকরতা অনুকূল করতে পারেন। উদাহরণস্বরূপ, "ডেটা বিশ্লেষক" নামক একটি অ্যাসিস্ট্যান্ট তৈরি করতে পারেন যা "কোড ইন্টারপ্রিটার" টুল ব্যবহার করে ডেটা বিশ্লেষণ এবং চার্ট তৈরি করে।

থ্রেড

থ্রেড অবজেক্ট ব্যবহারকারী এবং অ্যাসিস্ট্যান্ট মধ্যে একটি সাংবাদিক অংশ নির্দেশ করে। আপনি প্রতিটি ব্যবহারকারীর জন্য একটি থ্রেড তৈরি করে এবং যখন ব্যবহারকারী অ্যাসিস্ট্যান্ট সঙ্গে সাংক্রামিক করে, তখনই থ্রেডে মেসেজ যোগ করতে পারেন। থ্রেড অবজেক্ট বাস্তবাুয় মেসেজ হিস্ট্রি সংরক্ষণ করে এবং মডেলের সন্দর্ভ দৈর্ঘ্য সীমা পূরণ করার প্রয়োজনে বাম্পার মেসেজগুলি কমাতে পারে।

মেসেজ

মেসেজ অবজেক্ট ব্যবহারকারী বা অ্যাসিস্ট্যান্ট দ্বারা তৈরি হতে পারে। মেসেজে পাঠ্য, ইমেজ, এবং অন্যান্য ফাইল থাকতে পারে। মেসেজগুলি থ্রেডে একটি তালিকা হিসেবে সংরক্ষিত হয়। এপিআই এর বাস্তব ব্যবহারে, ডেভেলপাররা ব্যবহারকারী মেসেজ থ্রেডে যুক্ত করতে এবং প্রয়োজন অনুসারে অ্যাসিস্ট্যান্টের প্রতিক্রিয়া ট্রিগার করতে পারে

রান

চালনা অব্জেক্টটি একটি অ্যাসিস্ট্যান্ট অনুরোধের কার্যকরতা প্রতিনিয়তি প্রতিনিয়তি প্রতিনিয়তি প্রতিনিয়তি করতে। এর অংশ হিসেবে, অ্যাসিস্ট্যান্ট তার কনফিগারেশন এবং থ্রেডের মেসেজগুলি ব্যবহার করে মডেল এবং টুল কল করে কাজ সম্পাদন করে। রানের একটি অংশ হিসেবে, অ্যাসিস্ট্যান্ট মডেল পণ্য থ্রেডে মেসেজগুলি অ্যাপেন্ড করে।

2. অ্যাসিস্ট্যান্ট এপিআই এর ডেভেলপমেন্ট প্রক্রিয়া

2.1 আপনার অ্যাসিস্ট্যান্ট তৈরি করুন

একজন অ্যাসিস্ট্যান্ট তৈরি করতে, আপনাকে এপিআই এ একটি অনুরোধ পাঠাতে হবে যেখানে নির্দেশনা, মডেলের নাম, এবং টুল কনফিগারেশন দিতে হবে। এর নিম্নলিখিত একটি সহজ উদাহরণ দেয়া হল:

curl "https://api.openai.com/v1/assistants" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "instructions": "You are a personal math tutor. Write and run code to answer math questions.",
    "name": "Math Tutor",
    "tools": [{"type": "code_interpreter"}],
    "model": "gpt-4"
  }'

এপিআই প্যারামিটারস:

  • নির্দেশনা - অ্যাসিস্ট্যান্টকে যে কাজগুলি করতে হবে তা বলার সিস্টেমের নির্দেশনা।
  • নাম - অ্যাসিস্ট্যান্টের নাম।
  • টুল - নির্দিষ্ট করে যে টুলগুলি অ্যাসিস্ট্যান্ট ব্যবহার করতে পারে। প্রত্যেক অ্যাসিস্ট্যান্ট সর্বাধিক ১২৮ টুল থাকতে পারে।
  • মডেল - অ্যাসিস্ট্যান্টটি কোন মডেল ব্যবহার করবে।

অ্যাসিস্ট্যান্ট সফলভাবে তৈরি করার পরে, আপনি অ্যাসিস্ট্যান্ট আইডি পেতে পাবেন।

2.2 একটি সেশন থ্রেড তৈরি করুন

থ্রেড একটি কথা বলতে এবং আমরা প্রথম ব্যবহারকারী যখন একটি সংলাপ শুরু করে,

2.3 থ্রেডে বার্তা যোগ করুন

আপনি একটি নির্দিষ্ট থ্রেডে বার্তা যোগ করতে পারেন, যা টেক্সট ধারণ করে এবং ঐচ্ছিকভাবে ব্যবহারকারীরা আপলোড করার অনুমতি দেয়। উদাহরণস্বরূপ:

curl https://api.openai.com/v1/threads/{thread_id}/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
      "role": "user",
      "content": "আমার এই সমীকরণটি সমাধান করতে হবে `3x + 11 = 14`. আপনি কি আমাকে সাহায্য করতে পারবেন?"
    }'

API প্যারামিটার:

  • thread_id - যা থ্রেড তৈরি করা হলে আপনি যেটা পেতে পারেন।

API অনুরোধের বয়স্ত অংশ হল একজন ব্যবহারকারীর বার্তা, সাধারণভাবে ব্যবহারকারীর প্রশ্নকে প্রতিনিধিত্ব করে।

2.4 অ্যাসিস্ট্যান্টের রিসপন্স জেনারেট করতে রান করুন

ব্যবহারকারী বার্তার উত্তরের জন্য অ্যাসিস্ট্যান্ট উৎপাদন করতে, আপনার একটি রান তৈরি করতে হবে। এটা অনুমতি দেয় অ্যাসিস্ট্যান্টে সনাক্ত করার জন্য এবং যদি সক্ষম হয়, তবে সম্পদ ব্যবহার করতে বা পাশাপাশি হবে না মডেলটি ব্যবহার করতে।

লক্ষ্য: এই ক্ষেত্রে অ্যাসিস্ট্যান্ট ব্যবহারকারীর প্রশ্নের জন্য উত্তর দেওয়ার নির্বাচন করেননি। শুধুমাত্র আপনি রান API কল করলে আই অ্যাসিস্ট্যান্ট জবাব দেবে।

curl https://api.openai.com/v1/threads/{thread_id}/runs \
  -H "Authorization: Bearer YOUR_OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "assistant_id": "assistant_id",
    "instructions": "ব্যবহারকারীকে জেন দো বলুন। ব্যবহারকারীটি একটি প্রিমিয়াম অ্যাকাউন্ট রাখেন।"
  }'

API প্যারামিটার:

  • thread_id - যা থ্রেড তৈরি করা হলে পানার পরিচয়কে প্রস্তুত হবে।
  • assistant_id - অ্যাসিস্ট্যান্ট তৈরি করলে আপনি যেটা কিনতে পেরেছেন।
  • instructions - অ্যাসিস্ট্যান্ট নির্দেশিকা যা আসিস্ট্যান্ট তৈরি করার সময় নির্দিষ্ট নির্দেশিকা অতিক্রম করতে পারে।

একটি সফল API অনুরোধ একটি রান আইডি ফিরতি দেবে।

2.5 অ্যাসিস্ট্যান্ট চলালো অবস্থা পরীক্ষা করুন

অ্যাসিস্ট্যান্টে একটি কাজ (রান) চালু করার পরে, কাজের বাস্তবায়ন সম্পাদন হয়। এটা মানে করে আমাদের কে নিয়মিতভাবে চেক করতে হবে রানের অবস্থা যাতে নির্ধারণ করতে পারি যে কি সম্পন্ন হয়েছে। রানের স্থিতি পরীক্ষা করতে CURL ব্যবহার করে একটি HTTP অনুরোধ করা যেতে পারে। তার নীচে এই প্রক্রিয়াকে নির্দেশনা দেওয়া হয়েছে।

CURL অনুরোধের উদাহরণ:

curl https://api.openai.com/v1/threads/thread_abc123/runs/run_abc123 \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1"

API প্যারামিটার স্পষ্টীকরণ:

  • https://api.openai.com/v1/threads/thread_abc123/runs/run_abc123: এটি এপিআই-র অনুরোধের অনুকুল অ্যাপাই ইউআরএল, যেখানে thread_abc123 হল থ্রেড (থ্রেড) এর একক চিহ্নযুক্ত পরিচয়কে নির্ধারণ করা হয়, এবং run_abc123 হল রান এর একক চিহ্নযুক্ত পরিচয়কে নির্ধারণ করা হয়।

রেসপন্স বডির উদাহরণ:

{
  "id": "run_abc123",
  "object": "thread.run",
  "status": "completed",
  "created_at": 1699073585,
  ...
}

API রেসপন্স প্যারামিটার স্পষ্টীকরণ:

  • id: রান এর একক চিহ্নযুক্ত পরিচয়।
  • object: ফেরত দেওয়া অবজেক্টের ধরন সূচিত করে, যা এখানে thread.run
  • status: রান এর অবস্থা, সম্ভাব্য মান হল queued, in_progress, completed, requires_action, failed, ইত্যাদি।
  • created_at: রান করা হয়েছিল সেই সময় চিহ্নিত করার সময়চিহ্ন।

2.6 অ্যাসিস্ট্যান্টের রেসপন্স ফলাফল পান

অ্যাসিস্ট্যান্ট রান সম্পন্ন হওয়ার পরে, আমরা ধারণ করতে পারি অ্যাসিস্ট্যান্টের রেসপন্স ফলাফলগুলি পড়তে অ্যাসিস্ট্যান্টের দ্বারা যোগ করা বার্তা চেক করে। এখানে CURL এর মাধ্যমে অনুরোধ করার দেখানো হয় এবং এপিআই প্যারামিটারের বিস্তারিত ব্যাখ্যা।

টিপ: একটি অ্যাসিস্ট্যান্টের সাথে একমুখী যোগাযোগের মতো, যখন অ্যাসিস্ট্যান্ট ব্যবহারকারীর প্রশ্নটি প্রসেস শেষ করে, অ্যাসিস্ট্যান্ট চ্যাট থ্রেডে (থ্রেড) একটি বার্তা যোগ করবে। সুতরাং, আমাদের শুধুমাত্র সহজ মতে চ্যাট থ্রেড (থ্রেড) এর সর্বশেষ বার্তা জিজ্ঞাসা করতে হবে অ্যাসিস্ট্যান্টের রেসপন্স পেতে।

CURL অনুরোধের উদাহরণ:

curl https://api.openai.com/v1/threads/thread_abc123/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1"

API প্যারামিটার ব্যাখ্যা:

  • https://api.openai.com/v1/threads/thread_abc123/messages: এপিআই-র অনুরোধ URL, যেখানে thread_abc123 হল থ্রেড (Thread) এর অনন্যত্বপূর্ণ সনাক্তকারী।
  • পূর্বে রান স্থিতি পরীক্ষা করতে ব্যবহৃত রিকুয়েস্ট হেডারের মধ্যে রয়েছে, যেমন অথেনটিকেশন তথ্য এবং এপিআই সংস্করণ তথ্য।

অ্যাসিস্ট্যান্ট রেসপন্স ফলাফল উদাহরণ:

এই উদাহরণে, ব্যবহারকারীটি অ্যাসিস্ট্যান্ট একটি গণিত প্রশ্ন জিজ্ঞেস করেছিল, এবং অ্যাসিস্ট্যান্ট এর তারপরে প্রসেস করার পরে থ্রেডে একটি রেসপন্স মেসেজ যুক্ত করেছিল।

ব্যবহারকারী: আমার সমীকরণ `3x + 11 = 14` সমাধান করতে হবে। আপনি কি সাহায্য করতে পারেন?
অ্যাসিস্ট্যান্ট: অবশ্যই, জেন দোয়. এই সমীকরণ `(3x + 11 = 14)` সমাধান করার জন্য, আপনার কাজ হল সমীকরণের এক দিকে `(x)` কে আলাদা করা। আমি আপনার জন্য `(x)` এর মান গণনা করতে দেখি।
অ্যাসিস্ট্যান্ট: সমীকরণ `(3x + 11 = 14)` এর সমাধান `(x = 1)`।

অ্যাসিস্ট্যান্ট থেকে প্রাপ্ত প্রতিক্রিয়ার পরিণামগুলির পরে, প্রতিক্রিয়াটি ব্যবহারকারীরা সহায়তা পেতে এবং ব্যবহার করতে সাহায্য করতে পারে।

3. যান্ত্রিক সরঞ্জাম: ওপেনএআই দ্বারা প্রদানকৃত নির্মিত সরঞ্জাম

3.1 কোড ইন্টারপ্রিটার টুল

কোড ইন্টারপ্রিটার টুল অ্যাসিস্ট্যান্টস API কে স্যান্ডবক্স এক্সিকিউশন এনভায়রনমেন্টে Python কোড লেখার এবং রান করার অনুমতি দেয়। এই টুলটি বিভিন্ন ডেটা এবং ফাইল ফরম্যাট হ্যান্ডল করতে পারে, এবং তথ্য এবং গ্রাফিক্যাল ছবি সাহায্যে ফাইল তৈরি করতে পারে। কোড ইন্টারপ্রিটার আপনার অ্যাসিস্ট্যান্টকে জটিল কোডিং এবং গাণিতিক সমস্যা সমাধান করতে দলভাবে কোড চালাতে দেয়। যদি অ্যাসিস্ট্যান্ট দ্বারা লেখা কোড চালিয়ে না হয়, তবে অ্যাসিস্ট্যান্ট এই কোড বিভিন্নরকম চেষ্টা করে চলতে পারে যতটা পরিশ্রম করে।

কোড ইন্টারপ্রিটার চালু করা

কোড ইন্টারপ্রিটার চালিয়া পাতা উপর করা ছোট্ট প্রাপ্তিতে, যখন ব্যবহারের অনুরোধের স্বাভাবিক ধরনের উপর ভিত্তি করে মডেল নির্ধারণ করবে। আপনি এই আচরণকে সুবিধা করতে পারেন অ্যাসিস্ট্যান্ট এর নির্দেশিকা (উদাহরণস্বরূপ, "এই সমস্যা সমাধান করতে কোড লিখুন") এর মাধ্যমে।

ফাইল প্রক্রিয়া করতে কোড ইন্টারপ্রিটার ব্যবহার

কোড ইন্টারপ্রিটার ফাইল থেকে ডেটা পার্স করতে পারে। এটি যখন আপনি আপনার অ্যাসিস্ট্যান্ট কে বড় পরিমাণের ডেটা প্রদান করতে বা আপনার ব্যবহারকারীদের তাদের নিজস্ব ফাইল আপলোড করার অনুমতি দিতে চান। লক্ষ্য করুন যে, কোড ইন্টারপ্রিটারের জন্য আপলোড করা ফাইলগুলি সেভ করার জন্য ইনডেক্স করা হয় না। ইনডেক্স পুনর্ধারণের জন্য ফাইল দেখানোর বিস্তারিত তথ্যের জন্য, নীচের পরিশোধনা শাখার জন্য ফাইল ইন্ডেক্সিং সেকশানের জন্য।

সমস্ত রান এন্য ফাইল উপযুক্ত:

curl https://api.openai.com/v1/files \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F purpose="assistants" \
  -F file="@/path/to/mydata.csv"

curl https://api.openai.com/v1/assistants \
  -u :$OPENAI_API_KEY \
  -H 'Content-Type: application/json' \
  -H 'OpenAI-Beta: assistants=v1' \
  -d '{
    "instructions": "আপনি একজন ব্যক্তিগত গণিত শিক্ষক। যখন একটি গণিত প্রশ্ন জিজ্ঞেস করা হয়, কোড লেখে এবং এটি সমাধান করতে দেখান।",
    "tools": [{"type": "code_interpreter"}],
    "model": "gpt-4-turbo-preview",
    "file_ids": ["file_123abc456"]
  }'

কোড ইন্টারপ্রিটার দ্বারা তৈরি ছবি এবং ফাইল পড়ার সুবিধা

কোড ইন্টারপ্রিটার আপিআই মধ্যে ছবি চার্ট, CSV এবং PDF ফাইল জেনারেট করতে পারে। এখানে দুটি প্রকারের ফাইল জেনারেট হয়: ইমেজ এবং ডেটা ফাইল (উদাহরণস্বরূপ এসিএসভি ফাইল, যা এসিস্ট্যান্ট দ্বারা জেনারেট করা ডেটা সহित)।

যখন কোড ইন্টারপ্রিটার একটি ইমেজ তৈরি করে, তখন আপনি এই ফাইলটি অ্যাসিস্ট্যান্ট মেসেজ রেসপন্সের file_id ফিল্ডে খুঁজে পাবেন এবং ডাউনলোড করতে পারেন:

{
    "id": "msg_abc123",
    "object": "thread.message",
    "created_at": 1698964262,
    "thread_id": "thread_abc123",
    "role": "assistant",
    "content": [
    {
      "type": "image_file",
      "image_file": {
        "file_id": "file-abc123"
      }
    }
  ]
  // ...
}

3.2 রিট্রিভাল টুল

রিট্রিভাল টুলটি অ্যাসিস্ট্যান্টের সুবিধা বাড়াতে যেমন মডেলের বাইরের থেকে জ্ঞান যোগ করে (উদাহরণস্বরূপ আইউপিতেরি প্রোডাক্ট তথ্য বা ব্যবহারকারী দেয়া নথি)। ফাইলটি আপলোড করা হলে এবং অ্যাসিস্ট্যান্টে পাস করার পর, OpenAI স্বয়ংক্রিয়ভাবে আপনার ডকুমেন্টের স্লাইস, ইন্ডেক্স করে, আপনার নিবন্ধের এম্বেডিং স্টোর করে এবং ভেক্টর সার্চ ইম্প্লিমেন্ট করতে পারে যাতে ব্যবহারকারীর প্রশ্নের উত্তর দিতে সেইসাথে সম্পর্কিত কন্টেন্ট প্রাপ্ত করা যায়।

রিট্রিভাল চালু করুন

অ্যাসিস্ট্যান্টের tools প্যারামিটারে রিট্রিভাল চালু করতে, retrieval পাস করুন:

curl https://api.openai.com/v1/assistants \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "instructions": "আপনি একটি কাস্টমার সাপোর্ট চ্যাটবট। গ্রাহকের জিজ্ঞাসা প্রভাবশালীভাবে প্রতিক্রিয়া দিতে আপনার জ্ঞান ভেস্ট ব্যবহার করুন।",
    "tools": [{"type": "retrieval"}],
    "model": "gpt-4-turbo-preview"
  }'

রিট্রিভালের জন্য ফাইল আপলোড করুন

কোড ইন্টারপ্রিটারের মতো, ফাইলগুলি অ্যাসিস্ট্যান্ট লেভেল অথবা একক ম্যাসেজ লেভেলে আপলোড করা যেতে পারে।

curl https://api.openai.com/v1/files \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F purpose="assistants" \
  -F file="@/path/to/knowledge.pdf"

curl "https://api.openai.com/v1/assistants" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "instructions": "আপনি একটি কাস্টমার সাপোর্ট চ্যাটবট। গ্রাহকের জিজ্ঞাসা প্রভাবশালীভাবে প্রতিক্রিয়া দিতে আপনার জ্ঞান ভেস্ট ব্যবহার করুন।",
    "name": "গণিত শিক্ষক",
    "tools": [{"type": "retrieval"}],
    "model": "gpt-4-turbo-preview"
    "file_ids": ["file_123abc456"]
  }'

3.3 ফাংশন কলিং টুল

চ্যাট কমপ্লেশনস এপিআইর মতো, অ্যাসিস্ট্যান্ট এপিআই ফাংশন কলিং সাপোর্ট করে। ফাংশন কলিং আপনাকে অ্যাসিস্ট্যান্টে ফাংশনগুলি বর্ণনা করতে দেয় এবং বুদ্ধিমত্তাপূর্ণভাবে ফাংশনের ফলাফল এবং তার প্যারামিটার ফিরিয়ে আসা যাবে। যখন একটি ফাংশন কল চালানো হয়, অ্যাসিস্ট্যান্ট এপিআই এক্সিকিউশন বন্ধ করবে, এবং আপনি ফাংশন কলের ফলাফল প্রদান করতে পারবেন যাতে এক্সিকিউশন চালিত থাকে।

ফাংশন নির্ধারণ

একটি এসিস্ট্যান্ট তৈরি করার সময়, আপনি এসিস্ট্যান্ট কে কল করার জন্য একটি সেট ফাংশন নির্ধারণ করতে পারেন। এই ফাংশনগুলি এসিস্ট্যান্ট অবজেক্ট তৈরি করার সময় স্পষ্টভাবে সুনির্দিষ্ট করতে হবে। প্রতিটি ফাংশনের একটি অদ্বিতীয় নাম, বর্ণনা, এবং প্যারামিটার স্পেসিফিকেশন থাকতে হবে।

নিম্নলিখিত কোডটি দেখায় যেভাবে এসিস্ট্যান্ট তৈরি করার সময় curl কমান্ড ব্যবহার করে দুটি ফাংশন নির্ধারণ করা হয়:

curl https://api.openai.com/v1/assistants \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "instructions": "You are a weather forecast bot. Use the provided functions to answer questions.",
    "tools": [{
      "type": "function",
      "function": {
        "name": "getCurrentWeather",
        "description": "Get the weather conditions for a specific location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "City and state, e.g., San Francisco, CA"},
            "unit": {"type": "string", "enum": ["c", "f"]}
          },
          "required": ["location"]
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "getNickname",
        "description": "Get the nickname for a city",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "City and state, e.g., San Francisco, CA"}
          },
          "required": ["location"]
        }
      }
    }],
    "model": "gpt-4-turbo-preview"
  }'

এসিস্ট্যান্ট দ্বারা কল করা ফাংশন পড়া

একজন ব্যবহারকারী যখন এসিস্ট্যান্টে একটি বার্তা জমা দেয় এবং বার্তার বিষয়বস্তু ফাংশন কলের জন্য উৎসাহিত করে, তখন আপনাকে এই ফাংশন কলের তথ্য পড়ার দরকার হবে। এই প্রক্রিয়ার ড্যাশে এসিস্ট্যান্ট একটি requires_action অবস্থা রান জেনারেট করবে। এই সময়ে, আপনি রান অবজেক্ট পেতে পাওয়ার জন্য রান অবজেক্ট অবজেক্টের ডিটেলড তথ্য পেতে পারেন।

নিচে প্রদর্শিত আছে কীভাবে রান অবজেক্ট পেতে, ফাংশন কলের তথ্য প্রাপ্ত করতে হয়:

{
  "id": "run_abc123",
  "object": "thread.run",
  "status": "requires_action",
  "required_action": {
    "type": "submit_tool_outputs",
    "submit_tool_outputs": {
      "tool_calls": [
        {
          "id": "call_abc123",
          "type": "function",
          "function": {
            "name": "getCurrentWeather",
            "arguments": "{\"location\":\"San Francisco\"}"
          }
        },
        {
          "id": "call_abc456",
          "type": "function",
          "function": {
            "name": "getNickname",
            "arguments": "{\"location\":\"Los Angeles\"}"
          }
        }
      ]
    }
  },
  ...
}

tool_calls প্যারামিটারে ফাংশন কলের তথ্য রয়েছে, এবং আপনাকে আপনার স্থানীয় প্রোগ্রামে সংশ্লিষ্ট ফাংশন কল করতে হবে।

ফাংশন আউটপুট জমা দেয়া

ফাংশন কল স্থানীয়ভাবে নিষ্পাদন করার পর এবং ফলাফল প্রাপ্ত করার পর আপনাকে এই ফলাফলগুলি জমা দেয়া প্রয়োজন আছে, যাতে Assistants এসিস্ট্যান্টকে ব্যবহারকারীর অনুরোধ চালিত করতে পারে। ফাংশন আউটপুট জমা দেওয়ার সময়, আপনাকে নিশ্চিত করতে হবে যে আউটপুটগুলি মূল ফাংশন কল সহ যোগাযোগ স্থাপন করা হয়েছে।

নিম্নলিখিত কোডে প্রদর্শিত হয় কীভাবে ফাংশন আউটপুট ফলাফল জমা দেওয়া হয়:

curl https://api.openai.com/v1/threads/thread_abc123/runs/run_123/submit_tool_outputs \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "tool_outputs": [
      {
        "tool_call_id": "call_abc123",
        "output": "{\"temperature\": \"22\", \"unit\": \"celsius\"}"
      }, 
      {
        "tool_call_id": "call_abc456",
        "output": "{\"nickname\": \"LA\"}"
      }
    ]
  }'

প্যারামিটার ব্যাখ্যা:

  • thread_abc123 দেখায় কথা-মলা থ্রেড আইডি প্রতিনিধিত্ব করে
  • run_123 রান অবজেক্টের আইডি প্রতিনিধিত্ব করে
  • tool_call_id নিশ্চিত ফাংশন কলের আইডি প্রথমের থেকে প্রাপ্ত হয়েছিল।

সমস্ত ফাংশন আউটপুটগুলি সফলভাবে জমা দিলে, রান অবজেক্টের অবস্থা আবার হালনাগাদ করা হবে, এবং এসিস্ট্যান্ট চলাচল চালিয়ে যাবে এবং ব্যবহারকারীর চেয়ে চেয়ে ফিনাল প্রতিক্রিয়া ফিরিয়ে দেবে।