fix(fireworks): declare native PDF inputs unsupported (#40814)

Co-authored-by: Mason Daugherty <mdrxy@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
This commit is contained in:
authored and GitHub committed 2026-09-24 18:07:25 -04:00
1 parent 846e161121
commit 38cee0db98
3 files changed
+90

No files matched your search

@@ -38,6 +38,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/deepseek-v4-flash-vision-exp": {
"name": "DeepSeek V4 Flash Vision Exp",
@@ -61,6 +63,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/deepseek-v4-pro": {
"name": "DeepSeek V4 Pro",
@@ -84,6 +88,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
"reasoning_effort_levels": [
"none",
"low",
@@ -116,6 +122,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/deepseek-v4p1-flash": {
"name": "DeepSeek V4.1 Flash",
@@ -138,6 +146,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/ember-1": {
"name": "Ember-1",
@@ -158,9 +168,13 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_calling": True,
"attachment": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/glm-5p1": {
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
"reasoning_effort_levels": [
"none",
"high",
@@ -188,6 +202,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
"reasoning_effort_levels": [
"none",
"high",
@@ -216,6 +232,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/glm-5p3-flash": {
"name": "GLM 5.3 Flash",
@@ -238,6 +256,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/gpt-oss-120b": {
"name": "GPT OSS 120B",
@@ -259,6 +279,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/inkling": {
"name": "Inkling",
@@ -280,6 +302,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/kimi-k2p6": {
"name": "Kimi K2.6",
@@ -302,6 +326,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
"reasoning_effort_levels": [
"low",
"medium",
@@ -329,6 +355,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
"reasoning_effort_levels": [
"low",
"medium",
@@ -356,6 +384,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": False,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/minimax-m2p7": {
"name": "MiniMax-M2.7",
@@ -378,6 +408,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/minimax-m3": {
"name": "MiniMax-M3",
@@ -399,6 +431,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/muse-glimmer-30b": {
"name": "Muse Glimmer 30B",
@@ -422,6 +456,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/nemotron-3-ultra-nvfp4": {
"name": "Nemotron 3 Ultra 550B A55B",
@@ -443,6 +479,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/nemotron-lightning-3p5-30b-a3b": {
"name": "Nemotron 3.5 Lightning 30B A3B",
@@ -465,6 +503,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/qwen3p7-plus": {
"name": "Qwen 3.7 Plus",
@@ -486,6 +526,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/qwen3p8-2p4t-a95b": {
"name": "Qwen3.8 2.4T A95B",
@@ -508,6 +550,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/models/qwen3p8-max": {
"name": "Qwen3.8 Max",
@@ -529,6 +573,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/routers/deepseek-flash-latest": {
"name": "DeepSeek Flash Latest",
@@ -551,6 +597,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/routers/deepseek-pro-latest": {
"name": "DeepSeek Pro Latest",
@@ -573,9 +621,13 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/routers/glm-5p1-fast": {
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
"reasoning_effort_levels": [
"none",
"high",
@@ -602,6 +654,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
"reasoning_effort_levels": [
"none",
"high",
@@ -630,6 +684,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/routers/glm-fast-latest": {
"name": "GLM 5.3 Fast (Latest)",
@@ -652,6 +708,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/routers/glm-flash-latest": {
"name": "GLM Flash Latest (GLM 5.3 Flash)",
@@ -674,6 +732,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/routers/glm-latest": {
"name": "GLM Latest",
@@ -696,6 +756,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/routers/kimi-fast-latest": {
"name": "Kimi Fast Latest",
@@ -718,9 +780,13 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": False,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/routers/kimi-k2p6-fast": {
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
"reasoning_effort_levels": [
"low",
"medium",
@@ -729,6 +795,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
},
"accounts/fireworks/routers/kimi-k2p6-turbo": {
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
"reasoning_effort_levels": [
"low",
"medium",
@@ -737,6 +805,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
},
"accounts/fireworks/routers/kimi-k2p7-code-fast": {
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
"reasoning_effort_levels": [
"low",
"medium",
@@ -764,6 +834,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": False,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/routers/kimi-latest": {
"name": "Kimi Latest",
@@ -786,6 +858,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": False,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/routers/minimax-latest": {
"name": "MiniMax Latest",
@@ -807,6 +881,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": False,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
"accounts/fireworks/routers/qwen-max-latest": {
"name": "Qwen Max Latest (Qwen3.8 Max)",
@@ -828,5 +904,7 @@ _PROFILES: dict[str, dict[str, Any]] = {
"attachment": True,
"temperature": True,
"tool_call_streaming": True,
"pdf_inputs": False,
"pdf_tool_message": False,
},
}
@@ -2,6 +2,8 @@ provider = "fireworks-ai"
[overrides]
tool_call_streaming = true
pdf_inputs = false
pdf_tool_message = false
[overrides."accounts/fireworks/models/deepseek-v4-pro"]
reasoning_effort_levels = ["none", "low", "medium", "high", "xhigh", "max"]
@@ -57,6 +57,7 @@ from langchain_fireworks.chat_models import (
_update_token_usage,
_usage_to_metadata,
)
from langchain_fireworks.data._profiles import _PROFILES
MODEL_NAME = "accounts/fireworks/models/test-model"
@@ -105,6 +106,15 @@ def test_fireworks_model_param() -> None:
assert llm.model == "foo"
@pytest.mark.parametrize("model_name", _PROFILES)
def test_model_profile_rejects_native_pdf_input(model_name: str) -> None:
profile = _make_model(model=model_name).profile
assert profile is not None
assert profile["pdf_inputs"] is False
assert profile["pdf_tool_message"] is False
def test_convert_dict_to_message_with_reasoning_content() -> None:
"""Test that reasoning_content is correctly extracted from API response."""
response_dict = {