feat(model-profiles): distribute data across packages (#34024)

This commit is contained in:
ccurme
2025-11-21 15:47:05 -05:00
committed by GitHub
parent ee3373afc2
commit 33e5d01f7c
74 changed files with 3278 additions and 15714 deletions

View File

@@ -23,7 +23,11 @@ from langchain_core.callbacks import (
AsyncCallbackManagerForLLMRun,
CallbackManagerForLLMRun,
)
from langchain_core.language_models import LanguageModelInput
from langchain_core.language_models import (
LanguageModelInput,
ModelProfile,
ModelProfileRegistry,
)
from langchain_core.language_models.chat_models import BaseChatModel, LangSmithParams
from langchain_core.language_models.llms import create_base_retry_decorator
from langchain_core.messages import (
@@ -70,6 +74,7 @@ from pydantic import (
from typing_extensions import Self
from langchain_mistralai._compat import _convert_from_v1_to_mistral
from langchain_mistralai.data._profiles import _PROFILES
if TYPE_CHECKING:
from collections.abc import AsyncIterator, Iterator, Sequence
@@ -86,6 +91,14 @@ TOOL_CALL_ID_PATTERN = re.compile(r"^[a-zA-Z0-9]{9}$")
global_ssl_context = ssl.create_default_context(cafile=certifi.where())
_MODEL_PROFILES = cast("ModelProfileRegistry", _PROFILES)
def _get_default_model_profile(model_name: str) -> ModelProfile:
default = _MODEL_PROFILES.get(model_name) or {}
return default.copy()
def _create_retry_decorator(
llm: ChatMistralAI,
run_manager: AsyncCallbackManagerForLLMRun | CallbackManagerForLLMRun | None = None,
@@ -632,6 +645,13 @@ class ChatMistralAI(BaseChatModel):
return self
@model_validator(mode="after")
def _set_model_profile(self) -> Self:
"""Set model profile if not overridden."""
if self.profile is None:
self.profile = _get_default_model_profile(self.model)
return self
def _generate(
self,
messages: list[BaseMessage],

View File

@@ -0,0 +1 @@
"""Model profile data. All edits should be made in profile_augmentations.toml."""

View File

@@ -0,0 +1,247 @@
"""Auto-generated model profiles.
DO NOT EDIT THIS FILE MANUALLY.
This file is generated by the langchain-profiles CLI tool.
It contains data derived from the models.dev project.
Source: https://github.com/sst/models.dev
License: MIT License
To update these data, refer to the instructions here:
https://docs.langchain.com/oss/python/langchain/models#updating-or-overwriting-profile-data
"""
from typing import Any
_PROFILES: dict[str, dict[str, Any]] = {
"devstral-medium-2507": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"open-mixtral-8x22b": {
"max_input_tokens": 64000,
"max_output_tokens": 64000,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"ministral-8b-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"pixtral-large-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"ministral-3b-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"pixtral-12b": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"mistral-medium-2505": {
"max_input_tokens": 131072,
"max_output_tokens": 131072,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"devstral-small-2505": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"mistral-medium-2508": {
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"mistral-small-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"magistral-small": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"devstral-small-2507": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"codestral-latest": {
"max_input_tokens": 256000,
"max_output_tokens": 4096,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"open-mixtral-8x7b": {
"max_input_tokens": 32000,
"max_output_tokens": 32000,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"mistral-nemo": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"open-mistral-7b": {
"max_input_tokens": 8000,
"max_output_tokens": 8000,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"mistral-large-latest": {
"max_input_tokens": 131072,
"max_output_tokens": 16384,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"mistral-medium-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"magistral-medium-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
}