-
Notifications
You must be signed in to change notification settings - Fork 24
Open
Description
I'm trying to use other models besides openai in your example code but I'm just getting a response back "invalid model". I've only tried with anthropic and perplexity so haven't set any of the other models supported in the array but those two models don't appear to be working. Note: It works fine if I use OpenAI models.
BadRequestError: 400 invalid model ID
at APIError.generate (file:///Users/jgarland/Documents/GitHub/ai-api/node_modules/openai/error.mjs:41:20)
at OpenAI.makeStatusError (file:///Users/jgarland/Documents/GitHub/ai-api/node_modules/openai/core.mjs:286:25)
at OpenAI.makeRequest (file:///Users/jgarland/Documents/GitHub/ai-api/node_modules/openai/core.mjs:330:30)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async main (file:///Users/jgarland/Documents/GitHub/ai-api/src/example.js:59:18) {
status: 400,
headers: {
'alt-svc': 'h3=":443"; ma=86400',
'cf-cache-status': 'DYNAMIC',
'cf-ray': '8e2a1db4c819e64d-DEN',
connection: 'keep-alive',
'content-length': '149',
'content-type': 'application/json; charset=utf-8',
date: 'Thu, 14 Nov 2024 21:32:46 GMT',
server: 'cloudflare',
'set-cookie': '__cf_bm=-1731619966-1.0.1.1-.iEwnKF9.cvczeAyw; path=/; expires=Thu, 14-Nov-24 22:02:46 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=-1731619966293-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None',
'strict-transport-security': 'max-age=31536000; includeSubDomains; preload',
vary: 'Origin',
'x-content-type-options': 'nosniff',
'x-request-id': 'req_957384571a2399d617daa5ec52787002'
},
request_id: 'req_957384571a2399d617daa5ec52787002',
error: {
message: 'invalid model ID',
type: 'invalid_request_error',
param: null,
code: null
},
code: null,
param: null,
type: 'invalid_request_error'
}
Here is some sample javascript code I'm using.
import OpenAI from 'openai';
import dotenv from 'dotenv';
dotenv.config({ path: '../.env' });
const modelApiKeys = {
'openai': {
apiKey: process.env.OPENAI_API_KEY,
models: ['gpt-4o', 'gpt-4o-mini', 'gpt-4']
},
'anthropic': {
apiKey: process.env.ANTHROPIC_API_KEY,
models: ['anthropic.claude-v2']
},
'groq': {
apiKey: process.env.GROQ_API_KEY,
models: ['groq-model-1', 'groq-model-2']
},
'gemini': {
apiKey: process.env.GEMINI_API_KEY,
models: ['gemini-model-1', 'gemini-model-2']
},
'perplexity': {
apiKey: process.env.PERPLEXITYAI_API_KEY,
models: ['perplexity/mixtral-8x7b-instruct', 'perplexity/llama-3-sonar-large-32k-online']
},
'cohere': {
apiKey: process.env.COHERE_API_KEY,
models: ['cohere-model-1', 'cohere-model-2']
},
// Add other models and their corresponding API keys here
};
const model = 'perplexity/llama-3-sonar-large-32k-online'; // Change this to switch between models
//const model = 'gpt-4o-mini'; // Change this to switch between models
let apiKey;
for (const { apiKey: key, models } of Object.values(modelApiKeys)) {
if (models.includes(model)) {
apiKey = key;
break;
}
}
if (!apiKey) {
throw new Error(`API key for model ${model} is not defined`);
}
const baseUrl = process.env.base_url || "https://open-assistant-ai.astra.datastax.com/v1";
async function main(apiKey, model) {
console.log(baseUrl);
const openai = new OpenAI({
base_url: baseUrl,
api_key: apiKey,
default_headers: {
"astra-api-token": process.env.ASTRA_DB_APPLICATION_TOKEN,
},
});
const stream = await openai.chat.completions.create({
model: model,
messages: [{ role: 'user', content: "Can you generate a list of 10 ice cream flavors?" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
}
main(apiKey, model);Metadata
Metadata
Assignees
Labels
No labels