| # clear illegal prompt messages | # clear illegal prompt messages | ||||
| prompt_messages = self._clear_illegal_prompt_messages(model, prompt_messages) | prompt_messages = self._clear_illegal_prompt_messages(model, prompt_messages) | ||||
| # o1 compatibility | |||||
| # o1, o3 compatibility | |||||
| block_as_stream = False | block_as_stream = False | ||||
| if model.startswith("o1"): | |||||
| if model.startswith(("o1", "o3")): | |||||
| if "max_tokens" in model_parameters: | if "max_tokens" in model_parameters: | ||||
| model_parameters["max_completion_tokens"] = model_parameters["max_tokens"] | model_parameters["max_completion_tokens"] = model_parameters["max_tokens"] | ||||
| del model_parameters["max_tokens"] | del model_parameters["max_tokens"] | ||||
| ] | ] | ||||
| ) | ) | ||||
| if model.startswith("o1"): | |||||
| if model.startswith(("o1", "o3")): | |||||
| system_message_count = len([m for m in prompt_messages if isinstance(m, SystemPromptMessage)]) | system_message_count = len([m for m in prompt_messages if isinstance(m, SystemPromptMessage)]) | ||||
| if system_message_count > 0: | if system_message_count > 0: | ||||
| new_prompt_messages = [] | new_prompt_messages = [] | ||||
| model = model.split(":")[1] | model = model.split(":")[1] | ||||
| # Currently, we can use gpt4o to calculate chatgpt-4o-latest's token. | # Currently, we can use gpt4o to calculate chatgpt-4o-latest's token. | ||||
| if model == "chatgpt-4o-latest" or model.startswith("o1"): | |||||
| if model == "chatgpt-4o-latest" or model.startswith(("o1", "o3")): | |||||
| model = "gpt-4o" | model = "gpt-4o" | ||||
| try: | try: | ||||
| tokens_per_message = 4 | tokens_per_message = 4 | ||||
| # if there's a name, the role is omitted | # if there's a name, the role is omitted | ||||
| tokens_per_name = -1 | tokens_per_name = -1 | ||||
| elif model.startswith("gpt-3.5-turbo") or model.startswith("gpt-4") or model.startswith("o1"): | |||||
| elif model.startswith("gpt-3.5-turbo") or model.startswith("gpt-4") or model.startswith(("o1", "o3")): | |||||
| tokens_per_message = 3 | tokens_per_message = 3 | ||||
| tokens_per_name = 1 | tokens_per_name = 1 | ||||
| else: | else: |
| default: 50000 | default: 50000 | ||||
| min: 1 | min: 1 | ||||
| max: 50000 | max: 50000 | ||||
| - name: reasoning_effort | |||||
| label: | |||||
| zh_Hans: 推理工作 | |||||
| en_US: reasoning_effort | |||||
| type: string | |||||
| help: | |||||
| zh_Hans: 限制推理模型的推理工作 | |||||
| en_US: constrains effort on reasoning for reasoning models | |||||
| required: false | |||||
| options: | |||||
| - low | |||||
| - medium | |||||
| - high | |||||
| - name: response_format | - name: response_format | ||||
| label: | label: | ||||
| zh_Hans: 回复格式 | zh_Hans: 回复格式 |
| default: 50000 | default: 50000 | ||||
| min: 1 | min: 1 | ||||
| max: 50000 | max: 50000 | ||||
| - name: reasoning_effort | |||||
| label: | |||||
| zh_Hans: 推理工作 | |||||
| en_US: reasoning_effort | |||||
| type: string | |||||
| help: | |||||
| zh_Hans: 限制推理模型的推理工作 | |||||
| en_US: constrains effort on reasoning for reasoning models | |||||
| required: false | |||||
| options: | |||||
| - low | |||||
| - medium | |||||
| - high | |||||
| - name: response_format | - name: response_format | ||||
| label: | label: | ||||
| zh_Hans: 回复格式 | zh_Hans: 回复格式 |
| default: 100000 | default: 100000 | ||||
| min: 1 | min: 1 | ||||
| max: 100000 | max: 100000 | ||||
| - name: reasoning_effort | |||||
| label: | |||||
| zh_Hans: 推理工作 | |||||
| en_US: reasoning_effort | |||||
| type: string | |||||
| help: | |||||
| zh_Hans: 限制推理模型的推理工作 | |||||
| en_US: constrains effort on reasoning for reasoning models | |||||
| required: false | |||||
| options: | |||||
| - low | |||||
| - medium | |||||
| - high | |||||
| - name: response_format | - name: response_format | ||||
| label: | label: | ||||
| zh_Hans: 回复格式 | zh_Hans: 回复格式 |
| default: 100000 | default: 100000 | ||||
| min: 1 | min: 1 | ||||
| max: 100000 | max: 100000 | ||||
| - name: reasoning_effort | |||||
| label: | |||||
| zh_Hans: 推理工作 | |||||
| en_US: reasoning_effort | |||||
| type: string | |||||
| help: | |||||
| zh_Hans: 限制推理模型的推理工作 | |||||
| en_US: constrains effort on reasoning for reasoning models | |||||
| required: false | |||||
| options: | |||||
| - low | |||||
| - medium | |||||
| - high | |||||
| - name: response_format | - name: response_format | ||||
| label: | label: | ||||
| zh_Hans: 回复格式 | zh_Hans: 回复格式 |
| [[package]] | [[package]] | ||||
| name = "openai" | name = "openai" | ||||
| version = "1.52.2" | |||||
| version = "1.61.0" | |||||
| description = "The official Python library for the openai API" | description = "The official Python library for the openai API" | ||||
| optional = false | optional = false | ||||
| python-versions = ">=3.7.1" | |||||
| python-versions = ">=3.8" | |||||
| groups = ["main"] | groups = ["main"] | ||||
| markers = "python_version == \"3.11\" or python_version >= \"3.12\"" | markers = "python_version == \"3.11\" or python_version >= \"3.12\"" | ||||
| files = [ | files = [ | ||||
| {file = "openai-1.52.2-py3-none-any.whl", hash = "sha256:57e9e37bc407f39bb6ec3a27d7e8fb9728b2779936daa1fcf95df17d3edfaccc"}, | |||||
| {file = "openai-1.52.2.tar.gz", hash = "sha256:87b7d0f69d85f5641678d414b7ee3082363647a5c66a462ed7f3ccb59582da0d"}, | |||||
| {file = "openai-1.61.0-py3-none-any.whl", hash = "sha256:e8c512c0743accbdbe77f3429a1490d862f8352045de8dc81969301eb4a4f666"}, | |||||
| {file = "openai-1.61.0.tar.gz", hash = "sha256:216f325a24ed8578e929b0f1b3fb2052165f3b04b0461818adaa51aa29c71f8a"}, | |||||
| ] | ] | ||||
| [package.dependencies] | [package.dependencies] | ||||
| [package.extras] | [package.extras] | ||||
| datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] | datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] | ||||
| realtime = ["websockets (>=13,<15)"] | |||||
| [[package]] | [[package]] | ||||
| name = "opencensus" | name = "opencensus" | ||||
| [metadata] | [metadata] | ||||
| lock-version = "2.1" | lock-version = "2.1" | ||||
| python-versions = ">=3.11,<3.13" | python-versions = ">=3.11,<3.13" | ||||
| content-hash = "14896fb8a4495238d70515986341128d0096ba130c3acce127a29a903a59a811" | |||||
| content-hash = "786f04736264fce986f53ea41aa0f5b94e18df807a9aad0aa621cc0ac7078065" |
| novita-client = "~0.5.7" | novita-client = "~0.5.7" | ||||
| numpy = "~1.26.4" | numpy = "~1.26.4" | ||||
| oci = "~2.135.1" | oci = "~2.135.1" | ||||
| openai = "~1.52.0" | |||||
| openai = "~1.61.0" | |||||
| openpyxl = "~3.1.5" | openpyxl = "~3.1.5" | ||||
| opik = "~1.3.4" | opik = "~1.3.4" | ||||
| pandas = { version = "~2.2.2", extras = ["performance", "excel"] } | pandas = { version = "~2.2.2", extras = ["performance", "excel"] } |