From 4f021de10fe2ab09d283d41dd6c4706ca5b93460 Mon Sep 17 00:00:00 2001 From: Xi Yan Date: Mon, 9 Sep 2024 13:09:47 -0700 Subject: [PATCH] API spec update, client demo with Stainless SDK (#58) * [wip] client w/ stainless sdk * update generator & yaml spec * update wrapper request * update script * agentic system client sdk * add comment todos * remove client sdk examples --- .../llama-stack-spec.html | 431 ++++++++++++++++-- .../llama-stack-spec.yaml | 306 +++++++++++-- rfcs/openapi_generator/pyopenapi/generator.py | 8 +- 3 files changed, 678 insertions(+), 67 deletions(-) diff --git a/rfcs/RFC-0001-llama-stack-assets/llama-stack-spec.html b/rfcs/RFC-0001-llama-stack-assets/llama-stack-spec.html index 38efd4ca3..a05dc34fa 100644 --- a/rfcs/RFC-0001-llama-stack-assets/llama-stack-spec.html +++ b/rfcs/RFC-0001-llama-stack-assets/llama-stack-spec.html @@ -21,7 +21,7 @@ "info": { "title": "[DRAFT] Llama Stack Specification", "version": "0.0.1", - "description": "This is the specification of the llama stack that provides\n a set of endpoints and their corresponding interfaces that are tailored to\n best leverage Llama Models. The specification is still in draft and subject to change.\n Generated at 2024-09-07 15:23:29.488676" + "description": "This is the specification of the llama stack that provides\n a set of endpoints and their corresponding interfaces that are tailored to\n best leverage Llama Models. The specification is still in draft and subject to change.\n Generated at 2024-09-09 11:19:39.855375" }, "servers": [ { @@ -51,7 +51,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BatchChatCompletionRequest" + "$ref": "#/components/schemas/BatchChatCompletionRequestWrapper" } } }, @@ -81,7 +81,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BatchCompletionRequest" + "$ref": "#/components/schemas/BatchCompletionRequestWrapper" } } }, @@ -157,7 +157,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatCompletionRequest" + "$ref": "#/components/schemas/ChatCompletionRequestWrapper" } } }, @@ -187,7 +187,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CompletionRequest" + "$ref": "#/components/schemas/CompletionRequestWrapper" } } }, @@ -277,7 +277,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AgenticSystemTurnCreateRequest" + "$ref": "#/components/schemas/AgenticSystemTurnCreateRequestWrapper" } } }, @@ -300,7 +300,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateDatasetRequest" + "$ref": "#/components/schemas/CreateDatasetRequestWrapper" } } }, @@ -330,7 +330,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateExperimentRequest" + "$ref": "#/components/schemas/CreateExperimentRequestWrapper" } } }, @@ -390,7 +390,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateRunRequest" + "$ref": "#/components/schemas/CreateRunRequestWrapper" } } }, @@ -572,7 +572,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvaluateQuestionAnsweringRequest" + "$ref": "#/components/schemas/EvaluateQuestionAnsweringRequestWrapper" } } }, @@ -602,7 +602,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvaluateSummarizationRequest" + "$ref": "#/components/schemas/EvaluateSummarizationRequestWrapper" } } }, @@ -632,7 +632,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvaluateTextGenerationRequest" + "$ref": "#/components/schemas/EvaluateTextGenerationRequestWrapper" } } }, @@ -1024,7 +1024,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LogSearchRequest" + "$ref": "#/components/schemas/LogSearchRequestWrapper" } } }, @@ -1312,7 +1312,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LogMessagesRequest" + "$ref": "#/components/schemas/LogMessagesRequestWrapper" } } }, @@ -1335,7 +1335,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LogMetricsRequest" + "$ref": "#/components/schemas/LogMetricsRequestWrapper" } } }, @@ -1365,7 +1365,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PostTrainingRLHFRequest" + "$ref": "#/components/schemas/PostTrainingRLHFRequestWrapper" } } }, @@ -1425,7 +1425,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RewardScoringRequest" + "$ref": "#/components/schemas/RewardScoringRequestWrapper" } } }, @@ -1455,7 +1455,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PostTrainingSFTRequest" + "$ref": "#/components/schemas/PostTrainingSFTRequestWrapper" } } }, @@ -1485,7 +1485,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SyntheticDataGenerationRequest" + "$ref": "#/components/schemas/SyntheticDataGenerationRequestWrapper" } } }, @@ -1538,7 +1538,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateExperimentRequest" + "$ref": "#/components/schemas/UpdateExperimentRequestWrapper" } } }, @@ -1568,7 +1568,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateRunRequest" + "$ref": "#/components/schemas/UpdateRunRequestWrapper" } } }, @@ -1598,7 +1598,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UploadArtifactRequest" + "$ref": "#/components/schemas/UploadArtifactRequestWrapper" } } }, @@ -2020,6 +2020,18 @@ "content" ] }, + "BatchChatCompletionRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/BatchChatCompletionRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "BatchChatCompletionResponse": { "type": "object", "properties": { @@ -2076,6 +2088,18 @@ "content_batch" ] }, + "BatchCompletionRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/BatchCompletionRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "BatchCompletionResponse": { "type": "object", "properties": { @@ -2174,6 +2198,18 @@ "messages" ] }, + "ChatCompletionRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/ChatCompletionRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "ChatCompletionResponseEvent": { "type": "object", "properties": { @@ -2316,6 +2352,18 @@ "content" ] }, + "CompletionRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/CompletionRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "CompletionResponseStreamChunk": { "type": "object", "properties": { @@ -3181,6 +3229,18 @@ "mime_type" ] }, + "AgenticSystemTurnCreateRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/AgenticSystemTurnCreateRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "AgenticSystemTurnResponseEvent": { "type": "object", "properties": { @@ -3752,6 +3812,18 @@ "json" ] }, + "CreateDatasetRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/CreateDatasetRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "CreateExperimentRequest": { "type": "object", "properties": { @@ -3789,6 +3861,18 @@ "name" ] }, + "CreateExperimentRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/CreateExperimentRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "Experiment": { "type": "object", "properties": { @@ -4061,6 +4145,18 @@ "experiment_id" ] }, + "CreateRunRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/CreateRunRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "Run": { "type": "object", "properties": { @@ -4273,6 +4369,18 @@ ], "title": "Request to evaluate question answering." }, + "EvaluateQuestionAnsweringRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/EvaluateQuestionAnsweringRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "EvaluationJob": { "type": "object", "properties": { @@ -4321,6 +4429,18 @@ ], "title": "Request to evaluate summarization." }, + "EvaluateSummarizationRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/EvaluateSummarizationRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "EvaluateTextGenerationRequest": { "type": "object", "properties": { @@ -4358,6 +4478,18 @@ ], "title": "Request to evaluate text generation." }, + "EvaluateTextGenerationRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/EvaluateTextGenerationRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "GetAgenticSystemSessionRequest": { "type": "object", "properties": { @@ -4643,6 +4775,18 @@ "query" ] }, + "LogSearchRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/LogSearchRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "Log": { "type": "object", "properties": { @@ -4902,6 +5046,18 @@ "logs" ] }, + "LogMessagesRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/LogMessagesRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "LogMetricsRequest": { "type": "object", "properties": { @@ -4921,6 +5077,18 @@ "metrics" ] }, + "LogMetricsRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/LogMetricsRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "DPOAlignmentConfig": { "type": "object", "properties": { @@ -5109,6 +5277,18 @@ "fsdp_cpu_offload" ] }, + "PostTrainingRLHFRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/PostTrainingRLHFRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "QueryDocumentsRequest": { "type": "object", "properties": { @@ -5277,6 +5457,18 @@ ], "title": "Request to score a reward function. A list of prompts and a list of responses per prompt." }, + "RewardScoringRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/RewardScoringRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "RewardScoringResponse": { "type": "object", "properties": { @@ -5562,6 +5754,18 @@ "alpha" ] }, + "PostTrainingSFTRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/PostTrainingSFTRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "SyntheticDataGenerationRequest": { "type": "object", "properties": { @@ -5607,6 +5811,18 @@ ], "title": "Request to generate synthetic data. A small batch of prompts and a filtering function" }, + "SyntheticDataGenerationRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/SyntheticDataGenerationRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "SyntheticDataGenerationResponse": { "type": "object", "properties": { @@ -5707,6 +5923,18 @@ "experiment_id" ] }, + "UpdateExperimentRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/UpdateExperimentRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "UpdateRunRequest": { "type": "object", "properties": { @@ -5751,6 +5979,18 @@ "run_id" ] }, + "UpdateRunRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/UpdateRunRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] + }, "UploadArtifactRequest": { "type": "object", "properties": { @@ -5800,6 +6040,18 @@ "artifact_type", "content" ] + }, + "UploadArtifactRequestWrapper": { + "type": "object", + "properties": { + "request": { + "$ref": "#/components/schemas/UploadArtifactRequest" + } + }, + "additionalProperties": false, + "required": [ + "request" + ] } }, "responses": {} @@ -5810,36 +6062,36 @@ } ], "tags": [ - { - "name": "Telemetry" - }, - { - "name": "Evaluations" - }, - { - "name": "AgenticSystem" - }, { "name": "Inference" }, - { - "name": "BatchInference" - }, - { - "name": "PostTraining" - }, { "name": "Datasets" }, + { + "name": "Evaluations" + }, { "name": "Memory" }, { "name": "SyntheticDataGeneration" }, + { + "name": "PostTraining" + }, { "name": "RewardScoring" }, + { + "name": "BatchInference" + }, + { + "name": "Telemetry" + }, + { + "name": "AgenticSystem" + }, { "name": "BatchChatCompletionRequest", "description": "" @@ -5896,6 +6148,10 @@ "name": "UserMessage", "description": "" }, + { + "name": "BatchChatCompletionRequestWrapper", + "description": "" + }, { "name": "BatchChatCompletionResponse", "description": "" @@ -5904,6 +6160,10 @@ "name": "BatchCompletionRequest", "description": "" }, + { + "name": "BatchCompletionRequestWrapper", + "description": "" + }, { "name": "BatchCompletionResponse", "description": "" @@ -5920,6 +6180,10 @@ "name": "ChatCompletionRequest", "description": "" }, + { + "name": "ChatCompletionRequestWrapper", + "description": "" + }, { "name": "ChatCompletionResponseEvent", "description": "Chat completion response event.\n\n" @@ -5948,6 +6212,10 @@ "name": "CompletionRequest", "description": "" }, + { + "name": "CompletionRequestWrapper", + "description": "" + }, { "name": "CompletionResponseStreamChunk", "description": "streamed completion response.\n\n" @@ -6024,6 +6292,10 @@ "name": "Attachment", "description": "" }, + { + "name": "AgenticSystemTurnCreateRequestWrapper", + "description": "" + }, { "name": "AgenticSystemTurnResponseEvent", "description": "Streamed agent execution response.\n\n" @@ -6092,10 +6364,18 @@ "name": "TrainEvalDatasetColumnType", "description": "" }, + { + "name": "CreateDatasetRequestWrapper", + "description": "" + }, { "name": "CreateExperimentRequest", "description": "" }, + { + "name": "CreateExperimentRequestWrapper", + "description": "" + }, { "name": "Experiment", "description": "" @@ -6116,6 +6396,10 @@ "name": "CreateRunRequest", "description": "" }, + { + "name": "CreateRunRequestWrapper", + "description": "" + }, { "name": "Run", "description": "" @@ -6156,6 +6440,10 @@ "name": "EvaluateQuestionAnsweringRequest", "description": "Request to evaluate question answering.\n\n" }, + { + "name": "EvaluateQuestionAnsweringRequestWrapper", + "description": "" + }, { "name": "EvaluationJob", "description": "" @@ -6164,10 +6452,18 @@ "name": "EvaluateSummarizationRequest", "description": "Request to evaluate summarization.\n\n" }, + { + "name": "EvaluateSummarizationRequestWrapper", + "description": "" + }, { "name": "EvaluateTextGenerationRequest", "description": "Request to evaluate text generation.\n\n" }, + { + "name": "EvaluateTextGenerationRequestWrapper", + "description": "" + }, { "name": "GetAgenticSystemSessionRequest", "description": "" @@ -6212,6 +6508,10 @@ "name": "LogSearchRequest", "description": "" }, + { + "name": "LogSearchRequestWrapper", + "description": "" + }, { "name": "Log", "description": "" @@ -6252,10 +6552,18 @@ "name": "LogMessagesRequest", "description": "" }, + { + "name": "LogMessagesRequestWrapper", + "description": "" + }, { "name": "LogMetricsRequest", "description": "" }, + { + "name": "LogMetricsRequestWrapper", + "description": "" + }, { "name": "DPOAlignmentConfig", "description": "" @@ -6276,6 +6584,10 @@ "name": "TrainingConfig", "description": "" }, + { + "name": "PostTrainingRLHFRequestWrapper", + "description": "" + }, { "name": "QueryDocumentsRequest", "description": "" @@ -6292,6 +6604,10 @@ "name": "RewardScoringRequest", "description": "Request to score a reward function. A list of prompts and a list of responses per prompt.\n\n" }, + { + "name": "RewardScoringRequestWrapper", + "description": "" + }, { "name": "RewardScoringResponse", "description": "Response from the reward scoring. Batch of (prompt, response, score) tuples that pass the threshold.\n\n" @@ -6324,10 +6640,18 @@ "name": "QLoraFinetuningConfig", "description": "" }, + { + "name": "PostTrainingSFTRequestWrapper", + "description": "" + }, { "name": "SyntheticDataGenerationRequest", "description": "Request to generate synthetic data. A small batch of prompts and a filtering function\n\n" }, + { + "name": "SyntheticDataGenerationRequestWrapper", + "description": "" + }, { "name": "SyntheticDataGenerationResponse", "description": "Response from the synthetic data generation. Batch of (prompt, response, score) tuples that pass the threshold.\n\n" @@ -6340,13 +6664,25 @@ "name": "UpdateExperimentRequest", "description": "" }, + { + "name": "UpdateExperimentRequestWrapper", + "description": "" + }, { "name": "UpdateRunRequest", "description": "" }, + { + "name": "UpdateRunRequestWrapper", + "description": "" + }, { "name": "UploadArtifactRequest", "description": "" + }, + { + "name": "UploadArtifactRequestWrapper", + "description": "" } ], "x-tagGroups": [ @@ -6373,6 +6709,7 @@ "AgenticSystemSessionCreateResponse", "AgenticSystemStepResponse", "AgenticSystemTurnCreateRequest", + "AgenticSystemTurnCreateRequestWrapper", "AgenticSystemTurnResponseEvent", "AgenticSystemTurnResponseStepCompletePayload", "AgenticSystemTurnResponseStepProgressPayload", @@ -6384,8 +6721,10 @@ "ArtifactType", "Attachment", "BatchChatCompletionRequest", + "BatchChatCompletionRequestWrapper", "BatchChatCompletionResponse", "BatchCompletionRequest", + "BatchCompletionRequestWrapper", "BatchCompletionResponse", "BraveSearchToolDefinition", "BuiltinShield", @@ -6393,6 +6732,7 @@ "CancelEvaluationJobRequest", "CancelTrainingJobRequest", "ChatCompletionRequest", + "ChatCompletionRequestWrapper", "ChatCompletionResponseEvent", "ChatCompletionResponseEventType", "ChatCompletionResponseStreamChunk", @@ -6400,13 +6740,17 @@ "CodeInterpreterToolDefinition", "CompletionMessage", "CompletionRequest", + "CompletionRequestWrapper", "CompletionResponseStreamChunk", "CreateAgenticSystemRequest", "CreateAgenticSystemSessionRequest", "CreateDatasetRequest", + "CreateDatasetRequestWrapper", "CreateExperimentRequest", + "CreateExperimentRequestWrapper", "CreateMemoryBankRequest", "CreateRunRequest", + "CreateRunRequestWrapper", "DPOAlignmentConfig", "DeleteAgenticSystemRequest", "DeleteAgenticSystemSessionRequest", @@ -6418,8 +6762,11 @@ "EmbeddingsRequest", "EmbeddingsResponse", "EvaluateQuestionAnsweringRequest", + "EvaluateQuestionAnsweringRequestWrapper", "EvaluateSummarizationRequest", + "EvaluateSummarizationRequestWrapper", "EvaluateTextGenerationRequest", + "EvaluateTextGenerationRequestWrapper", "EvaluationJob", "EvaluationJobArtifactsResponse", "EvaluationJobLogStream", @@ -6435,8 +6782,11 @@ "ListArtifactsRequest", "Log", "LogMessagesRequest", + "LogMessagesRequestWrapper", "LogMetricsRequest", + "LogMetricsRequestWrapper", "LogSearchRequest", + "LogSearchRequestWrapper", "LoraFinetuningConfig", "MemoryBank", "MemoryBankDocument", @@ -6451,7 +6801,9 @@ "PostTrainingJobStatus", "PostTrainingJobStatusResponse", "PostTrainingRLHFRequest", + "PostTrainingRLHFRequestWrapper", "PostTrainingSFTRequest", + "PostTrainingSFTRequestWrapper", "QLoraFinetuningConfig", "QueryDocumentsRequest", "QueryDocumentsResponse", @@ -6459,6 +6811,7 @@ "RestAPIExecutionConfig", "RestAPIMethod", "RewardScoringRequest", + "RewardScoringRequestWrapper", "RewardScoringResponse", "Run", "SamplingParams", @@ -6471,6 +6824,7 @@ "ShieldResponse", "StopReason", "SyntheticDataGenerationRequest", + "SyntheticDataGenerationRequestWrapper", "SyntheticDataGenerationResponse", "SystemMessage", "TokenLogProbs", @@ -6491,8 +6845,11 @@ "URL", "UpdateDocumentsRequest", "UpdateExperimentRequest", + "UpdateExperimentRequestWrapper", "UpdateRunRequest", + "UpdateRunRequestWrapper", "UploadArtifactRequest", + "UploadArtifactRequestWrapper", "UserMessage", "WolframAlphaToolDefinition" ] diff --git a/rfcs/RFC-0001-llama-stack-assets/llama-stack-spec.yaml b/rfcs/RFC-0001-llama-stack-assets/llama-stack-spec.yaml index 11f092549..cfd01b291 100644 --- a/rfcs/RFC-0001-llama-stack-assets/llama-stack-spec.yaml +++ b/rfcs/RFC-0001-llama-stack-assets/llama-stack-spec.yaml @@ -346,6 +346,14 @@ components: - session_id - messages type: object + AgenticSystemTurnCreateRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/AgenticSystemTurnCreateRequest' + required: + - request + type: object AgenticSystemTurnResponseEvent: additionalProperties: false properties: @@ -566,6 +574,14 @@ components: - model - messages_batch type: object + BatchChatCompletionRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/BatchChatCompletionRequest' + required: + - request + type: object BatchChatCompletionResponse: additionalProperties: false properties: @@ -601,6 +617,14 @@ components: - model - content_batch type: object + BatchCompletionRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/BatchCompletionRequest' + required: + - request + type: object BatchCompletionResponse: additionalProperties: false properties: @@ -696,6 +720,14 @@ components: - model - messages type: object + ChatCompletionRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/ChatCompletionRequest' + required: + - request + type: object ChatCompletionResponseEvent: additionalProperties: false properties: @@ -804,6 +836,14 @@ components: - model - content type: object + CompletionRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/CompletionRequest' + required: + - request + type: object CompletionResponseStreamChunk: additionalProperties: false properties: @@ -850,6 +890,14 @@ components: - dataset title: Request to create a dataset. type: object + CreateDatasetRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/CreateDatasetRequest' + required: + - request + type: object CreateExperimentRequest: additionalProperties: false properties: @@ -868,6 +916,14 @@ components: required: - name type: object + CreateExperimentRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/CreateExperimentRequest' + required: + - request + type: object CreateMemoryBankRequest: additionalProperties: false properties: @@ -939,6 +995,14 @@ components: required: - experiment_id type: object + CreateRunRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/CreateRunRequest' + required: + - request + type: object DPOAlignmentConfig: additionalProperties: false properties: @@ -1104,6 +1168,14 @@ components: - metrics title: Request to evaluate question answering. type: object + EvaluateQuestionAnsweringRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/EvaluateQuestionAnsweringRequest' + required: + - request + type: object EvaluateSummarizationRequest: additionalProperties: false properties: @@ -1130,6 +1202,14 @@ components: - metrics title: Request to evaluate summarization. type: object + EvaluateSummarizationRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/EvaluateSummarizationRequest' + required: + - request + type: object EvaluateTextGenerationRequest: additionalProperties: false properties: @@ -1157,6 +1237,14 @@ components: - metrics title: Request to evaluate text generation. type: object + EvaluateTextGenerationRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/EvaluateTextGenerationRequest' + required: + - request + type: object EvaluationJob: additionalProperties: false properties: @@ -1370,6 +1458,14 @@ components: required: - logs type: object + LogMessagesRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/LogMessagesRequest' + required: + - request + type: object LogMetricsRequest: additionalProperties: false properties: @@ -1383,6 +1479,14 @@ components: - run_id - metrics type: object + LogMetricsRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/LogMetricsRequest' + required: + - request + type: object LogSearchRequest: additionalProperties: false properties: @@ -1401,6 +1505,14 @@ components: required: - query type: object + LogSearchRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/LogSearchRequest' + required: + - request + type: object LoraFinetuningConfig: additionalProperties: false properties: @@ -1741,6 +1853,14 @@ components: - logger_config title: Request to finetune a model. type: object + PostTrainingRLHFRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/PostTrainingRLHFRequest' + required: + - request + type: object PostTrainingSFTRequest: additionalProperties: false properties: @@ -1796,6 +1916,14 @@ components: - logger_config title: Request to finetune a model. type: object + PostTrainingSFTRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/PostTrainingSFTRequest' + required: + - request + type: object QLoraFinetuningConfig: additionalProperties: false properties: @@ -1923,6 +2051,14 @@ components: title: Request to score a reward function. A list of prompts and a list of responses per prompt. type: object + RewardScoringRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/RewardScoringRequest' + required: + - request + type: object RewardScoringResponse: additionalProperties: false properties: @@ -2145,6 +2281,14 @@ components: title: Request to generate synthetic data. A small batch of prompts and a filtering function type: object + SyntheticDataGenerationRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/SyntheticDataGenerationRequest' + required: + - request + type: object SyntheticDataGenerationResponse: additionalProperties: false properties: @@ -2513,6 +2657,14 @@ components: required: - experiment_id type: object + UpdateExperimentRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/UpdateExperimentRequest' + required: + - request + type: object UpdateRunRequest: additionalProperties: false properties: @@ -2536,6 +2688,14 @@ components: required: - run_id type: object + UpdateRunRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/UpdateRunRequest' + required: + - request + type: object UploadArtifactRequest: additionalProperties: false properties: @@ -2564,6 +2724,14 @@ components: - artifact_type - content type: object + UploadArtifactRequestWrapper: + additionalProperties: false + properties: + request: + $ref: '#/components/schemas/UploadArtifactRequest' + required: + - request + type: object UserMessage: additionalProperties: false properties: @@ -2609,7 +2777,7 @@ info: description: "This is the specification of the llama stack that provides\n \ \ a set of endpoints and their corresponding interfaces that are tailored\ \ to\n best leverage Llama Models. The specification is still in\ - \ draft and subject to change.\n Generated at 2024-09-07 15:23:29.488676" + \ draft and subject to change.\n Generated at 2024-09-09 11:19:39.855375" title: '[DRAFT] Llama Stack Specification' version: 0.0.1 jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema @@ -2741,7 +2909,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AgenticSystemTurnCreateRequest' + $ref: '#/components/schemas/AgenticSystemTurnCreateRequestWrapper' required: true responses: '200': @@ -2798,7 +2966,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/BatchChatCompletionRequest' + $ref: '#/components/schemas/BatchChatCompletionRequestWrapper' required: true responses: '200': @@ -2816,7 +2984,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/BatchCompletionRequest' + $ref: '#/components/schemas/BatchCompletionRequestWrapper' required: true responses: '200': @@ -2834,7 +3002,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateDatasetRequest' + $ref: '#/components/schemas/CreateDatasetRequestWrapper' required: true responses: '200': @@ -2956,7 +3124,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/EvaluateQuestionAnsweringRequest' + $ref: '#/components/schemas/EvaluateQuestionAnsweringRequestWrapper' required: true responses: '200': @@ -2974,7 +3142,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/EvaluateSummarizationRequest' + $ref: '#/components/schemas/EvaluateSummarizationRequestWrapper' required: true responses: '200': @@ -2992,7 +3160,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/EvaluateTextGenerationRequest' + $ref: '#/components/schemas/EvaluateTextGenerationRequestWrapper' required: true responses: '200': @@ -3028,7 +3196,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UploadArtifactRequest' + $ref: '#/components/schemas/UploadArtifactRequestWrapper' required: true responses: '200': @@ -3046,7 +3214,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateExperimentRequest' + $ref: '#/components/schemas/CreateExperimentRequestWrapper' required: true responses: '200': @@ -3064,7 +3232,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateRunRequest' + $ref: '#/components/schemas/CreateRunRequestWrapper' required: true responses: '200': @@ -3111,7 +3279,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateExperimentRequest' + $ref: '#/components/schemas/UpdateExperimentRequestWrapper' required: true responses: '200': @@ -3129,7 +3297,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ChatCompletionRequest' + $ref: '#/components/schemas/ChatCompletionRequestWrapper' required: true responses: '200': @@ -3147,7 +3315,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CompletionRequest' + $ref: '#/components/schemas/CompletionRequestWrapper' required: true responses: '200': @@ -3183,7 +3351,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LogSearchRequest' + $ref: '#/components/schemas/LogSearchRequestWrapper' required: true responses: '200': @@ -3201,7 +3369,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LogMessagesRequest' + $ref: '#/components/schemas/LogMessagesRequestWrapper' required: true responses: '200': @@ -3442,7 +3610,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PostTrainingRLHFRequest' + $ref: '#/components/schemas/PostTrainingRLHFRequestWrapper' required: true responses: '200': @@ -3460,7 +3628,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PostTrainingSFTRequest' + $ref: '#/components/schemas/PostTrainingSFTRequestWrapper' required: true responses: '200': @@ -3478,7 +3646,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RewardScoringRequest' + $ref: '#/components/schemas/RewardScoringRequestWrapper' required: true responses: '200': @@ -3496,7 +3664,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LogMetricsRequest' + $ref: '#/components/schemas/LogMetricsRequestWrapper' required: true responses: '200': @@ -3527,7 +3695,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateRunRequest' + $ref: '#/components/schemas/UpdateRunRequestWrapper' required: true responses: '200': @@ -3545,7 +3713,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SyntheticDataGenerationRequest' + $ref: '#/components/schemas/SyntheticDataGenerationRequestWrapper' required: true responses: '200': @@ -3561,16 +3729,16 @@ security: servers: - url: http://any-hosted-llama-stack.com tags: -- name: Telemetry -- name: Evaluations -- name: AgenticSystem - name: Inference -- name: BatchInference -- name: PostTraining - name: Datasets +- name: Evaluations - name: Memory - name: SyntheticDataGeneration +- name: PostTraining - name: RewardScoring +- name: BatchInference +- name: Telemetry +- name: AgenticSystem - description: name: BatchChatCompletionRequest @@ -3613,12 +3781,18 @@ tags: name: ToolResponseMessage - description: name: UserMessage +- description: + name: BatchChatCompletionRequestWrapper - description: name: BatchChatCompletionResponse - description: name: BatchCompletionRequest +- description: + name: BatchCompletionRequestWrapper - description: name: BatchCompletionResponse @@ -3631,6 +3805,9 @@ tags: - description: name: ChatCompletionRequest +- description: + name: ChatCompletionRequestWrapper - description: 'Chat completion response event. @@ -3656,6 +3833,9 @@ tags: - description: name: CompletionRequest +- description: + name: CompletionRequestWrapper - description: 'streamed completion response. @@ -3711,6 +3891,9 @@ tags: name: AgenticSystemTurnCreateRequest - description: name: Attachment +- description: + name: AgenticSystemTurnCreateRequestWrapper - description: 'Streamed agent execution response. @@ -3767,9 +3950,15 @@ tags: - description: name: TrainEvalDatasetColumnType +- description: + name: CreateDatasetRequestWrapper - description: name: CreateExperimentRequest +- description: + name: CreateExperimentRequestWrapper - description: name: Experiment - description: name: CreateRunRequest +- description: + name: CreateRunRequestWrapper - description: name: Run - description: ' name: EvaluateQuestionAnsweringRequest +- description: + name: EvaluateQuestionAnsweringRequestWrapper - description: name: EvaluationJob - description: 'Request to evaluate summarization. @@ -3825,12 +4020,18 @@ tags: ' name: EvaluateSummarizationRequest +- description: + name: EvaluateSummarizationRequestWrapper - description: 'Request to evaluate text generation. ' name: EvaluateTextGenerationRequest +- description: + name: EvaluateTextGenerationRequestWrapper - description: name: GetAgenticSystemSessionRequest @@ -3867,6 +4068,9 @@ tags: - description: name: LogSearchRequest +- description: + name: LogSearchRequestWrapper - description: name: Log - description: @@ -3903,9 +4107,15 @@ tags: - description: name: LogMessagesRequest +- description: + name: LogMessagesRequestWrapper - description: name: LogMetricsRequest +- description: + name: LogMetricsRequestWrapper - description: name: DPOAlignmentConfig @@ -3921,6 +4131,9 @@ tags: name: RLHFAlgorithm - description: name: TrainingConfig +- description: + name: PostTrainingRLHFRequestWrapper - description: name: QueryDocumentsRequest @@ -3936,6 +4149,9 @@ tags: ' name: RewardScoringRequest +- description: + name: RewardScoringRequestWrapper - description: 'Response from the reward scoring. Batch of (prompt, response, score) tuples that pass the threshold. @@ -3964,6 +4180,9 @@ tags: - description: name: QLoraFinetuningConfig +- description: + name: PostTrainingSFTRequestWrapper - description: 'Request to generate synthetic data. A small batch of prompts and a filtering function @@ -3971,6 +4190,9 @@ tags: ' name: SyntheticDataGenerationRequest +- description: + name: SyntheticDataGenerationRequestWrapper - description: 'Response from the synthetic data generation. Batch of (prompt, response, score) tuples that pass the threshold. @@ -3984,12 +4206,21 @@ tags: - description: name: UpdateExperimentRequest +- description: + name: UpdateExperimentRequestWrapper - description: name: UpdateRunRequest +- description: + name: UpdateRunRequestWrapper - description: name: UploadArtifactRequest +- description: + name: UploadArtifactRequestWrapper x-tagGroups: - name: Operations tags: @@ -4010,6 +4241,7 @@ x-tagGroups: - AgenticSystemSessionCreateResponse - AgenticSystemStepResponse - AgenticSystemTurnCreateRequest + - AgenticSystemTurnCreateRequestWrapper - AgenticSystemTurnResponseEvent - AgenticSystemTurnResponseStepCompletePayload - AgenticSystemTurnResponseStepProgressPayload @@ -4021,8 +4253,10 @@ x-tagGroups: - ArtifactType - Attachment - BatchChatCompletionRequest + - BatchChatCompletionRequestWrapper - BatchChatCompletionResponse - BatchCompletionRequest + - BatchCompletionRequestWrapper - BatchCompletionResponse - BraveSearchToolDefinition - BuiltinShield @@ -4030,6 +4264,7 @@ x-tagGroups: - CancelEvaluationJobRequest - CancelTrainingJobRequest - ChatCompletionRequest + - ChatCompletionRequestWrapper - ChatCompletionResponseEvent - ChatCompletionResponseEventType - ChatCompletionResponseStreamChunk @@ -4037,13 +4272,17 @@ x-tagGroups: - CodeInterpreterToolDefinition - CompletionMessage - CompletionRequest + - CompletionRequestWrapper - CompletionResponseStreamChunk - CreateAgenticSystemRequest - CreateAgenticSystemSessionRequest - CreateDatasetRequest + - CreateDatasetRequestWrapper - CreateExperimentRequest + - CreateExperimentRequestWrapper - CreateMemoryBankRequest - CreateRunRequest + - CreateRunRequestWrapper - DPOAlignmentConfig - DeleteAgenticSystemRequest - DeleteAgenticSystemSessionRequest @@ -4055,8 +4294,11 @@ x-tagGroups: - EmbeddingsRequest - EmbeddingsResponse - EvaluateQuestionAnsweringRequest + - EvaluateQuestionAnsweringRequestWrapper - EvaluateSummarizationRequest + - EvaluateSummarizationRequestWrapper - EvaluateTextGenerationRequest + - EvaluateTextGenerationRequestWrapper - EvaluationJob - EvaluationJobArtifactsResponse - EvaluationJobLogStream @@ -4072,8 +4314,11 @@ x-tagGroups: - ListArtifactsRequest - Log - LogMessagesRequest + - LogMessagesRequestWrapper - LogMetricsRequest + - LogMetricsRequestWrapper - LogSearchRequest + - LogSearchRequestWrapper - LoraFinetuningConfig - MemoryBank - MemoryBankDocument @@ -4088,7 +4333,9 @@ x-tagGroups: - PostTrainingJobStatus - PostTrainingJobStatusResponse - PostTrainingRLHFRequest + - PostTrainingRLHFRequestWrapper - PostTrainingSFTRequest + - PostTrainingSFTRequestWrapper - QLoraFinetuningConfig - QueryDocumentsRequest - QueryDocumentsResponse @@ -4096,6 +4343,7 @@ x-tagGroups: - RestAPIExecutionConfig - RestAPIMethod - RewardScoringRequest + - RewardScoringRequestWrapper - RewardScoringResponse - Run - SamplingParams @@ -4108,6 +4356,7 @@ x-tagGroups: - ShieldResponse - StopReason - SyntheticDataGenerationRequest + - SyntheticDataGenerationRequestWrapper - SyntheticDataGenerationResponse - SystemMessage - TokenLogProbs @@ -4128,7 +4377,10 @@ x-tagGroups: - URL - UpdateDocumentsRequest - UpdateExperimentRequest + - UpdateExperimentRequestWrapper - UpdateRunRequest + - UpdateRunRequestWrapper - UploadArtifactRequest + - UploadArtifactRequestWrapper - UserMessage - WolframAlphaToolDefinition diff --git a/rfcs/openapi_generator/pyopenapi/generator.py b/rfcs/openapi_generator/pyopenapi/generator.py index e1450074b..a711d9f68 100644 --- a/rfcs/openapi_generator/pyopenapi/generator.py +++ b/rfcs/openapi_generator/pyopenapi/generator.py @@ -468,12 +468,14 @@ class Generator: builder = ContentBuilder(self.schema_builder) first = next(iter(op.request_params)) request_name, request_type = first + + from dataclasses import make_dataclass + if len(op.request_params) == 1 and "Request" in first[1].__name__: # TODO(ashwin): Undo the "Request" hack and this entire block eventually - request_name, request_type = first + request_name = first[1].__name__ + "Wrapper" + request_type = make_dataclass(request_name, op.request_params) else: - from dataclasses import make_dataclass - op_name = "".join(word.capitalize() for word in op.name.split("_")) request_name = f"{op_name}Request" request_type = make_dataclass(request_name, op.request_params)