I had this workflow on pipedream that worked perfect but then it didn’t. I followed this tutorial on youtube: Video (The code heavy version)
This is the code that i have now.
import { Configuration, OpenAIApi } from "openai"
import { encode, decode } from "gpt-3-encoder"
export default defineComponent({
props: {
openai: {
type: "app",
app: "openai",
}
},
async run({steps, $}) {
// Import the transcript from the previous step
const transcript = steps.create_transcription.$return_value.transcription
// Set the max number of input tokens
const maxTokens = 2000
// Initialize OpenAI
const openAIkey = this.openai.$auth.api_key
const configuration = new Configuration({
apiKey: openAIkey,
});
const openai = new OpenAIApi(configuration);
// Split the transcript into shorter strings if needed, based on GPT token limit
function splitTranscript(encodedTranscript, maxTokens) {
const stringsArray = []
let currentIndex = 0
while (currentIndex < encodedTranscript.length) {
let endIndex = Math.min(currentIndex + maxTokens, encodedTranscript.length)
// Find the next period
while (endIndex < encodedTranscript.length && decode([encodedTranscript[endIndex]]) !== ".") {
endIndex++
}
// Include the period in the current string
if (endIndex < encodedTranscript.length) {
endIndex++
}
// Add the current chunk to the stringsArray
const chunk = encodedTranscript.slice(currentIndex, endIndex)
stringsArray.push(decode(chunk))
currentIndex = endIndex
}
return stringsArray
}
const encoded = encode(transcript)
const stringsArray = splitTranscript(encoded, maxTokens)
const result = await sendToChat(stringsArray)
return result
// Function to send transcript string(s) to Chat API
async function sendToChat (stringsArray) {
const resultsArray = []
for (let arr of stringsArray) {
// Define the prompt
const prompt = `Analyze the transcript provided below, then provide the following:
Key "title:" - add a title.
Key "summary" - create a summary.
Key "main_points" - add an array of the main points. Limit each item to 100 words, and limit the list to 10 items.
Key "action_items:" - add an array of action items. Limit each item to 100 words, and limit the list to 5 items.
Key "follow_up:" - add an array of follow-up questions. Limit each item to 100 words, and limit the list to 5 items.
Key "stories:" - add an array of an stories, examples, or cited works found in the transcript. Limit each item to 200 words, and limit the list to 5 items.
Key "arguments:" - add an array of potential arguments against the transcript. Limit each item to 100 words, and limit the list to 5 items.
Key "related_topics:" - add an array of topics related to the transcript. Limit each item to 100 words, and limit the list to 5 items.
Key "sentiment" - add a sentiment analysis
Ensure that the final element of any array within the JSON object is not followed by a comma.
Write all responses in Dutch.
Transcript:
${arr}`
let retries = 3
while (retries > 0) {
try {
const completion = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [{role: "user", content: prompt}, {role: "system", content: `You are an assistant that only speaks Dutch, formatted in Markdown. Do not write text that is not formatted as markdown. Do not write in any language other than Dutch.
Example formatting:
{
"title": "Notion Buttons",
"summary": "A collection of buttons for Notion",
"action_items": [
"item 1",
"item 2",
"item 3"
],
"follow_up": [
"item 1",
"item 2",
"item 3"
],
"arguments": [
"item 1",
"item 2",
"item 3"
],
"related_topics": [
"item 1",
"item 2",
"item 3"
]
"sentiment": "positive"
}
`}],
temperature: 0.2
});
resultsArray.push(completion)
break
} catch (error) {
if(error.response && error.response.status === 500) {
retries--
if (retries == 0) {
throw new Error("Failed to get a response from OpenAI Chat API after 3 attempts.")
}
console.log("OpenAI Chat API returned a 500 error. Retrying...")
} else {
throw error
}
}
}
}
return resultsArray
}
},
})
That code now gives back an error like this:
Error: SyntaxError: The requested module 'openai' does not provide an export named 'Configuration'
at handleError (/var/task/common.js:38:40)
at Runner.runUserCode (file:///var/task/lambda_handler.mjs:866:9)
at async Runner.run (file:///var/task/lambda_handler.mjs:697:5)
at async Runtime.handler (file:///var/task/lambda_handler.mjs:914:22)
I tried to change it according to these instructions: github
but I just can’t seem to be able to fix it ( since my coding skills are nonexistent).
I would apreciate some help.
I tried these instructions: github
2
Answers
The GitHub you linked descibes how to migrate to v4 of the openai API you are using. From my understanding the change that concerns you here is, that the way to create the
openai
instance changed fromto
Changing these lines should solve your issues, if the rest of the code works.
I got the same problem. It has worked for me for the last months, but not now. This was the script I was using: