Skip to content

Commit ade9ba8

Browse files
authored
Merge pull request #14 from lm-sys/main
merge
2 parents 8959971 + 185e1a9 commit ade9ba8

24 files changed

+1776
-580
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# FastChat
2-
| [**Demo**](https://lmarena.ai/) | [**Discord**](https://discord.gg/HSWAKCrnFx) | [**X**](https://x.com/lmsysorg) |
2+
| [**Demo**](https://lmarena.ai/) | [**Discord**](https://discord.gg/6GXcFg3TH8) | [**X**](https://x.com/lmsysorg) |
33

44
FastChat is an open platform for training, serving, and evaluating large language model based chatbots.
55
- FastChat powers Chatbot Arena ([lmarena.ai](https://lmarena.ai)), serving over 10 million chat requests for 70+ LLMs.

fastchat/constants.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77

88
REPO_PATH = os.path.dirname(os.path.dirname(__file__))
99

10-
# Survey Link URL (to be removed)
11-
SURVEY_LINK = """<div style='text-align: center; margin: 20px 0;'>
12-
<div style='display: inline-block; border: 2px solid #DE3163; padding: 10px; border-radius: 5px;'>
13-
<span style='color: #DE3163; font-weight: bold;'>We would love your feedback! Fill out <a href='https://docs.google.com/forms/d/e/1FAIpQLSfKSxwFOW6qD05phh4fwYjk8q0YV1VQe_bmK0_qOVTbC66_MA/viewform?usp=sf_link' style='color: #DE3163; text-decoration: underline;'>this short survey</a> to tell us what you like about the arena, what you don't like, and what you want to see in the future.</span>
10+
# Survey Link URL (to be removed) #00729c
11+
SURVEY_LINK = """<div style='text-align: left; margin: 20px 0;'>
12+
<div style='display: inline-block; border: 2px solid #C41E3A; padding: 20px; padding-bottom: 10px; padding-top: 10px; border-radius: 5px;'>
13+
<span style='color: #C41E3A; font-weight: bold;'>New Launch! Jailbreak models at <a href='https://redarena.ai' style='color: #C41E3A; text-decoration: underline;'>RedTeam Arena</a>. </span>
1414
</div>
1515
</div>"""
16+
# SURVEY_LINK = ""
1617

1718
##### For the gradio web server
1819
SERVER_ERROR_MSG = (
@@ -27,7 +28,9 @@
2728
MODERATION_MSG = "$MODERATION$ YOUR INPUT VIOLATES OUR CONTENT MODERATION GUIDELINES."
2829
CONVERSATION_LIMIT_MSG = "YOU HAVE REACHED THE CONVERSATION LENGTH LIMIT. PLEASE CLEAR HISTORY AND START A NEW CONVERSATION."
2930
INACTIVE_MSG = "THIS SESSION HAS BEEN INACTIVE FOR TOO LONG. PLEASE REFRESH THIS PAGE."
30-
SLOW_MODEL_MSG = "⚠️ Both models will show the responses all at once. Please stay patient as it may take over 30 seconds."
31+
SLOW_MODEL_MSG = (
32+
"⚠️ Models are thinking. Please stay patient as it may take over a minute."
33+
)
3134
RATE_LIMIT_MSG = "**RATE LIMIT OF THIS MODEL IS REACHED. PLEASE COME BACK LATER OR USE <span style='color: red; font-weight: bold;'>[BATTLE MODE](https://lmarena.ai)</span> (the 1st tab).**"
3235
# Maximum input length
3336
INPUT_CHAR_LEN_LIMIT = int(os.getenv("FASTCHAT_INPUT_CHAR_LEN_LIMIT", 12000))

fastchat/conversation.py

Lines changed: 221 additions & 21 deletions
Large diffs are not rendered by default.

fastchat/model/model_adapter.py

Lines changed: 74 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,13 @@
8484
"gpt2-chatbot",
8585
"im-also-a-good-gpt2-chatbot",
8686
"im-a-good-gpt2-chatbot",
87+
"gpt-4o-mini-2024-07-18",
8788
"gpt-4o-2024-05-13",
89+
"gpt-4o-2024-08-06",
90+
"chatgpt-4o-latest-20240903",
91+
"chatgpt-4o-latest",
92+
"o1-preview",
93+
"o1-mini",
8894
)
8995

9096

@@ -1118,8 +1124,20 @@ def get_default_conv_template(self, model_path: str) -> Conversation:
11181124
return get_conv_template("gpt-4-turbo-2024-04-09")
11191125
if "gpt2-chatbot" in model_path:
11201126
return get_conv_template("gpt-4-turbo-2024-04-09")
1121-
if "gpt-4o" in model_path:
1127+
if "gpt-4o-2024-05-13" in model_path:
11221128
return get_conv_template("gpt-4-turbo-2024-04-09")
1129+
if "gpt-4o-2024-08-06" in model_path:
1130+
return get_conv_template("gpt-mini")
1131+
if "anonymous-chatbot" in model_path:
1132+
return get_conv_template("gpt-4-turbo-2024-04-09")
1133+
if "chatgpt-4o-latest" in model_path:
1134+
return get_conv_template("gpt-4-turbo-2024-04-09")
1135+
if "gpt-mini" in model_path:
1136+
return get_conv_template("gpt-mini")
1137+
if "gpt-4o-mini-2024-07-18" in model_path:
1138+
return get_conv_template("gpt-mini")
1139+
if "o1" in model_path:
1140+
return get_conv_template("api_based_default")
11231141
return get_conv_template("chatgpt")
11241142

11251143

@@ -1167,7 +1185,7 @@ def get_default_conv_template(self, model_path: str) -> Conversation:
11671185
if "claude-3-sonnet" in model_path:
11681186
return get_conv_template("claude-3-sonnet-20240229")
11691187
if "claude-3-5-sonnet" in model_path:
1170-
return get_conv_template("claude-3-5-sonnet-20240620")
1188+
return get_conv_template("claude-3-5-sonnet-20240620-v2")
11711189
if "claude-3-opus" in model_path:
11721190
return get_conv_template("claude-3-opus-20240229")
11731191
return get_conv_template("claude")
@@ -1212,19 +1230,6 @@ def get_default_conv_template(self, model_path: str) -> Conversation:
12121230
return get_conv_template("gemini")
12131231

12141232

1215-
class GeminiDevAdapter(BaseModelAdapter):
1216-
"""The model adapter for Gemini 1.5 Pro"""
1217-
1218-
def match(self, model_path: str):
1219-
return "gemini-1.5-pro" in model_path.lower()
1220-
1221-
def load_model(self, model_path: str, from_pretrained_kwargs: dict):
1222-
raise NotImplementedError()
1223-
1224-
def get_default_conv_template(self, model_path: str) -> Conversation:
1225-
return get_conv_template("gemini-dev")
1226-
1227-
12281233
class BiLLaAdapter(BaseModelAdapter):
12291234
"""The model adapter for Neutralzz/BiLLa-7B-SFT"""
12301235

@@ -1589,7 +1594,7 @@ class Llama3Adapter(BaseModelAdapter):
15891594
"""The model adapter for Llama-3 (e.g., meta-llama/Meta-Llama-3-8B-Instruct)"""
15901595

15911596
def match(self, model_path: str):
1592-
return "llama-3" in model_path.lower()
1597+
return "llama-3-" in model_path.lower()
15931598

15941599
def load_model(self, model_path: str, from_pretrained_kwargs: dict):
15951600
model, tokenizer = super().load_model(model_path, from_pretrained_kwargs)
@@ -1601,6 +1606,43 @@ def get_default_conv_template(self, model_path: str) -> Conversation:
16011606
return get_conv_template("llama-3")
16021607

16031608

1609+
class Llama31Adapter(BaseModelAdapter):
1610+
"""The model adapter for Llama-3 (e.g., meta-llama/Meta-Llama-3-8B-Instruct)"""
1611+
1612+
def match(self, model_path: str):
1613+
keywords = [
1614+
"llama-3.1",
1615+
]
1616+
for keyword in keywords:
1617+
if keyword in model_path.lower():
1618+
return True
1619+
1620+
def load_model(self, model_path: str, from_pretrained_kwargs: dict):
1621+
model, tokenizer = super().load_model(model_path, from_pretrained_kwargs)
1622+
model.config.eos_token_id = tokenizer.eos_token_id
1623+
model.config.pad_token_id = tokenizer.pad_token_id
1624+
return model, tokenizer
1625+
1626+
def get_default_conv_template(self, model_path: str) -> Conversation:
1627+
if model_path.lower() in [
1628+
"llama-3.1-8b-instruct",
1629+
"llama-3.1-70b-instruct",
1630+
"the-real-chatbot-v2",
1631+
]:
1632+
return get_conv_template("meta-llama-3.1-sp")
1633+
return get_conv_template("meta-llama-3.1")
1634+
1635+
1636+
class GrokAdapter(BaseModelAdapter):
1637+
def match(self, model_path: str):
1638+
return "grok" in model_path.lower()
1639+
1640+
def get_default_conv_template(self, model_path: str) -> Conversation:
1641+
if "mini" in model_path.lower():
1642+
return get_conv_template("grok-2-mini")
1643+
return get_conv_template("grok-2")
1644+
1645+
16041646
class CuteGPTAdapter(BaseModelAdapter):
16051647
"""The model adapter for CuteGPT"""
16061648

@@ -2459,6 +2501,19 @@ def get_default_conv_template(self, model_path: str) -> Conversation:
24592501
return get_conv_template("api_based_default")
24602502

24612503

2504+
class NoSystemAdapter(BaseModelAdapter):
2505+
def match(self, model_path: str):
2506+
keyword_list = ["athene-70b"]
2507+
2508+
for keyword in keyword_list:
2509+
if keyword == model_path.lower():
2510+
return True
2511+
return False
2512+
2513+
def get_default_conv_template(self, model_path: str) -> Conversation:
2514+
return get_conv_template("api_based_default")
2515+
2516+
24622517
# Note: the registration order matters.
24632518
# The one registered earlier has a higher matching priority.
24642519
register_model_adapter(PeftModelAdapter)
@@ -2484,7 +2539,6 @@ def get_default_conv_template(self, model_path: str) -> Conversation:
24842539
register_model_adapter(BardAdapter)
24852540
register_model_adapter(PaLM2Adapter)
24862541
register_model_adapter(GeminiAdapter)
2487-
register_model_adapter(GeminiDevAdapter)
24882542
register_model_adapter(GemmaAdapter)
24892543
register_model_adapter(ChatGPTAdapter)
24902544
register_model_adapter(AzureOpenAIAdapter)
@@ -2559,6 +2613,9 @@ def get_default_conv_template(self, model_path: str) -> Conversation:
25592613
register_model_adapter(RekaAdapter)
25602614
register_model_adapter(SmaugChatAdapter)
25612615
register_model_adapter(Llama3Adapter)
2616+
register_model_adapter(Llama31Adapter)
2617+
register_model_adapter(GrokAdapter)
2618+
register_model_adapter(NoSystemAdapter)
25622619

25632620
# After all adapters, try the default base adapter.
25642621
register_model_adapter(BaseModelAdapter)

0 commit comments

Comments
 (0)