Files
sausage/spikes/s1-v8-harness/real.ts
T
surma 9e9cde5241 spikes: six v3 spikes (V8 harness, WASI shell, git, builder, http hook, esbuild)
Throwaway prototypes for Sausage v3. Plan and decisions:
~/research/sausage-v3/PLAN.md. Results and evidence: the spike READMEs.
2026-11-06 14:03:20 +00:00

25 lines
1.3 KiB
TypeScript

// Make one streamed call through Surma's proxy with pi-ai's OpenAI provider.
import { createModels } from '@earendil-works/pi-ai/models';
import { openaiProvider } from '@earendil-works/pi-ai/providers/openai';
const models = createModels();
models.setProvider(openaiProvider());
const model = {
id: 'gpt-6.1-sol', name: 'gpt-6.1-sol', provider: 'openai', api: 'openai-responses',
baseUrl: `${process.env.PI_PROXY_BASE_URL}/v1`, reasoning: true, input: ['text'],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 200000, maxTokens: 1024,
};
const answer = await models.completeSimple(model as any, {
messages: [{ role: 'user', content: 'Reply with one short sentence about prime numbers.', timestamp: Date.now() }],
}, { apiKey: process.env.PI_PROXY_API_KEY, maxTokens: 1024, reasoning: 'low', headers: { 'Shopify-Usage-Tag': JSON.stringify(['pi', 's1-v8-harness']) } });
if (answer.stopReason === 'error') {
let message = answer.errorMessage ?? 'Real model call failed';
for (const key of ['PI_PROXY_BASE_URL', 'PI_PROXY_API_KEY']) {
const value = process.env[key];
if (value) message = message.split(value).join('[redacted]');
}
throw new Error(message);
}
const text = answer.content.filter(c => c.type === 'text').map(c => c.text).join('');
if (!text) throw new Error('Real model returned no answer text');
console.log(text);