ChatBot / serveur_mcp.py
Eddyhzd
TEST
1823435
raw
history blame
1.38 kB
import pandas as pd
from datasets import load_dataset
from transformers import pipeline
from mcp.server.fastmcp import FastMCPServer
# Charger dataset Hugging Face privé
dataset = load_dataset("HackathonCRA/2024", split="train")
df = dataset.to_pandas()
# Charger Mistral
mistral = pipeline("text-generation", model="mistralai/Mistral-7B-Instruct-v0.2", device_map="auto")
# Créer serveur MCP
server = FastMCPServer("csv_analyzer")
@server.tool()
def list_columns() -> list[str]:
"""Retourne la liste des colonnes disponibles dans le CSV."""
return df.columns.tolist()
@server.tool()
def filter_rows(column: str, value: str, limit: int = 5) -> list[dict]:
"""Retourne des lignes où column == value."""
if column not in df.columns:
return [{"error": f"Colonne {column} inexistante"}]
subset = df[df[column] == value].head(limit)
return subset.to_dict(orient="records")
@server.tool()
def analyze_data(question: str) -> str:
"""Interprète les données CSV avec Mistral."""
# On résume rapidement le dataframe
sample = df.head(20).to_string()
prompt = f"""
Voici un extrait de données tabulaires :
{sample}
Question: {question}
Réponds de manière concise et claire.
"""
output = mistral(prompt, max_new_tokens=256)[0]["generated_text"]
return output
if __name__ == "__main__":
server.run()