| from typing import Optional | |
| from huggingface_hub.hf_api import InferenceProviderMapping | |
| from huggingface_hub.inference._providers._common import BaseConversationalTask | |
| class OpenAIConversationalTask(BaseConversationalTask): | |
| def __init__(self): | |
| super().__init__(provider="openai", base_url="https://api.openai.com") | |
| def _prepare_api_key(self, api_key: Optional[str]) -> str: | |
| if api_key is None: | |
| raise ValueError("You must provide an api_key to work with OpenAI API.") | |
| if api_key.startswith("hf_"): | |
| raise ValueError( | |
| "OpenAI provider is not available through Hugging Face routing, please use your own OpenAI API key." | |
| ) | |
| return api_key | |
| def _prepare_mapping_info(self, model: Optional[str]) -> InferenceProviderMapping: | |
| if model is None: | |
| raise ValueError("Please provide an OpenAI model ID, e.g. `gpt-4o` or `o1`.") | |
| return InferenceProviderMapping( | |
| provider="openai", providerId=model, task="conversational", status="live", hf_model_id=model | |
| ) | |