ஒரு கருவி ஒருங்கிணைப்பை உருவாக்கவும் (API)

ஒரு டூல் ஒருங்கிணைப்பு என்பது, அழைப்பின்போது ஏஜென்ட் அழைக்கக்கூடிய மறுபயன்பாட்டு HTTP எண்ட்பாயிண்ட் ஆகும். டூலின் JSON-schema விளக்கத்தையும் ஒரு எண்ட்பாயிண்ட் URL-ஐயும் நீங்கள் ThunderPhone-க்கு வழங்குகிறீர்கள்; உரையாடலின் அடிப்படையில் அதை எப்போது அழைக்க வேண்டும் என்பதை ஏஜென்ட் தீர்மானிக்கிறது, மேலும் ThunderPhone அதன் சர்வர்களிலிருந்து வெளிச்செல்லும் HTTP கோரிக்கையை அனுப்பி, பதிலை ஏஜென்ட்டிடம் திருப்பி வழங்குகிறது.

இந்த வழிகாட்டி வானிலைத் தேடல் டூலை தொடக்கம் முதல் முடிவு வரை உருவாக்கிக் காட்டுகிறது.

டூலின் அமைப்பு

இரண்டு பகுதிகள்:

  1. ஸ்கீமா — OpenAI பாணி செயல்பாட்டு வரையறை ({type: "function", function: {name, description, parameters}}); இது டூல் என்ன செய்கிறது, எந்த ஆர்க்யூமென்ட்களைப் பெறுகிறது என்பதை LLM-க்கு தெரிவிக்கிறது.
  2. எண்ட்பாயிண்ட் — டூலைப் பயன்படுத்த LLM தீர்மானிக்கும்போது ThunderPhone-ன் சர்வர்கள் அழைக்கும் URL. கோரிக்கை என்பது, LLM தேர்ந்தெடுத்த ஆர்க்யூமென்ட்களை உடலாகக் கொண்ட JSON POST ஆகும்.

1. சேமிப்பு உத்தியைத் தேர்ந்தெடுக்கவும்

ஏஜென்ட்டில் இன்லைனாக

ஒருமுறை மட்டுமே பயன்படுத்தும் டூலை ஏஜென்ட்டின் tools வரிசையில் இணைக்கவும். எளிமையானது, ஆனால் மறுபயன்படுத்த முடியாது.

சேமிக்கப்பட்ட ஒருங்கிணைப்பு

டூலை மறுபயன்பாட்டு ஒருங்கிணைப்பாக சேமித்து, பல ஏஜென்ட்களிலிருந்து இணைக்கவும். ஒருமுறைக்கு மேல் பயன்படுத்தப்படும் எதற்கும் பரிந்துரைக்கப்படுகிறது.

இந்த வழிகாட்டி சேமிக்கப்பட்ட-ஒருங்கிணைப்பு முறையைப் பயன்படுத்துகிறது.

2. ஒருங்கிணைப்பை உருவாக்கவும்

curl -X POST https://api.thunderphone.com/v1/integrations \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "Weather API",
    "spec": {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Return the current weather for a zip code.",
        "parameters": {
          "type": "object",
          "properties": {
            "zip": { "type": "string", "description": "5-digit US ZIP code" }
          },
          "required": ["zip"]
        }
      }
    },
    "endpoint_url":    "https://api.example.com/weather",
    "endpoint_method": "GET",
    "headers": [
      { "key": "X-Api-Key", "value": "your-provider-key" }
    ]
  }'

திரும்ப வரும் id-ஐ (ஒரு UUID) சேமிக்கவும்.

3. எண்ட்பாயிண்டை சாண்ட்பாக்ஸ் சோதனை செய்யவும்

ஒருங்கிணைப்பை ஏஜென்ட்டுடன் இணைப்பதற்கு முன், இணைப்புத் திறனை உறுதிப்படுத்த ThunderPhone-ன் சர்வர்களிலிருந்து கையொப்பமிடப்பட்ட கோரிக்கையை அனுப்பவும்:

curl -X POST https://api.thunderphone.com/v1/integrations/test-request \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url":    "https://api.example.com/weather?zip=94110",
    "method": "GET",
    "headers": { "X-Api-Key": "your-provider-key" }
  }'
{
  "ok": true,
  "status": 200,
  "elapsed_ms": 187,
  "response_headers": { "content-type": "application/json" },
  "response_preview": "{\"temperature_f\": 64, ...}"
}

இந்தச் சோதனை ThunderPhone-ன் SSRF பாதுகாப்புகளையும் வலுப்படுத்துகிறது — localhost அல்லது தனியார் IP வரம்புகளுக்கான கோரிக்கைகள் 400 code=url_not_allowed-ஐத் திருப்பும்.

4. ஏஜென்ட்டுடன் ஒருங்கிணைப்பை இணைக்கவும்

ஏஜென்ட்டை உருவாக்கும்போது அல்லது புதுப்பிக்கும்போது integration_ids மூலம் இணைக்கவும்:

curl -X PATCH https://api.thunderphone.com/v1/agents/12 \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "integration_ids": ["f9b5a1a4-..."]
  }'

