Skip to content

Commit 9f76b25

Browse files
committed
Microsoft LLM feature
1 parent d4bead9 commit 9f76b25

File tree

3 files changed

+92
-0
lines changed

3 files changed

+92
-0
lines changed

edenai_apis/apis/microsoft/info.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1761,6 +1761,11 @@
17611761
"version": "Azure AI Foundry"
17621762
}
17631763
},
1764+
"llm": {
1765+
"chat": {
1766+
"version": "Azure AI Foundry"
1767+
}
1768+
},
17641769
"_metadata": {
17651770
"privacy_url": "https://privacy.microsoft.com/en-us"
17661771
}

edenai_apis/apis/microsoft/microsoft_api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from edenai_apis.apis.microsoft.microsoft_text_api import MicrosoftTextApi
1111
from edenai_apis.apis.microsoft.microsoft_translation_api import MicrosoftTranslationApi
1212
from edenai_apis.apis.microsoft.microsoft_multimodal_api import MicrosoftMultimodalApi
13+
from edenai_apis.apis.microsoft.microsoft_llm_api import MicrosoftLLMApi
1314
from edenai_apis.features.provider.provider_interface import ProviderInterface
1415
from edenai_apis.loaders.data_loader import ProviderDataEnum
1516
from edenai_apis.loaders.loaders import load_provider
@@ -24,6 +25,7 @@ class MicrosoftApi(
2425
MicrosoftOcrApi,
2526
MicrosoftAudioApi,
2627
MicrosoftMultimodalApi,
28+
MicrosoftLLMApi,
2729
):
2830
provider_name = "microsoft"
2931

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
from typing import List, Type, Union, Optional
2+
3+
import httpx
4+
from openai import BaseModel
5+
from edenai_apis.features.llm.llm_interface import LlmInterface
6+
from edenai_apis.features.llm.chat.chat_dataclass import ChatDataClass
7+
8+
9+
class MicrosoftLLMApi(LlmInterface):
10+
def llm__chat(
11+
self,
12+
messages: List = [],
13+
model: Optional[str] = None,
14+
# Optional OpenAI params: see https://platform.openai.com/docs/api-reference/chat/create
15+
timeout: Optional[Union[float, str, httpx.Timeout]] = None,
16+
temperature: Optional[float] = None,
17+
top_p: Optional[float] = None,
18+
n: Optional[int] = None,
19+
stream: Optional[bool] = None,
20+
stream_options: Optional[dict] = None,
21+
stop: Optional[str] = None,
22+
stop_sequences: Optional[any] = None,
23+
max_tokens: Optional[int] = None,
24+
presence_penalty: Optional[float] = None,
25+
frequency_penalty: Optional[float] = None,
26+
logit_bias: Optional[dict] = None,
27+
# openai v1.0+ new params
28+
response_format: Optional[
29+
Union[dict, Type[BaseModel]]
30+
] = None, # Structured outputs
31+
seed: Optional[int] = None,
32+
tools: Optional[List] = None,
33+
tool_choice: Optional[Union[str, dict]] = None,
34+
logprobs: Optional[bool] = None,
35+
top_logprobs: Optional[int] = None,
36+
parallel_tool_calls: Optional[bool] = None,
37+
deployment_id=None,
38+
extra_headers: Optional[dict] = None,
39+
# soon to be deprecated params by OpenAI -> This should be replaced by tools
40+
functions: Optional[List] = None,
41+
function_call: Optional[str] = None,
42+
base_url: Optional[str] = None,
43+
api_version: Optional[str] = None,
44+
api_key: Optional[str] = None,
45+
model_list: Optional[list] = None, # pass in a list of api_base,keys, etc.
46+
drop_invalid_params: bool = True, # If true, all the invalid parameters will be ignored (dropped) before sending to the model
47+
user: str | None = None,
48+
# Optional parameters
49+
**kwargs,
50+
) -> ChatDataClass:
51+
response = self.llm_client.completion(
52+
messages=messages,
53+
model=model,
54+
timeout=timeout,
55+
temperature=temperature,
56+
top_p=top_p,
57+
n=n,
58+
stream=stream,
59+
stream_options=stream_options,
60+
stop=stop,
61+
stop_sequences=stop_sequences,
62+
max_tokens=max_tokens,
63+
presence_penalty=presence_penalty,
64+
frequency_penalty=frequency_penalty,
65+
logit_bias=logit_bias,
66+
response_format=response_format,
67+
seed=seed,
68+
tools=tools,
69+
tool_choice=tool_choice,
70+
logprobs=logprobs,
71+
top_logprobs=top_logprobs,
72+
parallel_tool_calls=parallel_tool_calls,
73+
deployment_id=deployment_id,
74+
extra_headers=extra_headers,
75+
functions=functions,
76+
function_call=function_call,
77+
base_url=base_url,
78+
api_version=api_version,
79+
api_key=api_key,
80+
model_list=model_list,
81+
drop_invalid_params=drop_invalid_params,
82+
user=user,
83+
**kwargs,
84+
)
85+
return response

0 commit comments

Comments
 (0)