Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

i get Error 400 Invalid shema function 'createProject': False is not of type array when i pass the tool that call a function to create a project in chatCompletions #893

Open
CelebMunyiri opened this issue Nov 7, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@CelebMunyiri
Copy link

Your issue may already be reported!
Please search on the issue tracker before creating one.

Describe the bug
A clear and concise description of what the bug is. If it's an API-related bug, please provide relevant endpoint(s).

To Reproduce
Steps to reproduce the behavior, including any relevant code snippets.

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots/Logs
If applicable, add screenshots to help explain your problem. For non-graphical issues, please provide any relevant logs or stack traces.

Environment (please complete the following information):

  • go-openai version: [e.g. v1.12.0]
  • Go version: [e.g. 1.18]
  • OpenAI API version: [e.g. v1]
  • OS: [e.g. Ubuntu 20.04]

Additional context
Add any other context about the problem here.

function createProjectCreationTool() {
return {
type: "function",
function: {
name: "createProject",
description: "Creates a new project with specified details.",
function: createProject,
parameters: {
type: "object",
properties: {
projectName: { type: "string", description: "Name of the project" },
department: { type: "string", enum: ["marketing"], description: "Department responsible for the project" },
webOrMobile: { type: "array", items: { type: "string" }, description: "Project platforms (e.g., ['web', 'mobile'])" },
modules: { type: "array", items: { type: "string" }, description: "List of project modules" },
customerName: { type: "string", description: "Name of the customer" },
//leadId: { type: "string", description: "ID of the associated lead", required: false },
expected_start_date: { type: "string", description: "Expected start date in format YYYY-MM-DD", required: false },
expected_completion_date: { type: "string", description: "Expected completion date in format YYYY-MM-DD", required: false },
project_status: { type: "string", description: "Initial status of the project", required: false },
total_value: { type: "string", description: "Total value of the project", required: false },
amount_paid: { type: "string", description: "Amount paid so far", required: false },
amount_due: { type: "string", description: "Amount due for the project", required: false }
},
required: []
}
}
};
}

async function createProject(args) {
const {
projectName,
department = "marketing",
// webOrMobile = [],
// modules = [],
customerName,
// leadId,
expected_start_date,
expected_completion_date,
project_status = "Pending",
total_value,
amount_paid,
amount_due
} = JSON.parse(args);

console.log("ARGS:",args)

// Validate that webOrMobile and modules are arrays
// if (!Array.isArray(webOrMobile)) {
//     throw new Error("Invalid format for 'webOrMobile': Expected an array.");
// }
// if (!Array.isArray(modules)) {
//     throw new Error("Invalid format for 'modules': Expected an array.");
// }

// Step 1: Find the customer by name
const customer = await Customer.findOne({ client_name: customerName });
if (!customer) {
    throw new Error(`Customer with the name "${customerName}" not found.`);
}
console.log("Customer:", customer)

// Step 2: Optionally find the lead by ID if provided
let lead = null;
// if (leadId) {
//     lead = await Lead.findById(leadId);
//     if (!lead) {
//         throw new Error(`Lead with ID "${leadId}" not found.`);
//     }
// }

// Step 3: Create the project object
const newProject = new Project({
    projectName,
    department,
   // webOrMobile,
   // modules,
    customer: customer._id,
    //lead_id: lead?._id,
    expected_start_date,
    expected_completion_date,
    project_status,
    total_value,
    amount_paid,
    amount_due
});

// Step 4: Save the project to the database

await newProject.save();

return {
    message: "Project created successfully.",
    projectId: newProject.projectId,
    projectName: newProject.projectName,
    customer: customerName,
   // leadId: leadId || "Not linked"
};

}

@CelebMunyiri CelebMunyiri added the bug Something isn't working label Nov 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant