Hybrid_search / llm_utils.py
Didier Guillevic
Adding app.y llm_utils.py and the build requirements.
fecab9d
""" llm_utils.py
Utilities for working with Large Language Models
:author: Didier Guillevic
:email: didier@guillevic.net
: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