forked from Chanzhaoyu/chatgpt-web
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
52bfd15
commit 4b16560
Showing
4 changed files
with
75 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,54 @@ | ||
import dotenv from 'dotenv' | ||
import { ChatGPTAPI } from 'chatgpt' | ||
|
||
interface ChatContext { | ||
conversationId?: string | ||
parentMessageId?: string | ||
} | ||
|
||
dotenv.config() | ||
|
||
const apiKey = '' | ||
const apiKey = process.env.OPENAI_API_KEY | ||
|
||
if (apiKey === undefined) | ||
throw new Error('OPENAI_API_KEY is not defined') | ||
|
||
const chatContext = new Set<ChatContext>() | ||
|
||
/** | ||
* More Info: https://github.com/transitive-bullshit/chatgpt-api | ||
*/ | ||
const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY || apiKey }) | ||
const api = new ChatGPTAPI({ apiKey }) | ||
|
||
async function chatReply(message: string) { | ||
if (!message) | ||
return | ||
return await api.sendMessage(message) | ||
|
||
// Get the last context from the chat context | ||
// If there is a last context, add it to the options | ||
let options = {} | ||
const lastContext = Array.from(chatContext).pop() | ||
if (lastContext) { | ||
const { conversationId, parentMessageId } = lastContext | ||
options = { conversationId, parentMessageId } | ||
} | ||
|
||
// Send the message to the API | ||
const response = await api.sendMessage(message, { ...options }) | ||
|
||
const { conversationId, id } = response | ||
|
||
// Add the new context to the chat context | ||
if (conversationId && id) | ||
chatContext.add({ conversationId, parentMessageId: id }) | ||
|
||
return response | ||
} | ||
|
||
async function clearChatContext() { | ||
// Clear the chat context | ||
chatContext.clear() | ||
return Promise.resolve({ message: 'Chat context cleared' }) | ||
} | ||
|
||
export { chatReply } | ||
export { chatReply, clearChatContext } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters