Skip to content

Commit

Permalink
feat: add typings for the ChatGPT API
Browse files Browse the repository at this point in the history
Signed-off-by: Elijah Conners <[email protected]>
  • Loading branch information
ElijahPepe committed Dec 3, 2022
1 parent 9b97a1a commit 226b7d2
Show file tree
Hide file tree
Showing 2 changed files with 245 additions and 0 deletions.
244 changes: 244 additions & 0 deletions src/chatgpt-api-types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
/**
* https://chat.openapi.com/api/auth/session
*/
export type SessionResult = {
/**
* Object of the current user
*/
user: APIUser

/**
* ISO date of the expiration date of the access token
*/
expires: string

/**
* The access token
*/
accessToken: string
}

export type APIUser = {
/**
* ID of the user
*/
id: string

/**
* Name of the user
*/
name: string

/**
* Email of the user
*/
email: string

/**
* Image of the user
*/
image: string

/**
* Picture of the user
*/
picture: string

/**
* Groups the user is in
*/
groups: string[] | []

/**
* Features the user is in
*/
features: string[] | []
}

/**
* https://chat.openapi.com/backend-api/models
*/
export type ModelsResult = {
/**
* Array of models
*/
models: APIModel[]
}

export type APIModel = {
/**
* Name of the model
*/
slug: string

/**
* Max tokens of the model
*/
max_tokens: number

/**
* Whether or not the model is special
*/
is_special: boolean
}

/**
* https://chat.openapi.com/backend-api/moderations
*/
export type ModerationsJSONBody = {
/**
* Input for the moderation decision
*/
input: string

/**
* The model to use in the decision
*/
model: AvailableModerationModels
}

export type AvailableModerationModels = 'text-moderation-playground'

/**
* https://chat.openapi.com/backend-api/moderations
*/
export type ModerationsJSONResult = {
/**
* Whether or not the input is flagged
*/
flagged: boolean

/**
* Whether or not the input is blocked
*/
blocked: boolean

/**
* The ID of the decision
*/
moderation_id: string
}

/**
* https://chat.openapi.com/backend-api/conversation
*/
export type ConversationJSONBody = {
/**
* The action to take
*/
action: string

/**
* The ID of the conversation
*/
conversation_id?: string

/**
* Prompts to provide
*/
messages: APIPrompt[]

/**
* The model to use
*/
model: string

/**
* The parent message ID
*/
parent_message_id: string
}

export type APIPrompt = {
/**
* The content of the prompt
*/
content: APIPromptContent

/**
* The ID of the prompt
*/
id: string

/**
* The role played in the prompt
*/
role: APIPromptRole
}

export type APIPromptContent = {
/**
* The content type of the prompt
*/
content_type: APIPromptContentType

/**
* The parts to the prompt
*/
parts: string[]
}

export type APIPromptContentType = 'text'

export type APIPromptRole = 'user'

/**
* https://chat.openapi.com/backend-api/conversation/message_feedback
*/
export type MessageFeedbackJSONBody = {
/**
* The ID of the conversation
*/
conversation_id: string

/**
* The message ID
*/
message_id: string

/**
* The rating
*/
rating: APIMessageFeedbackRating

/**
* Tags to give the rating
*/
tags?: APIMessageFeedbackTags[]

/**
* The text to include
*/
text?: string
}

export type APIMessageFeedbackTags = 'harmful' | 'false' | 'not-helpful'

export type MessageFeedbackResult = {
/**
* The message ID
*/
message_id: string

/**
* The ID of the conversation
*/
conversation_id: string

/**
* The ID of the user
*/
user_id: string

/**
* The rating
*/
rating: APIMessageFeedbackRating

/**
* The text the server received, including tags
*/
text?: string
}

export type APIMessageFeedbackRating = 'thumbsUp' | 'thumbsDown'
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * from './chatgpt-api'
export * from './chatgpt-api-types'

0 comments on commit 226b7d2

Please sign in to comment.