vigostral-7b-chat / README.md
bofenghuang's picture
Add README.md
c9ca1be
|
raw
history blame
6.03 kB
metadata
language:
  - fr
pipeline_tag: text-generation
inference: false
tags:
  - LLM

Vigo-Mistral-7B-Chat: A French chat LLM

Preview of Vigo-Mistral-7B-Chat, which has been fine-tuned on Mistral-7B-v0.1.

License: A significant portion of the training data is distilled from GPT-3.5-Turbo and GPT-4, kindly use it cautiously to avoid any violations of OpenAI's terms of use.

Usage

from typing import Dict, List, Optional
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig, TextStreamer

model_name_or_path = "bofenghuang/vigo-mistral-7b-chat"
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, padding_side="right", use_fast=False)
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, torch_dtype=torch.float16, device_map="auto")

streamer = TextStreamer(tokenizer, timeout=10.0, skip_prompt=True, skip_special_tokens=True)


def chat(
    query: str,
    history: Optional[List[Dict]] = None,
    temperature: float = 0.7,
    top_p: float = 1.0,
    top_k: float = 0,
    repetition_penalty: float = 1.1,
    max_new_tokens: int = 1024,
    **kwargs,
):
    if history is None:
        history = []

    history.append({"role": "user", "content": query})

    input_ids = tokenizer.apply_chat_template(history, return_tensors="pt").to(model.device)
    input_length = input_ids.shape[1]

    generated_outputs = model.generate(
        input_ids=input_ids,
        generation_config=GenerationConfig(
            temperature=temperature,
            do_sample=temperature > 0.0,
            top_p=top_p,
            top_k=top_k,
            repetition_penalty=repetition_penalty,
            max_new_tokens=max_new_tokens,
            eos_token_id=tokenizer.eos_token_id,
            pad_token_id=tokenizer.pad_token_id,
            **kwargs,
        ),
        streamer=streamer,
        return_dict_in_generate=True,
    )

    generated_tokens = generated_outputs.sequences[0, input_length:]
    generated_text = tokenizer.decode(generated_tokens, skip_special_tokens=True)

    history.append({"role": "assistant", "content": generated_text})

    return generated_text, history

# 1st round
response, history = chat("Un escargot parcourt 100 mètres en 5 heures. Quelle est sa vitesse ?", history=None)
# Pour calculer la vitesse de l'escargot, nous devons diviser la distance parcourue (100 mètres) par le temps qu'il a pris pour la parcourir (5 heures). La formule pour cela est : vitesse = distance / temps.
# 
# Vitesse = 100 mètres / 5 heures
# Vitesse = 20 mètres par heure
# 
# L'escargot parcourt donc 20 mètres par heure.

# 2nd round
response, history = chat("Quand il peut dépasser le lapin ?", history=history)
# Il n'est pas possible de déterminer si un escargot peut dépasser un lapin sur une base de données uniquement concernant cette question. Les performances et les capacités des animaux varient considérablement en fonction de nombreux facteurs, tels que leur taille, leur santé, leurs talents et leur environnement. Par conséquent, pour déterminer si un escargot peut dépasser un lapin dans une course, vous auriez besoin d'examiner davantage de données et de connaissances sur ces deux animaux.

# 3rd round
response, history = chat("Écris une histoire imaginative qui met en scène une compétition de course entre un escargot et un lapin.", history=history)
# Une fois, dans un monde où les escargots et les lapins étaient capables de communiquer et de comprendre les langues des autres, une idée novatrice s'est imposée. Un jour, après avoir entendu les lapins parler de leur passion pour les courses en ligne droite, les escargots ont décidé de mettre à l'épreuve leur endurance et leur rapidité.
# 
# Les préparatifs pour cette course historique ont commencé. Le terrain de course était plat, sans obstacles ni courbes, afin d'éviter tout inconvénient. Les escargots, avec leur coquille brillante, se sont dotés d'une casquette pour ne pas être repéré facilement par leurs adversaires. Les lapins, quant à eux, ont mis la main sur un antidote pour neutraliser la glu qui pourrait les gêner.
# 
# Le jour du grand événement est arrivé, et les spectateurs étaient impatients. Sur le départ, les escargots ont profité de leur petite taille pour se faufiler au milieu du peloton. Ils avaient prévu de rester en fond de course jusqu'à ce qu'ils soient suffisamment loin du départ pour accélérer. Les lapins, conscients de la stratégie de leurs rivaux, ont échappé aux pièges initials et ont réussi à garder un certain espace entre eux et les escargots.
# 
# Au fur et à mesure que la course avançait, les lapins ont commencé à accélérer, profitant de leur avantage de vitesse. Cependant, les escargots étaient plus résistants qu'on ne le pensait. Ils ont graduellement augmenté leur rythme et ont fini par suivre les lapins, les encouragements des spectateurs s'intensifiant avec chaque mètre parcouru.
# 
# Finalement, après plusieurs heures de course éprouvante, les lapins et les escargots ont franchi la ligne d'arrivée ensemble. Ce nul-point a surpris et captivé les spectateurs qui, sous le souffle humide de la glu, ont applaudi longuement.
# 
# Les escargots et les lapins, à la suite de cette expérience unique, ont appris à respecter les forces et les limites de chacun. Ils se sont souvent retrouvés depuis lors pour partager leurs récits, et même pratiquer ensemble pour améliorer leurs performances.
# 
# Dans cet univers imaginaire, les escargots et les lapins ont thus démontré que la compétitivité n'a d'utilité que si elle est combinée à la compréhension et la tolérance. Cette histoire, racontée à travers les yeux d'un escargot, reste gravée dans les souvenirs des habitants de ce monde particulier.

For more information, please visit the Github repository.