Views
No views yet

<user>: and <assistant>: to distinguish between user and assistant utterances.apply_chat_template() method.1from transformers import AutoTokenizer
2
3tokenizer = AutoTokenizer.from_pretrained("bofenghuang/vigogne-2-13b-chat")
4
5conversation = [
6 {"role": "user", "content": "Bonjour ! Comment ça va aujourd'hui ?"},
7 {"role": "assistant", "content": "Bonjour ! Je suis une IA, donc je n'ai pas de sentiments, mais je suis prêt à vous aider. Comment puis-je vous assister aujourd'hui ?"},
8 {"role": "user", "content": "Quelle est la hauteur de la Tour Eiffel ?"},
9 {"role": "assistant", "content": "La Tour Eiffel mesure environ 330 mètres de hauteur."},
10 {"role": "user", "content": "Comment monter en haut ?"},
11]
12
13print(tokenizer.apply_chat_template(conversation, tokenize=False, add_generation_prompt=True))<s><|system|>: Vous êtes Vigogne, un assistant IA créé par Zaion Lab. Vous suivez extrêmement bien les instructions. Aidez autant que vous le pouvez.
<|user|>: Bonjour ! Comment ça va aujourd'hui ?
<|assistant|>: Bonjour ! Je suis une IA, donc je n'ai pas de sentiments, mais je suis prêt à vous aider. Comment puis-je vous assister aujourd'hui ?</s>
<|user|>: Quelle est la hauteur de la Tour Eiffel ?
<|assistant|>: La Tour Eiffel mesure environ 330 mètres de hauteur.</s>
<|user|>: Comment monter en haut ?
<|assistant|>:1from typing import Dict, List, Optional
2import torch
3from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig, TextStreamer
4
5model_name_or_path = "bofenghuang/vigogne-2-13b-chat"
6
7tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, padding_side="right", use_fast=False)
8model = AutoModelForCausalLM.from_pretrained(model_name_or_path, torch_dtype=torch.float16, device_map="auto")
9
10streamer = TextStreamer(tokenizer, timeout=10.0, skip_prompt=True, skip_special_tokens=True)
11
12
13def chat(
14 query: str,
15 history: Optional[List[Dict]] = None,
16 temperature: float = 0.7,
17 top_p: float = 1.0,
18 top_k: float = 0,
19 repetition_penalty: float = 1.1,
20 max_new_tokens: int = 1024,
21 **kwargs,
22):
23 if history is None:
24 history = []
25
26 history.append({"role": "user", "content": query})
27
28 input_ids = tokenizer.apply_chat_template(history, add_generation_prompt=True, return_tensors="pt").to(model.device)
29 input_length = input_ids.shape[1]
30
31 generated_outputs = model.generate(
32 input_ids=input_ids,
33 generation_config=GenerationConfig(
34 temperature=temperature,
35 do_sample=temperature > 0.0,
36 top_p=top_p,
37 top_k=top_k,
38 repetition_penalty=repetition_penalty,
39 max_new_tokens=max_new_tokens,
40 pad_token_id=tokenizer.eos_token_id,
41 **kwargs,
42 ),
43 streamer=streamer,
44 return_dict_in_generate=True,
45 )
46
47 generated_tokens = generated_outputs.sequences[0, input_length:]
48 generated_text = tokenizer.decode(generated_tokens, skip_special_tokens=True)
49
50 history.append({"role": "assistant", "content": generated_text})
51
52 return generated_text, history
53
54
55# 1st round
56response, history = chat("Un escargot parcourt 100 mètres en 5 heures. Quelle est sa vitesse ?", history=None)
57
58# 2nd round
59response, history = chat("Quand il peut dépasser le lapin ?", history=history)
60
61# 3rd round
62response, history = chat("Écris une histoire imaginative qui met en scène une compétition de course entre un escargot et un lapin.", history=history)1# Install vLLM
2# This may take 5-10 minutes.
3# pip install vllm
4
5# Start server for Vigogne-Chat models
6python -m vllm.entrypoints.openai.api_server --model bofenghuang/vigogne-2-13b-chat
7
8# List models
9# curl http://localhost:8000/v1/models1import openai
2
3# Modify OpenAI's API key and API base to use vLLM's API server.
4openai.api_key = "EMPTY"
5openai.api_base = "http://localhost:8000/v1"
6
7# First model
8models = openai.Model.list()
9model = models["data"][0]["id"]
10
11# Chat completion API
12chat_completion = openai.ChatCompletion.create(
13 model=model,
14 messages=[
15 {"role": "user", "content": "Parle-moi de toi-même."},
16 ],
17 max_tokens=1024,
18 temperature=0.7,
19)
20print("Chat completion results:", chat_completion)