mirror of
https://github.com/xtekky/gpt4free.git
synced 2025-12-24 13:07:53 +08:00
Enhance HuggingFaceAPI to support additional provider API paths; refactor Completions and AsyncCompletions to use client.api_key and client.base_url
This commit is contained in:
@@ -89,7 +89,16 @@ class HuggingFaceAPI(OpenaiTemplate):
|
||||
raise ModelNotFoundError(f"Model is not supported: {model} in: {cls.__name__}")
|
||||
error = None
|
||||
for provider_key in provider_mapping:
|
||||
api_path = "groq/openai/v1" if provider_key == "groq" else "novita/v3/openai" if provider_key == "novita" else f"{provider_key}/v1"
|
||||
if provider_key == "zai-org":
|
||||
api_path = "zai-org/api/paas/v4"
|
||||
elif provider_key == "novita":
|
||||
api_path = "novita/v3/openai"
|
||||
elif provider_key == "groq":
|
||||
api_path = "groq/openai/v1"
|
||||
elif provider_key == "hf-inference":
|
||||
api_path = f"{provider_key}/models/{model}/v1"
|
||||
else:
|
||||
api_path = f"{provider_key}/v1"
|
||||
api_base = f"https://router.huggingface.co/{api_path}"
|
||||
task = provider_mapping[provider_key]["task"]
|
||||
if task != "conversational":
|
||||
|
||||
@@ -308,7 +308,6 @@ class Completions:
|
||||
response_format: Optional[dict] = None,
|
||||
max_tokens: Optional[int] = None,
|
||||
stop: Optional[Union[list[str], str]] = None,
|
||||
api_key: Optional[str] = None,
|
||||
ignore_stream: Optional[bool] = False,
|
||||
raw: Optional[bool] = False,
|
||||
**kwargs
|
||||
@@ -337,7 +336,8 @@ class Completions:
|
||||
proxy=self.client.proxy if proxy is None else proxy,
|
||||
max_tokens=max_tokens,
|
||||
stop=stop,
|
||||
api_key=self.client.api_key if api_key is None else api_key
|
||||
api_key=self.client.api_key,
|
||||
api_base=self.client.base_url
|
||||
),
|
||||
**kwargs
|
||||
)
|
||||
@@ -646,7 +646,6 @@ class AsyncCompletions:
|
||||
response_format: Optional[dict] = None,
|
||||
max_tokens: Optional[int] = None,
|
||||
stop: Optional[Union[list[str], str]] = None,
|
||||
api_key: Optional[str] = None,
|
||||
ignore_stream: Optional[bool] = False,
|
||||
raw: Optional[bool] = False,
|
||||
**kwargs
|
||||
@@ -675,7 +674,8 @@ class AsyncCompletions:
|
||||
proxy=self.client.proxy if proxy is None else proxy,
|
||||
max_tokens=max_tokens,
|
||||
stop=stop,
|
||||
api_key=self.client.api_key if api_key is None else api_key
|
||||
api_key=self.client.api_key,
|
||||
api_base=self.client.base_url
|
||||
),
|
||||
**kwargs
|
||||
)
|
||||
|
||||
@@ -15,11 +15,13 @@ class Client():
|
||||
self,
|
||||
api_key: str = None,
|
||||
proxies: Proxies = None,
|
||||
base_url: str = None,
|
||||
**kwargs
|
||||
) -> None:
|
||||
self.api_key: str = api_key
|
||||
self.proxies = proxies
|
||||
self.proxy: str = self.get_proxy()
|
||||
self.base_url: str = base_url
|
||||
|
||||
def get_proxy(self) -> Union[str, None]:
|
||||
if isinstance(self.proxies, str):
|
||||
|
||||
Reference in New Issue
Block a user