AI এজেন্ট এবং ফাংশন কলিং: LLM-এর জন্য টুল তৈরি

AI2026-09-25TryQuickToolBox

আপনি একটি AI এজেন্ট তৈরি করছেন যার রিয়েল-টাইম ডেটা আনতে, গণনা করতে বা বাহ্যিক API-এর সাথে ইন্টারঅ্যাক্ট করতে হবে। কিন্তু LLM-এর টেক্সট জেনারেশন এবং প্রকৃত কোড এক্সিকিউশনের মধ্যে ফাঁক কীভাবে পূরণ করবেন? ফাংশন কলিং (যা টুল ব্যবহার নামেও পরিচিত) তার উত্তর। এটি LLM-কে নির্দিষ্ট অ্যাকশনের অনুরোধ করতে দেয় এবং আপনার কোড সেগুলো এক্সিকিউট করে। এই গাইডটি আপনাকে AI এজেন্টের জন্য ফাংশন কলিং ডিজাইন, ইমপ্লিমেন্ট এবং ডিবাগ করার পথ দেখাবে।

ফাংশন কলিং কী?

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

OpenAI, Anthropic এবং Google-এর মতো প্রধান LLM প্রদানকারীরা ফাংশন কলিং সমর্থন করে। মূল ধারণাটি সামঞ্জস্যপূর্ণ: আপনি উপলব্ধ টুলগুলো বর্ণনা করেন, মডেল সিদ্ধান্ত নেয় কখন সেগুলো ব্যবহার করবে, এবং আপনি এক্সিকিউশন পরিচালনা করেন।

LLM-এর জন্য টুল ডিজাইন করা

নির্ভরযোগ্য এজেন্ট আচরণের জন্য সু-ডিজাইন করা টুল অত্যন্ত গুরুত্বপূর্ণ। এই নীতিগুলো অনুসরণ করুন:

উদাহরণ: আবহাওয়া টুল

এখানে একটি সাধারণ টুল ডেফিনিশন JSON স্কিমা ফরম্যাটে, যা সাধারণত OpenAI-এর API-এর সাথে ব্যবহৃত হয়:

{
  "name": "get_weather",
  "description": "Get the current weather for a given city",
  "parameters": {
    "type": "object",
    "properties": {
      "city": {
        "type": "string",
        "description": "The city name, e.g., San Francisco"
      },
      "unit": {
        "type": "string",
        "enum": ["celsius", "fahrenheit"],
        "description": "Temperature unit"
      }
    },
    "required": ["city"]
  }
}

ফাংশন কলিং ইমপ্লিমেন্ট করা: ধাপে ধাপে

OpenAI-এর API ব্যবহার করে একটি ন্যূনতম এজেন্ট লুপ তৈরি করি (প্যাটার্নটি অন্যান্য প্রদানকারীর ক্ষেত্রেও প্রযোজ্য)।

১. আপনার টুল ডিফাইন করুন

টুল স্কিমার একটি তালিকা এবং ফাংশন নাম থেকে প্রকৃত Python ফাংশনে একটি ম্যাপিং তৈরি করুন।

import json
import openai

# Tool schemas
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get current weather for a city",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string"},
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
                },
                "required": ["city"]
            }
        }
    }
]

# Actual functions
def get_weather(city: str, unit: str = "celsius") -> dict:
    # In reality, call a weather API
    return {"city": city, "temperature": 22, "unit": unit, "condition": "sunny"}

# Map names to functions
function_map = {
    "get_weather": get_weather
}

২. এজেন্ট লুপ তৈরি করুন

এজেন্ট লুপ LLM-এ মেসেজ পাঠায়, টুল কল পরীক্ষা করে, সেগুলো এক্সিকিউট করে এবং মডেল চূড়ান্ত উত্তর রিটার্ন না করা পর্যন্ত পুনরাবৃত্তি করে।

def run_agent(user_message: str):
    messages = [{"role": "user", "content": user_message}]
    
    while True:
        response = openai.ChatCompletion.create(
            model="gpt-4",
            messages=messages,
            tools=tools,
            tool_choice="auto"
        )
        
        message = response.choices[0].message
        messages.append(message)
        
        # If no tool calls, return the content
        if not message.get("tool_calls"):
            return message["content"]
        
        # Execute each tool call
        for tool_call in message.tool_calls:
            function_name = tool_call.function.name
            arguments = json.loads(tool_call.function.arguments)
            
            if function_name in function_map:
                result = function_map[function_name](**arguments)
            else:
                result = {"error": f"Unknown function: {function_name}"}
            
            # Append tool result to messages
            messages.append({
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": json.dumps(result)
            })

এই লুপ চলতে থাকে যতক্ষণ না LLM টুল কল ছাড়া একটি প্রতিক্রিয়া তৈরি করে, যা নির্দেশ করে যে তার যথেষ্ট তথ্য আছে।

৩. এরর এবং এজ কেস হ্যান্ডেল করুন

বাস্তব-জগতের এজেন্টদের অবশ্যই সামলাতে হবে:

নির্ভরযোগ্য এজেন্টের জন্য সেরা অনুশীলন

ফাংশন কলিং সমর্থনের তুলনা

প্রদানকারী ফিচারের নাম ফরম্যাট
OpenAI Function Calling JSON Schema
Anthropic Tool Use JSON Schema
Google Function Calling OpenAPI Schema

উন্নত প্যাটার্ন

আপনার এজেন্ট বড় হওয়ার সাথে সাথে এই প্যাটার্নগুলো বিবেচনা করুন:

ফাংশন কলিং ডিবাগ করা

যখন কিছু ভুল হয়, পরীক্ষা করুন:

সম্পূর্ণ মেসেজ ইতিহাস এবং টুল কল ক্যাপচার করতে লগিং ব্যবহার করুন। প্রায়শই, সমস্যাটি প্রত্যাশিত এবং প্রকৃত আর্গুমেন্টের মধ্যে একটি অমিল।

সাধারণ জিজ্ঞাসা

ফাংশন কলিং এবং টুল ব্যবহারের মধ্যে পার্থক্য কী?

তারা একই ধারণাকে বোঝায়। OpenAI এটিকে "ফাংশন কলিং" বলে, যেখানে Anthropic "টুল ব্যবহার" বলে। উভয়ই LLM-কে বাহ্যিক ফাংশন এক্সিকিউশনের অনুরোধ করতে দেয়।

আমি কি ওপেন-সোর্স মডেলের সাথে ফাংশন কলিং ব্যবহার করতে পারি?

হ্যাঁ, Llama 3.1-এর মতো কিছু ওপেন-সোর্স মডেল ফাংশন কলিং সমর্থন করে এবং LangChain-এর মতো ফ্রেমওয়ার্ক অ্যাবস্ট্রাকশন প্রদান করে। তবে, সমর্থন পরিবর্তিত হয় এবং আপনাকে ফাইন-টিউন করতে বা নির্দিষ্ট প্রম্পট ফরম্যাট ব্যবহার করতে হতে পারে।

আমি কীভাবে LLM-কে বিপজ্জনক ফাংশন কল করা থেকে বিরত রাখব?

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

আপনার নিজের AI এজেন্ট তৈরি করতে প্রস্তুত? একটি সাধারণ টুল ডিফাইন করে এবং এজেন্ট লুপ পরীক্ষা করে শুরু করুন। আরও ডেভেলপার টুলের জন্য, টুল কল পেলোড ডিবাগ করতে আমাদের JSON Formatter দেখুন।