Spaces:
Running
Running
| """ llm_utils.py | |
| Utilities for working with Large Language Models | |
| :author: Didier Guillevic | |
| :email: [email protected] | |
| :creation: 2024-12-28 | |
| """ | |
| import logging | |
| logger = logging.getLogger(__name__) | |
| logging.basicConfig(level=logging.INFO) | |
| import os | |
| from mistralai import Mistral | |
| # | |
| # Mistral AI client | |
| # | |
| api_key = os.environ["MISTRAL_API_KEY"] | |
| client = Mistral(api_key=api_key) | |
| model_id = "mistral-large-latest" # 128k context window | |
| # | |
| # Some functions | |
| # | |
| def generate_chat_response_streaming( | |
| query: str, | |
| context: str, | |
| max_new_tokens=1_024, | |
| temperature=0.0 | |
| ): | |
| """ | |
| """ | |
| # Instruction | |
| instruction = ( | |
| f"You will be given a question and list of context that might " | |
| f"be relevant to the question. " | |
| f"Do not include facts not contained in the provided context. " | |
| f"If no such relecant context provided to answer the question, " | |
| f"then soimply say so. Do not invent anything.\n\n" | |
| f"Question: {query}\n\n\n" | |
| f"Context:\n\n{context}" | |
| ) | |
| # messages | |
| messages = [] | |
| messages.append({'role': 'user', 'content': instruction}) | |
| #logger.info(messages) | |
| # Yield the model response as the tokens are being generated | |
| stream_reponse = client.chat.stream(model=model_id, messages=messages) | |
| return stream_reponse | |