no_nonsense_bot / app.py
jingwang's picture
Update app.py
9b4627e verified
import gradio as gr
from huggingface_hub import InferenceClient
import os
from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage
client = MistralClient(api_key= os.getenv('mistral_api_key'))
# Function to get chat response
def get_mistral_response(user_input: str, history: list[tuple[str, str]], context: str):
messages = [ChatMessage(role='user', content='you are helpful assistant answering question based on given context. provide a highly consie and precise answer, along with a citation from original context in the format of JSON.'),
ChatMessage(role='assistant', content='I understand.')] # system prompt has been baked into fine-tuned model.
context_with_history = context # placeholder
response_after = client.chat(
model='ft:open-mistral-7b:1c04df3c:20240629:7010a3c8',
messages=[ChatMessage(role='user', content=f'''CONTEXT:{context_with_history} QUESTION: {user_input}''')]
).choices[0].message.content
response_before = client.chat(
model='open-mistral-7b',
messages=[ChatMessage(role='user', content=f'''CONTEXT:{context_with_history} QUESTION: {user_input}''')]
).choices[0].message.content
response = f"""**Before fine-tune**: <br> {response_before} <br><br> **After fine-tune**:<br><span style="color:green"> {response_after} </span><br>"""
return response
demo = gr.ChatInterface(
get_mistral_response,
title='no-nonsense QA bot',
description="After fine-tuning, the bot answers your question with a grounded citation. Paste your contextual information in the box below.",
additional_inputs=[
gr.Textbox(value="", label="Answer will be based on the context input here", lines=5),
],
additional_inputs_accordion = gr.Accordion(label="", open=False),
)
if __name__ == "__main__":
demo.launch()