react-native-deepgram
Version:
React Native SDK for Deepgram's AI-powered speech-to-text, real-time transcription, and text intelligence APIs. Supports live audio streaming, file transcription, sentiment analysis, and topic detection for iOS and Android.
67 lines (66 loc) • 1.83 kB
JavaScript
;
export function createAgentSettings(opts = {}) {
const temperature = (() => {
if (typeof opts.temperature === 'string') {
const parsed = parseFloat(opts.temperature);
return Number.isFinite(parsed) ? Math.max(0, Math.min(2, parsed)) : 0.7;
}
if (typeof opts.temperature === 'number') {
return Math.max(0, Math.min(2, opts.temperature));
}
return 0.7;
})();
const tags = (() => {
if (typeof opts.tags === 'string') {
return opts.tags.split(',').map(t => t.trim()).filter(Boolean);
}
return opts.tags ?? [];
})();
const sampleRate = (() => {
if (typeof opts.sampleRate === 'string') {
const parsed = parseInt(opts.sampleRate, 10);
return Number.isFinite(parsed) && parsed > 0 ? parsed : 16000;
}
if (typeof opts.sampleRate === 'number' && opts.sampleRate > 0) {
return opts.sampleRate;
}
return 16000;
})();
const settings = {
audio: {
input: {
encoding: 'linear16',
sample_rate: sampleRate
},
output: {
encoding: 'linear16',
sample_rate: sampleRate,
container: 'none'
}
},
agent: {
language: opts.language?.trim() || 'en',
greeting: opts.greeting?.trim() || 'Hello! How can I help you today?',
listen: {
provider: {
type: 'deepgram',
model: opts.listenModel?.trim() || 'nova-3',
smart_format: true
}
},
think: {
provider: {
type: 'open_ai',
model: opts.thinkModel?.trim() || 'gpt-4o',
temperature
},
prompt: opts.prompt?.trim() || 'You are a helpful assistant.'
}
}
};
if (tags.length > 0) {
settings.tags = tags;
}
return settings;
}
//# sourceMappingURL=createAgentSettings.js.map