Spaces:
Build error
Build error
| from openai import OpenAI | |
| from typing import Optional, Dict, Any | |
| class AIAssistant: | |
| """ | |
| A wrapper class for consistent LLM API interactions. | |
| This class provides: | |
| - Unified interface for different LLM providers | |
| - Consistent handling of generation parameters | |
| - Support for streaming responses | |
| Attributes: | |
| client: Initialized API client (OpenAI, Anthropic, etc.) | |
| model: Name of the model to use | |
| """ | |
| def __init__(self, client: OpenAI, model: str): | |
| self.client = client | |
| self.model = model | |
| def generate_response(self, | |
| prompt_template: Any, | |
| generation_params: Optional[Dict] = None, | |
| stream: bool = False, | |
| **kwargs): | |
| """ | |
| Generate LLM response using pthe rovided template and parameters. | |
| Args: | |
| prompt_template: Template object with format method | |
| generation_params: Optional generation parameters | |
| stream: Whether to stream the response | |
| **kwargs: Variables for prompt template | |
| Returns: | |
| API response object or streamed response | |
| Example: | |
| assistant.generate_response( | |
| prompt_template=template, | |
| temperature=0.7, | |
| topic="AI safety" | |
| ) | |
| """ | |
| messages = prompt_template.format(**kwargs) | |
| params = generation_params or {} | |
| completion = self.client.chat.completions.create( | |
| model=self.model, | |
| messages=messages, | |
| stream=stream, | |
| **params | |
| ) | |
| if stream: | |
| for chunk in completion: | |
| if chunk.choices[0].delta.content is not None: | |
| print(chunk.choices[0].delta.content, end="") | |
| return completion | |
| return completion |