113 apiKeyInput: '',
114 // Model selection
115 selectedModel: 'openai/gpt-oss-120b',
116 // Browser search tool toggle
117 useBrowserSearch: true,
1432 model: this.selectedModel,
1433 reasoning_effort: this.reasoningEffort,
1434 tools: (() => { const list = []; const isOss = !!(this.selectedModel && this.selectedModel.startsWith('openai/gpt-oss')); if (isOss) { if (this.useBrowserSearch) list.push({ type: 'browser_search' }); if (this.useCodeInterpreter) list.push({ type: 'code_interpreter' }); } return list; })(),
1435 temperature: this.temperature,
1436 ...(this.maxTokens ? { max_tokens: this.maxTokens } : {}),
1577 model: this.selectedModel,
1578 reasoning_effort: this.reasoningEffort,
1579 tools: (() => { const list = []; const isOss = !!(this.selectedModel && this.selectedModel.startsWith('openai/gpt-oss')); if (isOss) { if (this.useBrowserSearch) list.push({ type: 'browser_search' }); if (this.useCodeInterpreter) list.push({ type: 'code_interpreter' }); } return list; })(),
1580 temperature: this.temperature,
1581 ...(this.maxTokens ? { max_tokens: this.maxTokens } : {}),
97 <div class="relative">
98 <select x-model="selectedModel" @change="onModelChange()" class="px-2 py-1 pr-8 border border-gray-200 bg-white rounded-md focus:ring-2 focus:ring-blue-500 appearance-none text-xs w-full">
99 <option value="openai/gpt-oss-120b">openai/gpt-oss-120b</option>
100 <option value="openai/gpt-oss-20b">openai/gpt-oss-20b</option>
101 <option value="llama-3.1-8b-instant">llama-3.1-8b-instant</option>
102 <option value="llama-3.3-70b-versatile">llama-3.3-70b-versatile</option>
156 <span>JSON mode</span>
157 </label>
158 <label class="inline-flex items-center gap-2 text-xs" x-show="selectedModel && selectedModel.startsWith('openai/gpt-oss')">
159 <input type="checkbox" x-model="useBrowserSearch" @change="onUseBrowserSearchChange()" class="rounded border-gray-300">
160 <span>browser search</span>
161 </label>
162 <label class="inline-flex items-center gap-2 text-xs" x-show="selectedModel && selectedModel.startsWith('openai/gpt-oss')">
163 <input type="checkbox" x-model="useCodeInterpreter" @change="onUseCodeInterpreterChange()" class="rounded border-gray-300">
164 <span>code interpreter</span>
202 state.selectedModel = storedModel;
203 } else {
204 state.selectedModel = 'openai/gpt-oss-120b';
205 }
206 const storedBase = localStorage.getItem('chat_base_url');
339 state.selectedModel = storedModel;
340 } else {
341 state.selectedModel = 'openai/gpt-oss-120b';
342 }
343 const storedBase = localStorage.getItem('chat_base_url');
294 <div class="relative">
295 <select x-model="selectedModel" @change="onModelChange()" class="px-2 py-1 pr-8 border border-gray-200 bg-white rounded-md focus:ring-2 focus:ring-blue-500 appearance-none text-xs w-full">
296 <option value="openai/gpt-oss-120b">openai/gpt-oss-120b</option>
297 <option value="openai/gpt-oss-20b">openai/gpt-oss-20b</option>
298 <option value="llama-3.1-8b-instant">llama-3.1-8b-instant</option>
299 <option value="llama-3.3-70b-versatile">llama-3.3-70b-versatile</option>
349 <span>JSON mode</span>
350 </label>
351 <label class="inline-flex items-center gap-2 text-xs" x-show="selectedModel && selectedModel.startsWith('openai/gpt-oss')">
352 <input type="checkbox" x-model="useBrowserSearch" @change="onUseBrowserSearchChange()" class="rounded border-gray-300">
353 <span>browser search</span>
354 </label>
355 <label class="inline-flex items-center gap-2 text-xs" x-show="selectedModel && selectedModel.startsWith('openai/gpt-oss')">
356 <input type="checkbox" x-model="useCodeInterpreter" @change="onUseCodeInterpreterChange()" class="rounded border-gray-300">
357 <span>code interpreter</span>
173 <div class="form-group">
174 <label for="model">Model:</label>
175 <input type="text" id="model" name="model" value="openai/gpt-oss-20b">
176 </div>
177
17
18- **API Key**: Your NVIDIA API key (stored in cookies)
19- **Model**: AI model to use (default: `openai/gpt-oss-20b`)
20- **Messages**: JSON array of conversation messages
21- **Temperature**: Controls randomness (0-2, default: 1)
1// @ts-ignore
2import { OpenAI } from "https://esm.town/v/std/openai?v=4";
3// @ts-ignore
4import { blob } from "https://esm.town/v/std/blob?v=11";
57// --- CORE AI & TREE LOGIC ---
58const MAX_DEPTH = 4;
59const openai = new OpenAI();
60
61async function callAI(fact: string, prompt: string): Promise<Prerequisite[]> {
62 try {
63 const completion = await openai.chat.completions.create({
64 model: "gpt-4o",
65 messages: [
149 <div class="form-group">
150 <label for="model">Model:</label>
151 <input type="text" id="model" name="model" value="openai/gpt-oss-20b">
152 </div>
153
1// Learn more: https://docs.val.town/vals/http/
2const BASE_URL = "https://api.longcat.chat/openai";
3
4export default async function (req: Request): Promise<Response> {
24 provider: "groq",
25 model: "meta-llama/llama-4-maverick-17b-128e-instruct",
26 endpoint: "https://api.groq.com/openai/v1/chat/completions",
27 headers: {
28 "Authorization": `Bearer ${process.env.GROQ_API_KEY}`,
35 provider: "groq",
36 model: "meta-llama/llama-4-scout-17b-16e-instruct",
37 endpoint: "https://api.groq.com/openai/v1/chat/completions",
38 headers: {
39 "Authorization": `Bearer ${process.env.GROQ_API_KEY}`,