diff --git a/libs/partners/fireworks/langchain_fireworks/data/_profiles.py b/libs/partners/fireworks/langchain_fireworks/data/_profiles.py index 85e6900c45..5021215178 100644 --- a/libs/partners/fireworks/langchain_fireworks/data/_profiles.py +++ b/libs/partners/fireworks/langchain_fireworks/data/_profiles.py @@ -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, }, } diff --git a/libs/partners/fireworks/langchain_fireworks/data/profile_augmentations.toml b/libs/partners/fireworks/langchain_fireworks/data/profile_augmentations.toml index 8cacec04fb..b6aa289bd8 100644 --- a/libs/partners/fireworks/langchain_fireworks/data/profile_augmentations.toml +++ b/libs/partners/fireworks/langchain_fireworks/data/profile_augmentations.toml @@ -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"] diff --git a/libs/partners/fireworks/tests/unit_tests/test_chat_models.py b/libs/partners/fireworks/tests/unit_tests/test_chat_models.py index b387c626a1..2679d550b2 100644 --- a/libs/partners/fireworks/tests/unit_tests/test_chat_models.py +++ b/libs/partners/fireworks/tests/unit_tests/test_chat_models.py @@ -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 = {