mirror of
https://github.com/ruvnet/RuView
synced 2026-08-08 20:11:43 +00:00
407b46b206
Add ruvnet/midstream (AIMDS real-time inference) and ruvnet/sublinear-time-solver (sublinear optimization algorithms) as vendored dependencies under vendor/.
154 lines
5.2 KiB
JavaScript
154 lines
5.2 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { readFileSync } from 'fs';
|
|
import { fileURLToPath } from 'url';
|
|
import { dirname, join } from 'path';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = dirname(__filename);
|
|
|
|
// Load environment variables manually
|
|
const envPath = join(__dirname, '.env');
|
|
const envContent = readFileSync(envPath, 'utf-8');
|
|
const envVars = {};
|
|
|
|
envContent.split('\n').forEach(line => {
|
|
if (line && !line.startsWith('#')) {
|
|
const [key, value] = line.split('=');
|
|
if (key && value) {
|
|
envVars[key.trim()] = value.trim();
|
|
}
|
|
}
|
|
});
|
|
|
|
async function testPerplexitySearchAPI() {
|
|
const apiKey = envVars.PERPLEXITY_API_KEY;
|
|
|
|
if (!apiKey) {
|
|
console.error('❌ PERPLEXITY_API_KEY not found in .env file');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log('🔑 API Key found:', apiKey.substring(0, 10) + '...' + apiKey.substring(apiKey.length - 4));
|
|
console.log('\n📡 Testing Perplexity Search API...\n');
|
|
|
|
// Test 1: Basic search with Sonar model
|
|
console.log('1️⃣ Testing basic search with Sonar model...');
|
|
try {
|
|
const response = await fetch('https://api.perplexity.ai/chat/completions', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Authorization': `Bearer ${apiKey}`,
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
model: 'sonar',
|
|
messages: [
|
|
{
|
|
role: 'user',
|
|
content: 'What are the latest developments in AI reasoning models in 2024?'
|
|
}
|
|
],
|
|
search_domain_filter: ["openai.com", "anthropic.com", "deepmind.com"],
|
|
search_recency_filter: "month",
|
|
return_citations: true
|
|
})
|
|
});
|
|
|
|
const data = await response.json();
|
|
|
|
if (response.ok) {
|
|
console.log('✅ Basic search successful!');
|
|
console.log(' Response length:', data.choices[0].message.content.length, 'chars');
|
|
console.log(' Citations:', data.citations?.length || 0, 'sources\n');
|
|
} else {
|
|
console.error('❌ Basic search failed:', data.error);
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ Error:', error.message);
|
|
}
|
|
|
|
// Test 2: Multi-turn conversation
|
|
console.log('2️⃣ Testing multi-turn conversation...');
|
|
try {
|
|
const response = await fetch('https://api.perplexity.ai/chat/completions', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Authorization': `Bearer ${apiKey}`,
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
model: 'sonar',
|
|
messages: [
|
|
{
|
|
role: 'user',
|
|
content: 'What is GOAP planning?'
|
|
},
|
|
{
|
|
role: 'assistant',
|
|
content: 'GOAP (Goal-Oriented Action Planning) is an AI planning technique used primarily in game development...'
|
|
},
|
|
{
|
|
role: 'user',
|
|
content: 'How does it compare to behavior trees?'
|
|
}
|
|
]
|
|
})
|
|
});
|
|
|
|
const data = await response.json();
|
|
|
|
if (response.ok) {
|
|
console.log('✅ Multi-turn conversation successful!');
|
|
console.log(' Response preview:', data.choices[0].message.content.substring(0, 100) + '...\n');
|
|
} else {
|
|
console.error('❌ Multi-turn failed:', data.error);
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ Error:', error.message);
|
|
}
|
|
|
|
// Test 3: Academic search mode (if available)
|
|
console.log('3️⃣ Testing with different parameters...');
|
|
try {
|
|
const response = await fetch('https://api.perplexity.ai/chat/completions', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Authorization': `Bearer ${apiKey}`,
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
model: 'sonar',
|
|
messages: [
|
|
{
|
|
role: 'system',
|
|
content: 'You are a helpful research assistant. Be concise.'
|
|
},
|
|
{
|
|
role: 'user',
|
|
content: 'Explain transformer architecture in one paragraph'
|
|
}
|
|
],
|
|
temperature: 0.1,
|
|
max_tokens: 300
|
|
})
|
|
});
|
|
|
|
const data = await response.json();
|
|
|
|
if (response.ok) {
|
|
console.log('✅ Custom parameters test successful!');
|
|
console.log(' Model used:', data.model);
|
|
console.log(' Token usage:', JSON.stringify(data.usage || {}), '\n');
|
|
} else {
|
|
console.error('❌ Custom params failed:', data.error);
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ Error:', error.message);
|
|
}
|
|
|
|
console.log('🎉 All tests completed!');
|
|
}
|
|
|
|
// Run the tests
|
|
testPerplexitySearchAPI(); |