Spaces:
Runtime error
Runtime error
| """Chat LLM integration using NVIDIA NIM (llama-3.1-8b-instruct) with streaming.""" | |
| import logging | |
| import os | |
| from typing import Generator | |
| from openai import OpenAI | |
| logger = logging.getLogger(__name__) | |
| _NIM_BASE_URL = "https://integrate.api.nvidia.com/v1" | |
| _CHAT_MODEL = "meta/llama-3.1-8b-instruct" | |
| def _get_client() -> OpenAI: | |
| api_key = os.environ.get("NVIDIA_API_KEY") | |
| if not api_key: | |
| raise EnvironmentError("NVIDIA_API_KEY environment variable is not set.") | |
| return OpenAI(base_url=_NIM_BASE_URL, api_key=api_key) | |
| def chat_with_video( | |
| message: str, | |
| chat_history: list, | |
| system_prompt: str, | |
| ) -> Generator[str, None, None]: | |
| """Stream a response from the chat LLM given a user message and conversation history. | |
| chat_history is expected in Gradio's list-of-[user, assistant] format. | |
| Yields response text chunks for Gradio streaming. | |
| """ | |
| client = _get_client() | |
| messages = [{"role": "system", "content": system_prompt}] | |
| for pair in chat_history: | |
| if pair[0]: | |
| messages.append({"role": "user", "content": pair[0]}) | |
| if pair[1]: | |
| messages.append({"role": "assistant", "content": pair[1]}) | |
| messages.append({"role": "user", "content": message}) | |
| logger.info("Sending chat message to %s", _CHAT_MODEL) | |
| stream = client.chat.completions.create( | |
| model=_CHAT_MODEL, | |
| messages=messages, | |
| stream=True, | |
| max_tokens=1024, | |
| temperature=0.3, | |
| ) | |
| for chunk in stream: | |
| delta = chunk.choices[0].delta.content | |
| if delta: | |
| yield delta | |