Files
aitest/8-skill-in-shell.mjs
2026-03-17 02:14:29 +00:00

92 lines
2.2 KiB
JavaScript

import OpenAI from "openai";
import path from "path";
import shell from 'shelljs'
const client = new OpenAI();
const responseHosted = await client.responses.create({
model: "gpt-5.2",
tools: [
{
type: "shell",
environment: {
type: "container_auto",
skills: [
{ type: "skill_reference", skill_id: "skill_69b7c456a9408193856b890836fcd1950fd5b0453b8a6018" },
],
},
},
],
input: "Use the skills to find phone number of Qiaozhen.",
});
console.log('Hosted shell response:', responseHosted.output_text);
// const conversation = [{
// role: 'user',
// content: "Use the mycontacts skill and run locally to find the phone number of Qiaozhen."
// }]
// let hasShellCall = true
// let round = 0
// while(hasShellCall) {
// hasShellCall = false
// round++
// const responseLocal = await client.responses.create({
// model: "gpt-5.2",
// tools: [
// {
// type: "shell",
// environment: {
// type: "local",
// skills: [
// {
// name: "mycontacts",
// description: "My contacts info",
// path: path.resolve("./skills/mycontacts"),
// },
// ],
// },
// },
// ],
// input: conversation,
// });
// console.log('Local shell response output:', JSON.stringify(responseLocal.output, null, 2));
// conversation.push(...responseLocal.output)
// responseLocal.output.forEach(item => {
// if (item.type == 'shell_call') {
// hasShellCall = true
// console.log('shell call item =', item)
// let shell_call_output = []
// item.action.commands.forEach(command => {
// console.log('$', command, '\n')
// let { stdout, stderr } = shell.exec(command, {
// silent: true
// })
// shell_call_output.push({
// stdout,
// stderr,
// outcome: { type: 'exit', exit_code: 0 }
// })
// })
// conversation.push({
// type: 'shell_call_output',
// call_id: item.call_id,
// output: shell_call_output
// })
// }
// })
// console.log('Local shell response of round ' + round + ':', JSON.stringify(responseLocal.output_text, null, 2));
// }