model-library 0.1.0__tar.gz → 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. {model_library-0.1.0 → model_library-0.1.2}/.github/workflows/publish.yml +1 -1
  2. {model_library-0.1.0 → model_library-0.1.2}/Makefile +1 -1
  3. {model_library-0.1.0 → model_library-0.1.2}/PKG-INFO +36 -7
  4. {model_library-0.1.0 → model_library-0.1.2}/README.md +34 -6
  5. {model_library-0.1.0 → model_library-0.1.2}/examples/setup.py +1 -11
  6. {model_library-0.1.0 → model_library-0.1.2}/model_library/__init__.py +7 -3
  7. model_library-0.1.2/model_library/base/__init__.py +7 -0
  8. {model_library-0.1.0/model_library → model_library-0.1.2/model_library/base}/base.py +47 -423
  9. model_library-0.1.2/model_library/base/batch.py +121 -0
  10. model_library-0.1.0/model_library/providers/cohere.py → model_library-0.1.2/model_library/base/delegate_only.py +34 -40
  11. model_library-0.1.2/model_library/base/input.py +100 -0
  12. model_library-0.1.2/model_library/base/output.py +175 -0
  13. model_library-0.1.2/model_library/base/utils.py +42 -0
  14. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/all_models.json +164 -2
  15. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/anthropic_models.yaml +4 -0
  16. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/deepseek_models.yaml +3 -1
  17. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/openai_models.yaml +48 -0
  18. {model_library-0.1.0 → model_library-0.1.2}/model_library/exceptions.py +2 -0
  19. model_library-0.1.2/model_library/logging.py +30 -0
  20. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/ai21labs.py +2 -0
  21. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/alibaba.py +16 -78
  22. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/amazon.py +3 -0
  23. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/anthropic.py +213 -2
  24. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/azure.py +2 -0
  25. model_library-0.1.2/model_library/providers/cohere.py +34 -0
  26. model_library-0.1.2/model_library/providers/deepseek.py +39 -0
  27. model_library-0.1.2/model_library/providers/fireworks.py +69 -0
  28. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/google/google.py +22 -20
  29. model_library-0.1.2/model_library/providers/inception.py +34 -0
  30. model_library-0.1.2/model_library/providers/kimi.py +34 -0
  31. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/mistral.py +2 -0
  32. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/openai.py +2 -0
  33. model_library-0.1.2/model_library/providers/perplexity.py +34 -0
  34. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/together.py +2 -0
  35. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/vals.py +2 -0
  36. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/xai.py +2 -0
  37. model_library-0.1.2/model_library/providers/zai.py +34 -0
  38. {model_library-0.1.0 → model_library-0.1.2}/model_library/register_models.py +75 -55
  39. {model_library-0.1.0 → model_library-0.1.2}/model_library/registry_utils.py +5 -5
  40. {model_library-0.1.0 → model_library-0.1.2}/model_library/utils.py +3 -28
  41. {model_library-0.1.0 → model_library-0.1.2}/model_library.egg-info/PKG-INFO +36 -7
  42. {model_library-0.1.0 → model_library-0.1.2}/model_library.egg-info/SOURCES.txt +11 -3
  43. {model_library-0.1.0 → model_library-0.1.2}/model_library.egg-info/requires.txt +1 -0
  44. {model_library-0.1.0 → model_library-0.1.2}/pyproject.toml +1 -2
  45. {model_library-0.1.0 → model_library-0.1.2}/tests/conftest.py +4 -0
  46. {model_library-0.1.0 → model_library-0.1.2}/tests/integration/test_batch.py +64 -1
  47. {model_library-0.1.0 → model_library-0.1.2}/tests/unit/conftest.py +25 -1
  48. model_library-0.1.2/tests/unit/providers/__init__.py +0 -0
  49. model_library-0.1.0/tests/unit/test_model_registry.py → model_library-0.1.2/tests/unit/test_registry.py +54 -1
  50. {model_library-0.1.0 → model_library-0.1.2}/uv.lock +3 -3
  51. model_library-0.1.0/model_library/providers/deepseek.py +0 -115
  52. model_library-0.1.0/model_library/providers/fireworks.py +0 -133
  53. model_library-0.1.0/model_library/providers/inception.py +0 -102
  54. model_library-0.1.0/model_library/providers/kimi.py +0 -102
  55. model_library-0.1.0/model_library/providers/perplexity.py +0 -101
  56. model_library-0.1.0/model_library/providers/zai.py +0 -102
  57. {model_library-0.1.0 → model_library-0.1.2}/.gitattributes +0 -0
  58. {model_library-0.1.0 → model_library-0.1.2}/.github/workflows/style.yaml +0 -0
  59. {model_library-0.1.0 → model_library-0.1.2}/.github/workflows/test.yaml +0 -0
  60. {model_library-0.1.0 → model_library-0.1.2}/.github/workflows/typecheck.yml +0 -0
  61. {model_library-0.1.0 → model_library-0.1.2}/.gitignore +0 -0
  62. {model_library-0.1.0 → model_library-0.1.2}/LICENSE +0 -0
  63. {model_library-0.1.0 → model_library-0.1.2}/examples/README.md +0 -0
  64. {model_library-0.1.0 → model_library-0.1.2}/examples/advanced/batch.py +0 -0
  65. {model_library-0.1.0 → model_library-0.1.2}/examples/advanced/custom_retrier.py +0 -0
  66. {model_library-0.1.0 → model_library-0.1.2}/examples/advanced/deep_research.py +0 -0
  67. {model_library-0.1.0 → model_library-0.1.2}/examples/advanced/stress.py +0 -0
  68. {model_library-0.1.0 → model_library-0.1.2}/examples/advanced/structured_output.py +0 -0
  69. {model_library-0.1.0 → model_library-0.1.2}/examples/advanced/web_search.py +0 -0
  70. {model_library-0.1.0 → model_library-0.1.2}/examples/basics.py +0 -0
  71. {model_library-0.1.0 → model_library-0.1.2}/examples/data/files.py +0 -0
  72. {model_library-0.1.0 → model_library-0.1.2}/examples/data/images.py +0 -0
  73. {model_library-0.1.0 → model_library-0.1.2}/examples/embeddings.py +0 -0
  74. {model_library-0.1.0 → model_library-0.1.2}/examples/files.py +0 -0
  75. {model_library-0.1.0 → model_library-0.1.2}/examples/images.py +0 -0
  76. {model_library-0.1.0 → model_library-0.1.2}/examples/prompt_caching.py +0 -0
  77. {model_library-0.1.0 → model_library-0.1.2}/examples/tool_calls.py +0 -0
  78. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/ai21labs_models.yaml +0 -0
  79. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/alibaba_models.yaml +0 -0
  80. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/amazon_models.yaml +0 -0
  81. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/cohere_models.yaml +0 -0
  82. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/dummy_model.yaml +0 -0
  83. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/fireworks_models.yaml +0 -0
  84. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/google_models.yaml +0 -0
  85. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/inception_models.yaml +0 -0
  86. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/kimi_models.yaml +0 -0
  87. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/mistral_models.yaml +0 -0
  88. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/perplexity_models.yaml +0 -0
  89. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/together_models.yaml +0 -0
  90. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/xai_models.yaml +0 -0
  91. {model_library-0.1.0 → model_library-0.1.2}/model_library/config/zai_models.yaml +0 -0
  92. {model_library-0.1.0 → model_library-0.1.2}/model_library/file_utils.py +0 -0
  93. {model_library-0.1.0 → model_library-0.1.2}/model_library/model_utils.py +0 -0
  94. {model_library-0.1.0/tests → model_library-0.1.2/model_library/providers}/__init__.py +0 -0
  95. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/google/__init__.py +0 -0
  96. {model_library-0.1.0 → model_library-0.1.2}/model_library/providers/google/batch.py +0 -0
  97. {model_library-0.1.0 → model_library-0.1.2}/model_library/py.typed +0 -0
  98. {model_library-0.1.0 → model_library-0.1.2}/model_library/settings.py +0 -0
  99. {model_library-0.1.0 → model_library-0.1.2}/model_library.egg-info/dependency_links.txt +0 -0
  100. {model_library-0.1.0 → model_library-0.1.2}/model_library.egg-info/top_level.txt +0 -0
  101. /model_library-0.1.0/scripts/explore_models.py → /model_library-0.1.2/scripts/browse_models.py +0 -0
  102. {model_library-0.1.0 → model_library-0.1.2}/scripts/config.py +0 -0
  103. {model_library-0.1.0 → model_library-0.1.2}/scripts/publish.py +0 -0
  104. {model_library-0.1.0 → model_library-0.1.2}/scripts/run_models.py +0 -0
  105. {model_library-0.1.0 → model_library-0.1.2}/setup.cfg +0 -0
  106. {model_library-0.1.0 → model_library-0.1.2}/tests/README.md +0 -0
  107. {model_library-0.1.0/tests/integration → model_library-0.1.2/tests}/__init__.py +0 -0
  108. {model_library-0.1.0/tests/unit → model_library-0.1.2/tests/integration}/__init__.py +0 -0
  109. {model_library-0.1.0 → model_library-0.1.2}/tests/integration/conftest.py +0 -0
  110. {model_library-0.1.0 → model_library-0.1.2}/tests/integration/test_completion.py +0 -0
  111. {model_library-0.1.0 → model_library-0.1.2}/tests/integration/test_files.py +0 -0
  112. {model_library-0.1.0 → model_library-0.1.2}/tests/integration/test_reasoning.py +0 -0
  113. {model_library-0.1.0 → model_library-0.1.2}/tests/integration/test_retry.py +0 -0
  114. {model_library-0.1.0 → model_library-0.1.2}/tests/integration/test_streaming.py +0 -0
  115. {model_library-0.1.0 → model_library-0.1.2}/tests/integration/test_structured_output.py +0 -0
  116. {model_library-0.1.0 → model_library-0.1.2}/tests/integration/test_tools.py +0 -0
  117. {model_library-0.1.0 → model_library-0.1.2}/tests/test_helpers.py +0 -0
  118. {model_library-0.1.0/tests/unit/providers → model_library-0.1.2/tests/unit}/__init__.py +0 -0
  119. {model_library-0.1.0 → model_library-0.1.2}/tests/unit/providers/test_fireworks_provider.py +0 -0
  120. {model_library-0.1.0 → model_library-0.1.2}/tests/unit/providers/test_google_provider.py +0 -0
  121. {model_library-0.1.0 → model_library-0.1.2}/tests/unit/test_batch.py +0 -0
  122. {model_library-0.1.0 → model_library-0.1.2}/tests/unit/test_context_window.py +0 -0
  123. {model_library-0.1.0 → model_library-0.1.2}/tests/unit/test_deep_research.py +0 -0
  124. {model_library-0.1.0 → model_library-0.1.2}/tests/unit/test_perplexity_provider.py +0 -0
  125. {model_library-0.1.0 → model_library-0.1.2}/tests/unit/test_prompt_caching.py +0 -0
  126. {model_library-0.1.0 → model_library-0.1.2}/tests/unit/test_retry.py +0 -0
  127. {model_library-0.1.0 → model_library-0.1.2}/tests/unit/test_streaming.py +0 -0
  128. {model_library-0.1.0 → model_library-0.1.2}/tests/unit/test_tools.py +0 -0
