donkit-llm 0.1.10__py3-none-any.whl → 0.1.12__py3-none-any.whl
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.
donkit/llm/factory.py
CHANGED
|
@@ -27,12 +27,14 @@ class ModelFactory:
|
|
|
27
27
|
api_key: str,
|
|
28
28
|
base_url: str | None = None,
|
|
29
29
|
organization: str | None = None,
|
|
30
|
+
default_headers: dict[str, str] | None = None,
|
|
30
31
|
) -> OpenAIModel:
|
|
31
32
|
return OpenAIModel(
|
|
32
33
|
model_name=model_name,
|
|
33
34
|
api_key=api_key,
|
|
34
35
|
base_url=base_url,
|
|
35
36
|
organization=organization,
|
|
37
|
+
default_headers=default_headers,
|
|
36
38
|
)
|
|
37
39
|
|
|
38
40
|
@staticmethod
|
|
@@ -159,7 +161,7 @@ class ModelFactory:
|
|
|
159
161
|
def create_donkit_model(
|
|
160
162
|
model_name: str | None,
|
|
161
163
|
api_key: str,
|
|
162
|
-
base_url: str = "https://api.donkit.ai",
|
|
164
|
+
base_url: str = "https://api.dev.donkit.ai",
|
|
163
165
|
provider: str = "default",
|
|
164
166
|
) -> DonkitModel:
|
|
165
167
|
"""Create a Donkit model that proxies through RagOps API Gateway.
|
donkit/llm/openai_model.py
CHANGED
|
@@ -2,6 +2,7 @@ from typing import Any, AsyncIterator
|
|
|
2
2
|
|
|
3
3
|
from loguru import logger
|
|
4
4
|
from openai import AsyncAzureOpenAI, AsyncOpenAI
|
|
5
|
+
from openai.types import Reasoning
|
|
5
6
|
|
|
6
7
|
from .model_abstract import (
|
|
7
8
|
ContentType,
|
|
@@ -30,6 +31,7 @@ class OpenAIModel(LLMModelAbstract):
|
|
|
30
31
|
api_key: str,
|
|
31
32
|
base_url: str | None = None,
|
|
32
33
|
organization: str | None = None,
|
|
34
|
+
default_headers: dict[str, str] | None = None,
|
|
33
35
|
):
|
|
34
36
|
"""
|
|
35
37
|
Initialize OpenAI model.
|
|
@@ -39,9 +41,11 @@ class OpenAIModel(LLMModelAbstract):
|
|
|
39
41
|
api_key: OpenAI API key
|
|
40
42
|
base_url: Optional custom base URL
|
|
41
43
|
organization: Optional organization ID
|
|
44
|
+
default_headers: Optional default headers for all requests
|
|
42
45
|
"""
|
|
43
46
|
self._model_name = model_name
|
|
44
|
-
self.
|
|
47
|
+
self._default_headers = default_headers
|
|
48
|
+
self._init_client(api_key, base_url, organization, default_headers)
|
|
45
49
|
self._capabilities = self._determine_capabilities()
|
|
46
50
|
|
|
47
51
|
def _clean_schema_for_openai(self, schema: dict, is_gpt5: bool = False) -> dict:
|
|
@@ -123,12 +127,14 @@ class OpenAIModel(LLMModelAbstract):
|
|
|
123
127
|
api_key: str,
|
|
124
128
|
base_url: str | None = None,
|
|
125
129
|
organization: str | None = None,
|
|
130
|
+
default_headers: dict[str, str] | None = None,
|
|
126
131
|
) -> None:
|
|
127
132
|
"""Initialize the OpenAI client. Can be overridden by subclasses."""
|
|
128
133
|
self.client = AsyncOpenAI(
|
|
129
134
|
api_key=api_key,
|
|
130
135
|
base_url=base_url,
|
|
131
136
|
organization=organization,
|
|
137
|
+
default_headers=default_headers,
|
|
132
138
|
)
|
|
133
139
|
|
|
134
140
|
def _determine_capabilities(self) -> ModelCapability:
|
|
@@ -568,6 +574,7 @@ class AzureOpenAIModel(OpenAIModel):
|
|
|
568
574
|
api_key: str | None = None,
|
|
569
575
|
base_url: str | None = None,
|
|
570
576
|
organization: str | None = None,
|
|
577
|
+
default_headers: dict[str, str] | None = None,
|
|
571
578
|
) -> None:
|
|
572
579
|
"""Initialize Azure OpenAI client (or Responses API client for Codex)."""
|
|
573
580
|
if self._is_codex:
|
|
@@ -576,6 +583,7 @@ class AzureOpenAIModel(OpenAIModel):
|
|
|
576
583
|
self.client = AsyncOpenAI(
|
|
577
584
|
api_key=self._api_key,
|
|
578
585
|
base_url=responses_base_url,
|
|
586
|
+
default_headers=default_headers,
|
|
579
587
|
)
|
|
580
588
|
else:
|
|
581
589
|
self.client = AsyncAzureOpenAI(
|
|
@@ -583,6 +591,7 @@ class AzureOpenAIModel(OpenAIModel):
|
|
|
583
591
|
azure_endpoint=self._azure_endpoint,
|
|
584
592
|
api_version=self._api_version,
|
|
585
593
|
azure_deployment=self._deployment_name,
|
|
594
|
+
default_headers=default_headers,
|
|
586
595
|
)
|
|
587
596
|
|
|
588
597
|
def _determine_capabilities(self) -> ModelCapability:
|
|
@@ -804,7 +813,6 @@ class AzureOpenAIModel(OpenAIModel):
|
|
|
804
813
|
input_items.extend(converted)
|
|
805
814
|
else:
|
|
806
815
|
input_items.append(converted)
|
|
807
|
-
logger.info(input_items)
|
|
808
816
|
|
|
809
817
|
kwargs: dict[str, Any] = {
|
|
810
818
|
"model": self._deployment_name,
|
|
@@ -821,14 +829,13 @@ class AzureOpenAIModel(OpenAIModel):
|
|
|
821
829
|
if request.tool_choice and isinstance(request.tool_choice, str):
|
|
822
830
|
if request.tool_choice in ("none", "auto", "required"):
|
|
823
831
|
kwargs["tool_choice"] = request.tool_choice
|
|
824
|
-
|
|
832
|
+
kwargs["reasoning"] = Reasoning(effort="medium", summary="detailed")
|
|
825
833
|
try:
|
|
826
834
|
stream = await self.client.responses.create(**kwargs)
|
|
827
835
|
# Buffer for accumulating function calls by output_index
|
|
828
836
|
tool_call_buffers: dict[int, dict] = {}
|
|
829
837
|
|
|
830
838
|
async for event in stream:
|
|
831
|
-
logger.info(event)
|
|
832
839
|
event_type = getattr(event, "type", None)
|
|
833
840
|
|
|
834
841
|
if event_type == "response.output_text.delta":
|
|
@@ -933,6 +940,7 @@ class OpenAIEmbeddingModel(LLMModelAbstract):
|
|
|
933
940
|
model_name: str = "text-embedding-3-small",
|
|
934
941
|
api_key: str | None = None,
|
|
935
942
|
base_url: str | None = None,
|
|
943
|
+
default_headers: dict[str, str] | None = None,
|
|
936
944
|
):
|
|
937
945
|
"""
|
|
938
946
|
Initialize OpenAI embedding model.
|
|
@@ -941,11 +949,15 @@ class OpenAIEmbeddingModel(LLMModelAbstract):
|
|
|
941
949
|
model_name: Embedding model name
|
|
942
950
|
api_key: OpenAI API key
|
|
943
951
|
base_url: Optional custom base URL
|
|
952
|
+
default_headers: Optional default headers for all requests
|
|
944
953
|
"""
|
|
945
954
|
self._base_url = base_url
|
|
946
955
|
self._api_key = api_key
|
|
947
956
|
self._model_name = model_name
|
|
948
|
-
self.
|
|
957
|
+
self._default_headers = default_headers
|
|
958
|
+
self.client = AsyncOpenAI(
|
|
959
|
+
api_key=api_key, base_url=base_url, default_headers=default_headers
|
|
960
|
+
)
|
|
949
961
|
self._capabilities = self._determine_capabilities()
|
|
950
962
|
|
|
951
963
|
def _determine_capabilities(self) -> ModelCapability:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: donkit-llm
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.12
|
|
4
4
|
Summary: Unified LLM model implementations for Donkit (OpenAI, Azure OpenAI, Claude, Vertex AI, Ollama)
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: Donkit AI
|
|
@@ -11,7 +11,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.13
|
|
13
13
|
Requires-Dist: anthropic[vertex] (>=0.42.0,<0.43.0)
|
|
14
|
-
Requires-Dist: donkit-ragops-api-gateway-client (>=0.
|
|
14
|
+
Requires-Dist: donkit-ragops-api-gateway-client (>=0.2.0,<0.3.0)
|
|
15
15
|
Requires-Dist: google-auth (>=2.0.0,<3.0.0)
|
|
16
16
|
Requires-Dist: google-genai (>=1.38.0,<2.0.0)
|
|
17
17
|
Requires-Dist: openai (>=2.1.0,<3.0.0)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
donkit/llm/__init__.py,sha256=aG8AjfJtaIjNh3ZTZcOvcHZ_erAGM8VDKavzx9oXlOc,1568
|
|
2
2
|
donkit/llm/claude_model.py,sha256=9UjNkACc6wHFus2gOXLKOi9yjX2FkP3cpQ9zFZEcXWU,16650
|
|
3
3
|
donkit/llm/donkit_model.py,sha256=rEPxBW6k_BhIBF4XkgLzibVfwW6OJHiX89yMadcJkY4,8497
|
|
4
|
-
donkit/llm/factory.py,sha256=
|
|
4
|
+
donkit/llm/factory.py,sha256=BHJwZJc-xMz8h9LDBw1a1uS9eL5BWSyfDYcpctPxBSM,10923
|
|
5
5
|
donkit/llm/gemini_model.py,sha256=2uLoZr9HjUf1wxiZRGLQFcURCutsB2SV9f-1VaR6kGI,14413
|
|
6
6
|
donkit/llm/llm_gate_model.py,sha256=BQc4w1oJ0HqrI_Ng3qnynfZ-vcHcMqjXJmbMwd7u34Q,6958
|
|
7
7
|
donkit/llm/model_abstract.py,sha256=aOgYh3I96PsxSxnkIJ1ETx5UFeRxozCD1c44wiKoBSs,8191
|
|
8
|
-
donkit/llm/openai_model.py,sha256=
|
|
8
|
+
donkit/llm/openai_model.py,sha256=cDpWGOjRaV6P5i8pIGWL8jmfQsdb1gTwt_Gl2hum7Qg,43277
|
|
9
9
|
donkit/llm/vertex_model.py,sha256=IwlL0H18dGHoJMZbE7GADv9uybXnHeOGV-aUngga3OY,30203
|
|
10
|
-
donkit_llm-0.1.
|
|
11
|
-
donkit_llm-0.1.
|
|
12
|
-
donkit_llm-0.1.
|
|
10
|
+
donkit_llm-0.1.12.dist-info/METADATA,sha256=D9CIBHtdw1L-qgxw4bqC8hYQPa7R0pbEmVu21tX6tCo,743
|
|
11
|
+
donkit_llm-0.1.12.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
12
|
+
donkit_llm-0.1.12.dist-info/RECORD,,
|
|
File without changes
|