diff --git a/chat_completion.yaml b/chat_completion.yaml new file mode 100644 index 000000000..f2e69007a --- /dev/null +++ b/chat_completion.yaml @@ -0,0 +1,157 @@ +openapi: 3.0.0 +info: + title: Single Inference API (chat_completion) + version: 0.0.1 +components: + schemas: + Tool: + type: object + description: A tool that can be used by an agent to perform specific tasks. + properties: + name: + type: string + description: The name of the tool. + description: + type: string + description: A brief description of what the tool does and how it should be used. + parameters: + type: array + items: + $ref: '#/components/schemas/ToolParameter' + returnValue: + $ref: '#/components/schemas/ToolReturnValue' + ToolParameter: + type: object + properties: + type: + type: string + enum: [string, int, float, list, bool] + description: The data type of the parameter. + itemType: + type: string + description: The type of items in the parameter if it is a list. + description: + type: string + description: Details about what the parameter is used for and any constraints. + ToolReturnValue: + type: object + properties: + type: + type: string + enum: [string, int, float, list, bool] + description: The data type of the return value. + itemType: + type: string + description: The type of items in the return value if it is a list. + description: + type: string + description: Details about the significance of the return value. + Attachment: + type: object + properties: + uri: + type: string + description: URI of the attachment. + mime-type: + type: string + description: MIME type of the attachment. + Message: + type: object + properties: + role: + type: string + description: Role of the entity in the message. + text: + type: string + description: Text content of the message. + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + Completion: + type: object + properties: + id: + type: string + description: Unique identifier for the completion. + role: + type: string + description: Role of the entity generating the completion. + text: + type: string + description: Text content of the completion. + attachments: + type: array + items: + $ref: '#/components/schemas/Attachment' + tokens: + type: array + items: + type: integer + logprobs: + type: array + items: + type: number + finish_reason: + type: string + description: Reason for completion termination. + # TODO: Add `tool_choice` -- + # for eg. "auto": use model's guess, how to force to use particular tool, how to disbale inbuilt tools +paths: + /chat_completion/: + post: + summary: Submit a chat completion request + description: Submit a chat completion request + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + messages: + type: array + items: + $ref: '#/components/schemas/Message' + model: + type: string + description: Model identifier + logprobs: + type: boolean + description: Whether to include log probabilities in the output + max_tokens: + type: integer + description: Maximum number of tokens to generate + n_completions: + type: integer + description: Number of completions to generate + temperature: + type: number + format: float + description: Temperature setting for the generation + top_p: + type: number + format: float + description: Top p setting for the generation + tools: + type: array + items: + $ref: '#/components/schemas/Tool' + responses: + '200': + description: Chat completion request processed successfully + content: + application/json: + schema: + type: object + properties: + id: + type: string + description: Unique identifier for the completion request + completions: + type: array + items: + $ref: '#/components/schemas/Completion' + model: + type: string + description: Model used for generating completions