ஒரு ஏஜென்ட்டுடன் பல ஒருங்கிணைப்புகளை இணைக்கலாம். ஏஜென்ட்டின் prompt அவற்றை பெயரால் குறிப்பிடலாம் — அழைப்பாளர் வானிலை நிலவரங்களைப் பற்றி கேட்கும்போது get_weather ஐப் பயன்படுத்தவும் — அல்லது ஸ்கீமா விளக்கங்களிலிருந்து அவற்றை மறைமுகமாகக் கண்டறியலாம்.

5. எண்ட்பாயிண்ட்டை செயல்படுத்தவும்

ஏஜென்ட் கருவியை அழைக்கும்போது, ThunderPhone உங்கள் endpoint_url க்கு கையொப்பமிடப்பட்ட POST ஒன்றை அனுப்பும்:

POST /weather HTTP/1.1
Host: api.example.com
X-Api-Key: your-provider-key
X-ThunderPhone-Signature: <HMAC-SHA256 hex>
X-ThunderPhone-Call-ID: 987654321
Content-Type: application/json

{"zip": "94110"}

உங்கள் சர்வர் LLM-க்கு மீண்டும் அனுப்பப்படும் JSON உடன் பதிலளிக்கும்:

{"temperature_f": 64, "condition": "Partly cloudy", "wind_mph": 8}

LLM அந்தப் பதிலைப் பெற்று, அழைப்பாளரிடம் இயல்பான மொழியில் சுருக்கமாகக் கூறும்.

6. செயல்முறையைச் சோதிக்கவும்

ஏஜென்ட்டுக்கு எதிராக ஒரு மைக் அமர்வை இயக்கி, உங்கள் கருவி கையாளும் கேள்வியைக் கேளுங்கள் ("94110 இல் வானிலை எப்படி உள்ளது?"). அழைப்பின் உரையாடல் பதிவு முழுமையான சுற்றுப்பயணத்தைக் காட்டும்:

{
  "call_id": 987654321,
  "transcripts": [
    { "role": "user",
      "content": "What's the weather in 94110?" },
    { "role": "tool_call",
      "content": "{\"tool_call\": \"get_weather\", \"arguments\": {\"zip\": \"94110\"}}" },
    { "role": "tool_response",
      "content": "{\"tool_name\": \"get_weather\", \"response\": {\"temperature_f\": 64, \"condition\": \"Partly cloudy\"}}" },
    { "role": "agent",
      "content": "It's 64 degrees and partly cloudy." }
  ]
}

இதை GET /v1/calls/{call_id}/transcript மூலம் பெறலாம்; ஒவ்வொரு பதிவிற்குமான நேரம் மற்றும் ஆடியோ ஆஃப்செட்களைக் கொண்ட மூல நிகழ்வு ஸ்ட்ரீம் GET /v1/calls/{call_id}/history இல் உள்ளது.

பொதுவான சிக்கல்கள்

ஏஜென்ட் கருவியை ஒருபோதும் அழைக்கவில்லை

கருவியின் விளக்கத்தின் அடிப்படையில் LLM முடிவு செய்கிறது. அழைப்பாளரின் கேள்வி விளக்கத்துடன் பொருந்தவில்லை என்றால், மாடல் கருவியை அழைக்காது. விளக்கத்தைத் துல்லியமாக்கவும் (பொதுவான இணைச்சொற்கள் மற்றும் சொற்றொடர்களைச் சேர்க்கவும்) அல்லது ஏஜென்ட்டின் prompt-இல் அதைத் தெளிவாகக் குறிப்பிடவும் ("அழைப்பாளர் வானிலையைப் பற்றி கேட்கும்போது, get_weather ஐப் பயன்படுத்தவும்.").

கருவி மிக அதிகமான தரவைத் திருப்புகிறது

6 kB-ஐ மீறும் பதில்கள் உரையாடல் பதிவு முன்னோட்டத்தில் துண்டிக்கப்படும். LLM-க்கு தேவையான புலங்களை மட்டும் திருப்புங்கள் — உங்கள் முழு வரிசையையும் அல்ல.

நேரம் முடிவடைவது

கருவி எண்ட்பாயிண்ட்டுகளுக்கு இயல்புநிலை நேர வரம்பு 10 வினாடிகள். அதிக நேரம் தேவைப்பட்டால், அதை ஒத்திசைவற்ற முறையில் கையாளவும்: {"status": "pending", "request_id": "..."} ஐத் திருப்பி, தனி கருவி அழைப்பு மூலம் முடிவை வெளிப்படுத்தவும்.

பதிப்பாக்கம்

ஒவ்வொரு ஒருங்கிணைப்பு PATCH-உம் புதிய திருத்தத்தை உருவாக்கும். யார் எதை மாற்றினார்கள் என்பதைப் பார்க்க GET /v1/integrations/{id}/versions ஐ ஆய்வு செய்யவும். கருவியின் ஸ்கீமாவைச் சிதைத்துவிட்டால், பழைய ஸ்னாப்ஷாட்டை மீண்டும் PATCH செய்து கைமுறையாக முந்தைய நிலைக்கு மாற்றலாம்.


அடுத்த படிகள்