Skip to content

Commit 02943c7

Browse files
committed
update
2 parents a5d2ff7 + 7ca0d43 commit 02943c7

33 files changed

+2907
-1077
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: 246 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

@@ -1575,7 +1580,7 @@ class Llama3Adapter(BaseModelAdapter):
15751580
"""The model adapter for Llama-3 (e.g., meta-llama/Meta-Llama-3-8B-Instruct)"""
15761581

15771582
def match(self, model_path: str):
1578-
return "llama-3" in model_path.lower()
1583+
return "llama-3-" in model_path.lower()
15791584

15801585
def load_model(self, model_path: str, from_pretrained_kwargs: dict):
15811586
model, tokenizer = super().load_model(model_path, from_pretrained_kwargs)
@@ -1587,6 +1592,43 @@ def get_default_conv_template(self, model_path: str) -> Conversation:
15871592
return get_conv_template("llama-3")
15881593

15891594

1595+
class Llama31Adapter(BaseModelAdapter):
1596+
"""The model adapter for Llama-3 (e.g., meta-llama/Meta-Llama-3-8B-Instruct)"""
1597+
1598+
def match(self, model_path: str):
1599+
keywords = [
1600+
"llama-3.1",
1601+
]
1602+
for keyword in keywords:
1603+
if keyword in model_path.lower():
1604+
return True
1605+
1606+
def load_model(self, model_path: str, from_pretrained_kwargs: dict):
1607+
model, tokenizer = super().load_model(model_path, from_pretrained_kwargs)
1608+
model.config.eos_token_id = tokenizer.eos_token_id
1609+
model.config.pad_token_id = tokenizer.pad_token_id
1610+
return model, tokenizer
1611+
1612+
def get_default_conv_template(self, model_path: str) -> Conversation:
1613+
if model_path.lower() in [
1614+
"llama-3.1-8b-instruct",
1615+
"llama-3.1-70b-instruct",
1616+
"the-real-chatbot-v2",
1617+
]:
1618+
return get_conv_template("meta-llama-3.1-sp")
1619+
return get_conv_template("meta-llama-3.1")
1620+
1621+
1622+
class GrokAdapter(BaseModelAdapter):
1623+
def match(self, model_path: str):
1624+
return "grok" in model_path.lower()
1625+
1626+
def get_default_conv_template(self, model_path: str) -> Conversation:
1627+
if "mini" in model_path.lower():
1628+
return get_conv_template("grok-2-mini")
1629+
return get_conv_template("grok-2")
1630+
1631+
15901632
class CuteGPTAdapter(BaseModelAdapter):
15911633
"""The model adapter for CuteGPT"""
15921634

@@ -2445,6 +2487,19 @@ def get_default_conv_template(self, model_path: str) -> Conversation:
24452487
return get_conv_template("api_based_default")
24462488

24472489

2490+
class NoSystemAdapter(BaseModelAdapter):
2491+
def match(self, model_path: str):
2492+
keyword_list = ["athene-70b"]
2493+
2494+
for keyword in keyword_list:
2495+
if keyword == model_path.lower():
2496+
return True
2497+
return False
2498+
2499+
def get_default_conv_template(self, model_path: str) -> Conversation:
2500+
return get_conv_template("api_based_default")
2501+
2502+
24482503
# Note: the registration order matters.
24492504
# The one registered earlier has a higher matching priority.
24502505
register_model_adapter(PeftModelAdapter)
@@ -2470,7 +2525,6 @@ def get_default_conv_template(self, model_path: str) -> Conversation:
24702525
register_model_adapter(BardAdapter)
24712526
register_model_adapter(PaLM2Adapter)
24722527
register_model_adapter(GeminiAdapter)
2473-
register_model_adapter(GeminiDevAdapter)
24742528
register_model_adapter(GemmaAdapter)
24752529
register_model_adapter(ChatGPTAdapter)
24762530
register_model_adapter(AzureOpenAIAdapter)
@@ -2545,6 +2599,9 @@ def get_default_conv_template(self, model_path: str) -> Conversation:
25452599
register_model_adapter(RekaAdapter)
25462600
register_model_adapter(SmaugChatAdapter)
25472601
register_model_adapter(Llama3Adapter)
2602+
register_model_adapter(Llama31Adapter)
2603+
register_model_adapter(GrokAdapter)
2604+
register_model_adapter(NoSystemAdapter)
25482605

25492606
# After all adapters, try the default base adapter.
25502607
register_model_adapter(BaseModelAdapter)

0 commit comments

Comments
 (0)