@@ -72,7 +72,7 @@ jobs:
72
72
  path: dist/
73
73
 
74
74
  - name: Sign the dists with Sigstore
75
- uses: sigstore/gh-action-sigstore-python@v2.1.1
75
+ uses: sigstore/gh-action-sigstore-python@v3.1.0
76
76
  with:
77
77
  inputs: |
78
78
  ./dist/*.tar.gz
@@ -86,5 +86,5 @@ examples: venv_check
86
86
  @echo "\n✅ All examples completed!"
87
87
 
88
88
  browse_models: venv_check
89
- @uv run python -m scripts.explore_models
89
+ @uv run python -m scripts.browse_models
90
90
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: model-library
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Model Library for vals.ai
5
5
  Author-email: "Vals AI, Inc." <contact@vals.ai>
6
6
  License: MIT
@@ -10,6 +10,7 @@ License-File: LICENSE
10
10
  Requires-Dist: typing-extensions<5.0,>=4.14.1
11
11
  Requires-Dist: pydantic<3.0,>=2.11.7
12
12
  Requires-Dist: pyyaml>=6.0.2
13
+ Requires-Dist: rich
13
14
  Requires-Dist: backoff<3.0,>=2.2.1
14
15
  Requires-Dist: redis<7.0,>=6.2.0
15
16
  Requires-Dist: tiktoken==0.11.0
@@ -53,7 +54,14 @@ Open-source model library for interacting with a variety of LLM providers. Origi
53
54
  - X AI
54
55
  - ZhipuAI (zai)
55
56
 
56
- Run `python -m scripts.browse_models` to browse the model registry.
57
+ Run `python -m scripts.browse_models` to browse the model registry or
58
+
59
+ ```python
60
+ from model_library.registry_utils import get_model_names_by_provider, get_provider_names
61
+
62
+ print(get_provider_names())
63
+ print(get_model_names_by_provider("chosen-provider"))
64
+ ```
57
65
 
58
66
  ### Supported Input
59
67
 
@@ -70,16 +78,26 @@ Here is a basic example of how to query a model:
70
78
 
71
79
  ```python
72
80
  import asyncio
73
- from model_library.registry_utils import get_registry_model
81
+ from model_library import model
74
82
 
75
83
  async def main():
76
84
  # Load a model from the registry
77
- model = get_registry_model("openai/gemini-2.5-flash")
85
+ llm = model("anthropic/claude-opus-4-1-20250805-thinking")
86
+
87
+ # Display the LLM instance
88
+ llm.logger.info(llm)
89
+ # or print(llm)
78
90
 
79
91
  # Query the model with a simple text input
80
- response = await model.query("What is QSBS? Explain your thinking in detail and make it concise.")
92
+ result = await llm.query(
93
+ "What is QSBS? Explain your thinking in detail and make it concise."
94
+ )
95
+
96
+ # Logger automatically logs the result
97
+
98
+ # Display only the output text
99
+ llm.logger.info(result.output_text)
81
100
 
82
- # Logger automatically logs the response
83
101
 
84
102
  if __name__ == "__main__":
85
103
  asyncio.run(main())
@@ -88,7 +106,18 @@ if __name__ == "__main__":
88
106
  The model registry holds model attributes, ex. reasoning, file support, tool support, max tokens. You may also use models not included in the registry.
89
107
 
90
108
  ```python
91
- model = get_raw_model("openai/gpt-3.5-turbo", config=LLMConfig(max_tokens=1000))
109
+ from model_library import raw_model
110
+ from model_library.base import LLMConfig
111
+
112
+ model = raw_model("grok/grok-code-fast", LLMConfig(max_tokens=10000))
113
+ ```
114
+
115
+ Root logger is named "llm". To disable logging:
116
+
117
+ ```python
118
+ from model_library import set_logging
119
+
120
+ set_logging(enable=False)
92
121
  ```
93
122
 
94
123
  ### Environment Setup
@@ -26,7 +26,14 @@ Open-source model library for interacting with a variety of LLM providers. Origi
26
26
  - X AI
27
27
  - ZhipuAI (zai)
28
28
 
29
- Run `python -m scripts.browse_models` to browse the model registry.
29
+ Run `python -m scripts.browse_models` to browse the model registry or
30
+
31
+ ```python
32
+ from model_library.registry_utils import get_model_names_by_provider, get_provider_names
33
+
34
+ print(get_provider_names())
35
+ print(get_model_names_by_provider("chosen-provider"))
36
+ ```
30
37
 
31
38
  ### Supported Input
32
39
 
@@ -43,16 +50,26 @@ Here is a basic example of how to query a model:
43
50
 
44
51
  ```python
45
52
  import asyncio
46
- from model_library.registry_utils import get_registry_model
53
+ from model_library import model
47
54
 
48
55
  async def main():
49
56
  # Load a model from the registry
50
- model = get_registry_model("openai/gemini-2.5-flash")
57
+ llm = model("anthropic/claude-opus-4-1-20250805-thinking")
58
+
59
+ # Display the LLM instance
60
+ llm.logger.info(llm)
61
+ # or print(llm)
51
62
 
52
63
  # Query the model with a simple text input
53
- response = await model.query("What is QSBS? Explain your thinking in detail and make it concise.")
64
+ result = await llm.query(
65
+ "What is QSBS? Explain your thinking in detail and make it concise."
66
+ )
67
+
68
+ # Logger automatically logs the result
69
+
70
+ # Display only the output text
71
+ llm.logger.info(result.output_text)
54
72
 
55
- # Logger automatically logs the response
56
73
 
57
74
  if __name__ == "__main__":
58
75
  asyncio.run(main())
@@ -61,7 +78,18 @@ if __name__ == "__main__":
61
78
  The model registry holds model attributes, ex. reasoning, file support, tool support, max tokens. You may also use models not included in the registry.
62
79
 
63
80
  ```python
64
- model = get_raw_model("openai/gpt-3.5-turbo", config=LLMConfig(max_tokens=1000))
81
+ from model_library import raw_model
82
+ from model_library.base import LLMConfig
83
+
84
+ model = raw_model("grok/grok-code-fast", LLMConfig(max_tokens=10000))
85
+ ```
86
+
87
+ Root logger is named "llm". To disable logging:
88
+
89
+ ```python
90
+ from model_library import set_logging
91
+
92
+ set_logging(enable=False)
65
93
  ```
66
94
 
67
95
  ### Environment Setup
@@ -4,22 +4,12 @@ from typing import Any
4
4
  from rich.console import Console
5
5
  from rich.logging import RichHandler
6
6
 
7
- console = Console()
8
-
9
- # llm logger
10
- llm_logger = logging.getLogger("llm")
11
- llm_logger.setLevel(logging.INFO)
12
- llm_logger.handlers.clear()
13
- handler = RichHandler(console=console, markup=True, show_time=False)
14
- handler.setFormatter(logging.Formatter(("%(name)s - %(levelname)s - %(message)s")))
15
- llm_logger.addHandler(handler)
16
-
17
7
  # console logger (if you want to print specific colors)
18
8
  console_logger = logging.getLogger("console")
19
9
  console_logger.setLevel(logging.INFO)
20
10
  console_logger.handlers.clear()
21
11
  console_logger.addHandler(
22
- RichHandler(console=console, markup=True, show_time=False, rich_tracebacks=True)
12
+ RichHandler(console=Console(), markup=True, show_time=False, rich_tracebacks=True)
23
13
  )
24
14
 
25
15
  # all other logs
@@ -1,8 +1,11 @@
1
- from model_library.settings import ModelLibrarySettings
2
1
  from model_library.base import LLM, LLMConfig
2
+ from model_library.logging import set_logging
3
+ from model_library.settings import ModelLibrarySettings
3
4
 
4
5
  model_library_settings: ModelLibrarySettings = ModelLibrarySettings()
5
6
 
7
+ set_logging()
8
+
6
9
 
7
10
  def model(model_str: str, override_config: LLMConfig | None = None) -> LLM:
8
11
  from model_library.registry_utils import get_registry_model
@@ -10,14 +13,15 @@ def model(model_str: str, override_config: LLMConfig | None = None) -> LLM:
10
13
  return get_registry_model(model_str, override_config)
11
14
 
12
15
 
13
- def raw_model(model_str: str, override_config: LLMConfig | None = None) -> LLM:
16
+ def raw_model(model_str: str, config: LLMConfig | None = None) -> LLM:
14
17
  from model_library.registry_utils import get_raw_model
15
18
 
16
- return get_raw_model(model_str, config=override_config)
19
+ return get_raw_model(model_str, config=config)
17
20
 
18
21
 
19
22
  __all__ = [
20
23
  "model_library_settings",
21
24
  "model",
22
25
  "raw_model",
26
+ "set_logging",
23
27
  ]
@@ -0,0 +1,7 @@
1
+ # ruff: noqa: F403,F401
2
+ from model_library.base.base import *
3
+ from model_library.base.batch import *
4
+ from model_library.base.delegate_only import *
5
+ from model_library.base.input import *
6
+ from model_library.base.output import *
7
+ from model_library.base.utils import *