Open in
OpenAI Realtime கிளையண்டுகளுடன் ThunderPhone ஐப் பயன்படுத்துங்கள்
சேமித்த ஏஜென்ட் அல்லது inline session கட்டமைப்பைப் பயன்படுத்தி, OpenAI Realtime-இணக்கமான சர்வர் கிளையண்டை ThunderPhone நோக்கி அமைக்கவும்.
ThunderPhone, OpenAI Realtime நிகழ்வு மாதிரியின் கவனம் செலுத்தப்பட்ட துணைக்குழுவை செயல்படுத்துகிறது. ஏற்கனவே உள்ள சர்வர்-பக்க கிளையண்ட், ThunderPhone குரல் ஏஜென்ட்டைப் பயன்படுத்தும்போது அதன் WebSocket, ஆடியோ, அமர்வு மற்றும் பதில் நிகழ்வு ஓட்டத்தைத் தொடரலாம்.
இணைப்பதற்கு முன்
உங்களுக்கு ThunderPhone அமைப்பு ரகசிய API விசையும் WebSocket-களைத் திறக்கக்கூடிய சர்வர் இயக்கநேரமும் தேவை. உலாவி குறியீட்டிலிருந்து இணைக்காதீர்கள் அல்லது விசையை உலாவிக்கு வெளிப்படுத்தாதீர்கள். சேமிக்கப்பட்ட ஏஜென்ட்டைப் பயன்படுத்த, முதலில் அதை டிப்ளாய் செய்து அதன் எண் ஏஜென்ட் ID-ஐ நகலெடுக்கவும்.
இணைக்க வேண்டிய முகவரி:
wss://api.thunderphone.com/v1/realtimeஉங்கள் சர்வரிலிருந்து WebSocket மேம்படுத்தலை அங்கீகரிக்கவும்:
Authorization: Bearer sk_live_YOUR_API_KEYஹேண்ட்ஷேக் தலைப்புகளை அமைக்க முடியாத கிளையண்ட்களுக்குக் கேள்விச் சரம் அங்கீகாரம் உள்ளது, ஆனால் URL-கள் பதிவுகளில் கசிய எளிதானவை.
உள்ளமைவின் உரிமையாளர் யார் என்பதைத் தேர்ந்தெடுக்கவும்
| பயன்முறை | இதனுடன் இணைக்கவும் | உள்ளமைவு மூலாதாரம் |
|---|---|---|
| சேமிக்கப்பட்ட ஏஜென்ட் | ?agent_id=12 | டிப்ளாய் செய்யப்பட்ட prompt, குரல், தயாரிப்பு, மொழிகள், அறிவு மற்றும் இணக்கமான சர்வர்-இயக்கக் கருவிகள் |
| இன்லைன் | agent_id இல்லை | உங்கள் கிளையண்டிலிருந்து ஏற்றுக்கொள்ளப்படும் முதல் session.update |
சேமிக்கப்பட்ட ஏஜென்ட்
டிப்ளாய் செய்யப்பட்ட ஏஜென்ட் ID-உடன் இணைக்கவும்:
wss://api.thunderphone.com/v1/realtime?agent_id=12சாக்கெட் இணையும் போதே ஏஜென்ட் தொடங்கும். அதன் வரவேற்பு கிடைக்கும் நிலையில் இருக்கும்,
ஆனால் Realtime அதன் பேசப்படும் அமைதி சரிபார்ப்புகளை முடக்கி, transfer_call
மற்றும் send_keypad_input ஆகியவற்றைச் சேர்க்காது. பிற இணக்கமான கருவிகள் ThunderPhone-இல் இயங்கும். இந்தப் பயன்முறைக்கு இன்லைன் வழிமுறைகளையோ கிளையண்ட் இயக்கும் கருவிகளையோ அனுப்பாதீர்கள்.
ஏஜென்ட் தொடங்குவதற்கு முன் input_audio_format,
output_audio_format, input_rate, மற்றும் output_rate கேள்வி அளவுருக்களுடன் பரிமாற்ற ஆடியோவை அமைக்கவும். இணைப்புக்குப் பிறகு சேமிக்கப்பட்ட உள்ளமைவையோ ஆடியோ வடிவங்களையோ மாற்ற முடியாது.
இன்லைன் அமர்வு
agent_id இல்லாமல், session.created வரும் வரை காத்திருந்து, பின்னர் session.update அனுப்பவும்:
{
"type": "session.update",
"session": {
"type": "realtime",
"instructions": "Answer questions clearly and keep responses brief.",
"audio": {
"input": {
"format": { "type": "audio/pcm", "rate": 24000 }
},
"output": {
"format": { "type": "audio/pcm", "rate": 24000 },
"voice": "olivia"
}
},
"config": {
"product": "bolt"
}
}
}முதல் ஏற்றுக்கொள்ளப்பட்ட புதுப்பிப்பு அழைப்பைத் தயாராக்கும். session.updated என்பது
அமர்வு செயல்பாட்டில் உள்ளது என்பதைக் குறிக்கும். அதன் பிறகு வழிமுறைகள், குரல், தயாரிப்பு, கருவிகள் மற்றும் ஆடியோ வடிவங்களை மாற்ற முடியாது.
இன்லைன் அமர்வுகளில் தானியங்கி வரவேற்போ பேசப்படும் அமைதி சரிபார்ப்புகளோ இல்லை. ஏஜென்ட் முதலில் பேசச் செய்ய, ஒரு அமைப்பு அல்லது பயனர் செய்தியைச் சேர்த்து
response.create அனுப்பவும். முற்றிலும் செயலற்ற அமர்வு, இயல்பாக 600 வினாடிகளாக உள்ள தளத்தின் அமைதியான அழைப்பு வரம்பில் முடிவடையும்.
அதிகாரப்பூர்வ OpenAI SDK-ஐ பயன்படுத்தவும்
/v1-இல் முடியும் WebSocket அடிப்படை URL-ஐ அனுப்பவும்; SDK /realtime-ஐச் சேர்க்கும். model மதிப்பு இணக்கத்தன்மைக்கான பெயராகும்; இது ThunderPhone தயாரிப்பைத் தேர்ந்தெடுக்காது. அமர்வு உள்ளமைவு அல்லது சேமிக்கப்பட்ட ஏஜென்ட்டில் தயாரிப்பைத் தேர்ந்தெடுக்கவும்.
இந்த இணைப்புச் சரிபார்ப்பு ஒரு உட்பொதிக்கப்பட்ட Bolt அமர்வை உருவாக்கி, முதல் session.updated வரும் வரை நிகழ்வுகளை அச்சிட்டு, பின்னர் மூடுகிறது. ஆடியோவை ஸ்ட்ரீம் செய்ய குறைந்தபட்ச Python
கிளையண்டை பயன்படுத்தவும்.
import asyncio
import os
from openai import AsyncOpenAI
async def main():
client = AsyncOpenAI(
api_key=os.environ["THUNDERPHONE_API_KEY"],
websocket_base_url="wss://api.thunderphone.com/v1",
)
async with client.realtime.connect(
model="thunderphone-realtime"
) as connection:
await connection.session.update(session={
"type": "realtime",
"instructions": "Listen to the caller and help them complete the call.",
"config": {"product": "bolt"},
})
async for event in connection:
print(event.type)
if event.type == "session.updated":
break
if __name__ == "__main__":
asyncio.run(main())உள்ளீட்டு ஆடியோ இணைப்பு, பதில் ஆடியோ டெல்டாக்கள், குறுக்கீடுகள், செயல்பாட்டு அழைப்புகள், பிழைகள் மற்றும் சுத்தமான சாக்கெட் மூடல் ஆகியவற்றுக்கான தற்போதைய கையாளுதலைத் தொடரவும். உட்பொதிக்கப்பட்ட தனிப்பயன் செயல்பாடுகள் உங்கள் கிளையண்டில் இயங்கும்; அவற்றின் முடிவுகளை Realtime நெறிமுறை வழியாகத் திருப்பி அனுப்பவும். சேமிக்கப்பட்ட ஏஜென்ட் கருவிகள் ThunderPhone-இல் இயங்கும்.
அமர்வு வாழ்க்கைச்சுழற்சி மற்றும் தோல்விகள்
ஒரு WebSocket ஒரு அழைப்பைக் குறிக்கிறது. தவறான ஏஜென்ட் ID அல்லது நிராகரிக்கப்பட்ட உட்பொதிக்கப்பட்ட உள்ளமைவு error நிகழ்வை உருவாக்கும். அமர்வை செயலில் உள்ளதாகக் கருதுவதற்கு முன் session.updated-க்காகக் காத்திருக்கவும். உண்மையான உள்ளீடு மற்றும் வெளியீட்டு வடிவங்களையும் மாதிரி விகிதங்களையும் அறிவிக்கவும்: PCM விகிதப் பொருத்தமின்மை சரிபார்ப்புப் பிழையை உருவாக்குவதற்குப் பதிலாக ஆடியோவை மிக வேகமாகவோ மிக மெதுவாகவோ இயக்கும்.
அமர்வு தொடங்கிய பிறகு, உங்கள் பயன்பாடு முடிந்ததும் சாக்கெட்டைச் சுத்தமாக மூடவும். உட்பொதிக்கப்பட்ட அமர்வுகள் கிளையண்டில் இயங்கும் செயல்பாடுகளைப் பயன்படுத்தலாம். சேமிக்கப்பட்ட ஏஜென்ட் அமர்வுகள் இணக்கமான ThunderPhone-இல் இயங்கும் கருவிகளைப் பயன்படுத்தும்; அவை அழைப்பு மாற்றம் அல்லது எண்விசைப் பலகை உள்ளீட்டை வழங்காது.
ஒருங்கிணைப்பைச் சோதிக்கவும்
குறைந்தபட்ச Python WAV கிளையண்டில் தொடங்கி, அது அறிவித்த விகிதத்தில் ஒரே சேனல் PCM16 WAV கோப்பைப் பயன்படுத்தவும். பின்வருவனவற்றைச் சரிபார்க்கவும்:
- சேவையகம் உள்ளமைவை ஏற்று
session.updated-ஐ அனுப்புகிறது. - உள்ளீடு எதிர்பார்க்கப்பட்ட வேகத்தில் உரைநகல் மற்றும் பதில்-ஆடியோ நிகழ்வுகளை உருவாக்குகிறது.
- குறுக்கீடும் பதில் ரத்துசெய்தலும் மீதமுள்ள வெளியீட்டு ஆடியோவை நிறுத்துகின்றன.
- உட்பொதிக்கப்பட்ட செயல்பாட்டு முடிவுகள் அல்லது சேமிக்கப்பட்ட ஏஜென்ட் கருவி முடிவுகள் மாதிரிக்குத் திரும்புகின்றன.
- தவறான உள்ளீடு உங்கள் கிளையண்ட் கையாளும்
errorநிகழ்வை உருவாக்குகிறது. - உங்கள் கிளையண்ட் சாக்கெட்டை மூடுகிறது; அழைப்பு அழைப்பு வரலாற்றில் தோன்றுகிறது.
Realtime WebSocket குறிப்பு, ஏற்றுக்கொள்ளப்படும் நிகழ்வுகள், ஆடியோ வடிவங்கள், அமர்வுப் புலங்கள் மற்றும் முழுமையான எடுத்துக்காட்டுகளைப் பட்டியலிடுகிறது.
செலவு
Realtime அழைப்புகள் தேர்ந்தெடுக்கப்பட்ட தயாரிப்பின் வழக்கமான நிமிடக் கட்டணத்தைப் பயன்படுத்தும். நேரடி உரைநகல் டெல்டாக்களை இயக்குவது முழு அமர்விற்கும் நிமிடத்திற்கு கூடுதல் கட்டணத்தைச் சேர்க்கும்; கட்டணத்திற்காக நேரடி உரைநகல்களை மற்றும் தயாரிப்புக் கட்டணங்களுக்காக விலையிடலை பார்க்கவும்.
POST /v1/realtime/sessions என்பது தனியான நிர்வகிக்கப்படும் LiveKit பாதையாகும். இது ஒரு அறையையும் வரம்பிடப்பட்ட பங்கேற்பாளர் டோக்கனையும் உருவாக்கும்; நேரடி WebSocket இணைப்பிற்கு இது தேவையில்லை.
கட்டமைப்பு ஒருங்கிணைப்புகளுக்கு, Pipecat-இலிருந்து ThunderPhone-ஐப் பயன்படுத்தவும் மற்றும் LiveKit Agents-இலிருந்து ThunderPhone-ஐப் பயன்படுத்தவும் என்பதைப் பார்க்கவும்.