File size: 2,721 Bytes
070c576 7156cc6 4661d50 070c576 aa834c5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import gradio as gr
from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage
import os
import pandas as pd
import numpy as np
def chat_with_mistral(source_cols, dest_col, prompt, tdoc_name, excel_file, url):
df = pd.read_excel(excel_file)
api_key = os.environ["MISTRAL_API_KEY"]
model = "mistral-small" # Use "Mistral-7B-v0.2" for "mistral-tiny"
client = MistralClient(api_key=api_key)
source_columns = source_cols#.split(", ") # Split input into multiple variables
df[dest_col] = ""
try:
file_name = url.split("/")[-2] + ".xlsx"
except:
file_name = excel_file
if tdoc_name != '':
filtered_df = df[df['File'] == tdoc_name]
if not filtered_df.empty:
concatenated_content = "\n\n".join(f"{column_name}: {filtered_df[column_name].iloc[0]}" for column_name in source_columns)
messages = [ChatMessage(role="user", content=f"Using the following content: {concatenated_content}"), ChatMessage(role="user", content=prompt)]
chat_response = client.chat(model=model, messages=messages)
filtered_df.loc[filtered_df.index[0], dest_col] = chat_response.choices[0].message.content
# Update the DataFrame with the modified row
df.update(filtered_df)
# Write the updated DataFrame to the Excel file
df.to_excel(file_name, index=False)
return file_name, df.head(5)
else:
return file_name, df.head(5)
else:
for index, row in df.iterrows():
concatenated_content = "\n\n".join(f"{column_name}: {row[column_name]}" for column_name in source_columns)
# Check if the concatenated content is not empty
print('test')
if not concatenated_content == "\n\n".join(f"{column_name}: nan" for column_name in source_columns):
print('c bon')
messages = [ChatMessage(role="user", content=f"Using the following content: {concatenated_content}"), ChatMessage(role="user", content=prompt)]
chat_response = client.chat(model=model, messages=messages)
df.at[index, dest_col] = chat_response.choices[0].message.content
df.to_excel(file_name, index=False)
return file_name, df.head(5)
def get_columns(file):
if file is not None:
df = pd.read_excel(file)
columns = list(df.columns)
return gr.update(choices=columns), gr.update(choices=columns), gr.update(choices=columns), gr.update(choices=columns + [""]), df.head(5)
else:
return gr.update(choices=[]), gr.update(choices=[]), gr.update(choices=[]), gr.update(choices=[]), pd.DataFrame() |