Spaces:
Sleeping
Sleeping
File size: 2,570 Bytes
567f740 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
const axios = require('axios');
class DeepInfraHandler {
constructor() {
this.API_URL = 'https://api.deepinfra.com/v1/openai/chat/completions';
this.headers = {
'Accept': 'text/event-stream',
'Accept-Encoding': 'gzip, deflate, br, zstd',
'Content-Type': 'application/json',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
};
}
_preparePayload(params) {
return {
model: params.model,
messages: params.messages,
temperature: params.temperature || 0.7,
max_tokens: params.max_tokens || 4096,
top_p: params.top_p || 1.0,
frequency_penalty: params.frequency_penalty || 0.0,
presence_penalty: params.presence_penalty || 0.0,
stop: params.stop || [],
stream: params.stream || false
};
}
async generateCompletion(params) {
const payload = this._preparePayload(params);
try {
if (payload.stream) {
return this._handleStreamingResponse(payload);
} else {
return this._handleRegularResponse(payload);
}
} catch (error) {
throw new Error(`API request failed: ${error.message}`);
}
}
async _handleRegularResponse(payload) {
const response = await axios.post(this.API_URL, payload, {
headers: this.headers
});
return response.data;
}
async* _handleStreamingResponse(payload) {
const response = await axios.post(this.API_URL, payload, {
headers: this.headers,
responseType: 'stream'
});
for await (const chunk of response.data) {
const lines = chunk.toString().split('\n');
for (const line of lines) {
if (line.startsWith('data: ')) {
try {
const content = JSON.parse(line.slice(6));
if (content === '[DONE]') continue;
const deltaContent = content?.choices?.[0]?.delta?.content;
if (deltaContent) yield deltaContent;
} catch (error) {
continue;
}
}
}
}
}
}
module.exports = { DeepInfraHandler }; |