diff --git a/pkgs/development/python-modules/mistralai/default.nix b/pkgs/development/python-modules/mistralai/default.nix new file mode 100644 index 000000000000..d6def4e2bc9c --- /dev/null +++ b/pkgs/development/python-modules/mistralai/default.nix @@ -0,0 +1,96 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + poetry-core, + + # dependencies + eval-type-backport, + httpx, + invoke, + opentelemetry-api, + opentelemetry-exporter-otlp-proto-http, + opentelemetry-sdk, + opentelemetry-semantic-conventions, + pydantic, + python-dateutil, + pyyaml, + typing-inspection, + + # optional-dependencies + authlib, + griffe, + mcp, + google-auth, + requests, + + # tests + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "mistralai"; + version = "1.10.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "mistralai"; + repo = "client-python"; + tag = "v${version}"; + hash = "sha256-B7ZJTwykFnOibTJL5AP3eKT15rLgAJ1hc53BL9TR0CM="; + }; + + preBuild = '' + python scripts/prepare_readme.py + ''; + + build-system = [ + poetry-core + ]; + + pythonRelaxDeps = [ + "opentelemetry-exporter-otlp-proto-http" + "opentelemetry-semantic-conventions" + ]; + dependencies = [ + eval-type-backport + httpx + invoke + opentelemetry-api + opentelemetry-exporter-otlp-proto-http + opentelemetry-sdk + opentelemetry-semantic-conventions + pydantic + python-dateutil + pyyaml + typing-inspection + ]; + + optional-dependencies = { + agents = [ + authlib + griffe + mcp + ]; + gcp = [ + google-auth + requests + ]; + }; + + pythonImportsCheck = [ "mistralai" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = { + description = "Python client library for Mistral AI platform"; + homepage = "https://github.com/mistralai/client-python"; + changelog = "https://github.com/mistralai/client-python/blob/${src.tag}/RELEASES.md"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +} diff --git a/pkgs/development/python-modules/outlines/default.nix b/pkgs/development/python-modules/outlines/default.nix index dc5721df96f6..eed4b70dc26d 100644 --- a/pkgs/development/python-modules/outlines/default.nix +++ b/pkgs/development/python-modules/outlines/default.nix @@ -1,5 +1,6 @@ { lib, + config, buildPythonPackage, fetchFromGitHub, @@ -8,13 +9,11 @@ setuptools-scm, # dependencies - airportsdata, cloudpickle, datasets, diskcache, genson, interegular, - iso3166, jinja2, jsonschema, lark, @@ -23,16 +22,17 @@ outlines-core, pycountry, pydantic, - referencing, - requests, torch, transformers, # tests + airportsdata, anthropic, google-genai, + iso3166, jax, llama-cpp-python, + mistralai, ollama, openai, pytest-asyncio, @@ -43,14 +43,14 @@ buildPythonPackage rec { pname = "outlines"; - version = "1.2.3"; + version = "1.2.9"; pyproject = true; src = fetchFromGitHub { owner = "outlines-dev"; repo = "outlines"; tag = version; - hash = "sha256-t1YSkFC56De9HkdDJN9WIpKDdHxZRfGRbFOtAiJxKUI="; + hash = "sha256-QuS8IokiOPJeh59+W4FLoE9dvBCChf2li70+Ex3aIwg="; }; build-system = [ @@ -59,13 +59,11 @@ buildPythonPackage rec { ]; dependencies = [ - airportsdata cloudpickle datasets diskcache genson interegular - iso3166 jinja2 jsonschema lark @@ -74,19 +72,26 @@ buildPythonPackage rec { outlines-core pycountry pydantic - referencing - requests torch transformers ]; - pythonImportsCheck = [ "outlines" ]; + # llama_cpp dependency cannot be imported when cudaSupport is enabled as it tries to load libcuda.so.1. + # This library is provided by the nvidia driver at runtime, but isn't available in the sandbox. + pythonImportsCheck = lib.optionals (!config.cudaSupport) [ + "outlines" + ]; + # We also have to give up on tests for the same reason. + doCheck = !config.cudaSupport; nativeCheckInputs = [ + airportsdata anthropic google-genai + iso3166 jax llama-cpp-python + mistralai ollama openai pytest-asyncio @@ -171,6 +176,28 @@ buildPythonPackage rec { "test_openai_simple_vision" "test_openai_simple_vision_pydantic" "test_openai_streaming" + + # RuntimeError: Mistral API error: [Errno -3] Temporary failure in name resolution + "test_mistral_async_call" + "test_mistral_async_call_model_name" + "test_mistral_async_chat" + "test_mistral_async_json_schema" + "test_mistral_async_multiple_samples" + "test_mistral_async_pydantic" + "test_mistral_async_pydantic_refusal" + "test_mistral_async_streaming" + "test_mistral_async_vision" + "test_mistral_async_vision_pydantic" + "test_mistral_call" + "test_mistral_call_model_name" + "test_mistral_chat" + "test_mistral_json_schema" + "test_mistral_multiple_samples" + "test_mistral_pydantic" + "test_mistral_pydantic_refusal" + "test_mistral_streaming" + "test_mistral_vision" + "test_mistral_vision_pydantic" ]; disabledTestPaths = [ diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8b0a196a037f..eaf0c9d72d73 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9676,6 +9676,8 @@ self: super: with self; { mistral-common = callPackage ../development/python-modules/mistral-common { }; + mistralai = callPackage ../development/python-modules/mistralai { }; + mistune = callPackage ../development/python-modules/mistune { }; mitmproxy = callPackage ../development/python-modules/mitmproxy { };