import OpenAI from "openai";
import { stophySearch } from "./stophy";
const openai = new OpenAI();
const tools: OpenAI.Responses.Tool[] = [
{
type: "function",
name: "web_search",
description: "Search the web. Returns the top results as markdown.",
parameters: {
type: "object",
properties: { query: { type: "string", description: "What to search for" } },
required: ["query"],
additionalProperties: false,
},
strict: true,
},
];
let response = await openai.responses.create({
model: "gpt-5-mini",
input: "What changed in the latest Bun release?",
tools,
});
while (true) {
const calls = response.output.filter((item) => item.type === "function_call");
if (calls.length === 0) break;
const outputs: OpenAI.Responses.ResponseInputItem[] = [];
for (const call of calls) {
const { query } = JSON.parse(call.arguments) as { query: string };
outputs.push({ type: "function_call_output", call_id: call.call_id, output: await stophySearch(query) });
}
response = await openai.responses.create({
model: "gpt-5-mini",
previous_response_id: response.id,
input: outputs,
tools,
});
}
console.log(response.output_text);