does your team do usability tests on the apis before launching them?
if you got 3-5 developers to try and use one of the sdks to build something, i bet you'd see common trends.
e.g. we recently had to update an assistant with new data everyday and get 1 response, and this is what the engineer came up with. probably it could be improved, but this is really ugly
```
const file = await openai.files.create({
file: fs.createReadStream(fileName),
purpose: 'assistants',
})
await openai.beta.assistants.update(assistantId, {
file_ids: [file.id],
})
const { id: threadId } = await openai.beta.threads.create({
messages: [
{
role: 'user',
content:
'Create PostSuggestions from the file. Remember to keep the style fun and engaging, not just regurgitating the headlines. Read the WHOLE article.',
},
],
})
const getSuggestions = async (runIdArg: string) => {
return new Promise<PostSuggestions>(resolve => {
const checkStatus = async () => {
const { status, last_error, required_action } = await openai.beta.threads.runs.retrieve(threadId, runIdArg)
console.log({ status })
if (status === 'requires_action') {
if (required_action?.type === 'submit_tool_outputs') {
required_action?.submit_tool_outputs?.tool_calls?.forEach(async toolOutput => {
const parsed = PostSuggestions.safeParse(JSON.parse(toolOutput.function.arguments))
if (parsed.success) {
await openai.beta.threads.runs.cancel(threadId, runIdArg)
resolve(parsed.data)
} else {
console.error(`failed to parse args from openai to my type (errors=${parsed.error.errors}`)
}
})
} else {
console.error(`requires_action, but not submit_tool_outputs (type=${required_action?.type})`)
}
} else if (status === 'completed') {
throw new Error(`status is completed, but no data. supposed to go to requires_action`)
} else if (status === 'failed') {
throw new Error(`message=${last_error?.message}, code=${last_error?.code}`)
} else {
setTimeout(checkStatus, 500)
}
}
checkStatus()
})
}
const { id: runId } = await openai.beta.threads.runs.create(threadId, {
assistant_id: assistantId,
})
console.time('openai create thread')
const newsSuggestions = await getSuggestions(runId)
console.timeEnd('openai create thread')
```