John6666 commited on
Commit
71b9aa7
·
verified ·
1 Parent(s): eaf3496

Upload llmdolphin.py

Browse files
Files changed (1) hide show
  1. llmdolphin.py +71 -33
llmdolphin.py CHANGED
@@ -3,6 +3,7 @@ import gradio as gr
3
  from pathlib import Path
4
  import re
5
  import torch
 
6
  from huggingface_hub import hf_hub_download, HfApi
7
  from llama_cpp import Llama
8
  from llama_cpp_agent import LlamaCppAgent, MessagesFormatterType
@@ -75,6 +76,27 @@ llm_models = {
75
  "ChatWaifu_22B_v2.0_preview.Q4_K_S.gguf": ["mradermacher/ChatWaifu_22B_v2.0_preview-GGUF", MessagesFormatterType.MISTRAL],
76
  "ChatWaifu_v1.4.Q5_K_M.gguf": ["mradermacher/ChatWaifu_v1.4-GGUF", MessagesFormatterType.MISTRAL],
77
  "ChatWaifu_v1.3.1.Q4_K_M.gguf": ["mradermacher/ChatWaifu_v1.3.1-GGUF", MessagesFormatterType.MISTRAL],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  "Fraken-Maid-TW-Slerp.i1-Q5_K_M.gguf": ["mradermacher/Fraken-Maid-TW-Slerp-i1-GGUF", MessagesFormatterType.MISTRAL],
79
  "KunoichiLake-2x7b.Q4_K_M.gguf": ["mradermacher/KunoichiLake-2x7b-GGUF", MessagesFormatterType.MISTRAL],
80
  "Llama-3.1-SuperNova-8B-Lite_TIES_with_Base-Q4_K_M.gguf": ["bartowski/Llama-3.1-SuperNova-8B-Lite_TIES_with_Base-GGUF", MessagesFormatterType.LLAMA_3],
@@ -908,25 +930,35 @@ llm_formats = {
908
  llm_languages = ["English", "Japanese", "Chinese", "Korean", "Spanish", "Portuguese", "German", "French", "Finnish", "Russian"]
909
  llm_models_tupled_list = []
910
  default_llm_model_filename = list(llm_models.keys())[0]
911
- override_llm_format = None
912
  device = "cuda" if torch.cuda.is_available() else "cpu"
913
 
914
 
915
- def to_list(s):
916
  return [x.strip() for x in s.split(",") if not s == ""]
917
 
918
 
919
- def list_uniq(l):
920
  return sorted(set(l), key=l.index)
921
 
922
 
 
 
 
 
 
 
 
 
 
 
 
923
  @wrapt_timeout_decorator.timeout(dec_timeout=3.5)
924
- def to_list_ja(s):
925
  s = re.sub(r'[、。]', ',', s)
926
  return [x.strip() for x in s.split(",") if not s == ""]
927
 
928
 
929
- def is_japanese(s):
930
  import unicodedata
931
  for ch in s:
932
  name = unicodedata.name(ch, "")
@@ -964,7 +996,7 @@ def download_llm_models():
964
  llm_models_tupled_list.append((name, value))
965
 
966
 
967
- def download_llm_model(filename):
968
  if not filename in llm_models.keys(): return default_llm_model_filename
969
  try:
970
  hf_hub_download(repo_id = llm_models[filename][0], filename = filename, local_dir = llm_models_dir)
@@ -975,7 +1007,7 @@ def download_llm_model(filename):
975
  return filename
976
 
977
 
978
- def get_dolphin_model_info(filename):
979
  md = "None"
980
  items = llm_models.get(filename, None)
981
  if items:
@@ -983,20 +1015,18 @@ def get_dolphin_model_info(filename):
983
  return md
984
 
985
 
986
- def select_dolphin_model(filename, progress=gr.Progress(track_tqdm=True)):
987
- global override_llm_format
988
- override_llm_format = None
989
  progress(0, desc="Loading model...")
990
  value = download_llm_model(filename)
991
  progress(1, desc="Model loaded.")
992
  md = get_dolphin_model_info(filename)
993
- return gr.update(value=value, choices=get_dolphin_models()), gr.update(value=get_dolphin_model_format(value)), gr.update(value=md)
994
 
995
 
996
- def select_dolphin_format(format_name):
997
- global override_llm_format
998
- override_llm_format = llm_formats[format_name]
999
- return gr.update(value=format_name)
1000
 
1001
 
1002
  download_llm_model(default_llm_model_filename)
@@ -1017,14 +1047,14 @@ def get_key_from_value(d, val):
1017
  return None
1018
 
1019
 
1020
- def get_dolphin_model_format(filename):
1021
  if not filename in llm_models.keys(): filename = default_llm_model_filename
1022
  format = llm_models[filename][1]
1023
  format_name = get_key_from_value(llm_formats, format)
1024
  return format_name
1025
 
1026
 
1027
- def add_dolphin_models(query, format_name):
1028
  global llm_models
1029
  api = HfApi()
1030
  add_models = {}
@@ -1055,8 +1085,6 @@ def add_dolphin_models(query, format_name):
1055
  return gr.update(choices=choices, value=choices[-1][1])
1056
 
1057
 
1058
- dolphin_output_language = "English"
1059
- dolphin_sysprompt_mode = "Default"
1060
  dolphin_system_prompt = {"Default": r'''You are a helpful AI assistant to generate messages for AI that outputs an image when I enter a message.
1061
  The message must have the following [Tags] generated in strict accordance with the following [Rules]:
1062
  ```
@@ -1247,8 +1275,11 @@ Output should be enclosed in //GENBEGIN//:// and //://GENEND//. The text to be g
1247
  "Chat with LLM": r"You are a helpful AI assistant. Respond in <LANGUAGE>."}
1248
 
1249
 
1250
- def get_dolphin_sysprompt():
1251
- prompt = re.sub('<LANGUAGE>', dolphin_output_language, dolphin_system_prompt.get(dolphin_sysprompt_mode, ""))
 
 
 
1252
  return prompt
1253
 
1254
 
@@ -1256,23 +1287,21 @@ def get_dolphin_sysprompt_mode():
1256
  return list(dolphin_system_prompt.keys())
1257
 
1258
 
1259
- def select_dolphin_sysprompt(key: str):
1260
- global dolphin_sysprompt_mode
1261
- if not key in dolphin_system_prompt.keys():
1262
- dolphin_sysprompt_mode = "Default"
1263
- else:
1264
- dolphin_sysprompt_mode = key
1265
- return gr.update(value=get_dolphin_sysprompt())
1266
 
1267
 
1268
  def get_dolphin_languages():
1269
  return llm_languages
1270
 
1271
 
1272
- def select_dolphin_language(lang: str):
1273
- global dolphin_output_language
1274
- dolphin_output_language = lang
1275
- return gr.update(value=get_dolphin_sysprompt())
1276
 
1277
 
1278
  @wrapt_timeout_decorator.timeout(dec_timeout=5.0)
@@ -1293,11 +1322,12 @@ def dolphin_respond(
1293
  top_p: float = 0.95,
1294
  top_k: int = 40,
1295
  repeat_penalty: float = 1.1,
 
1296
  progress=gr.Progress(track_tqdm=True),
1297
  ):
1298
  try:
1299
  progress(0, desc="Processing...")
1300
-
1301
  if override_llm_format:
1302
  chat_template = override_llm_format
1303
  else:
@@ -1363,8 +1393,10 @@ def dolphin_respond(
1363
 
1364
  def dolphin_parse(
1365
  history: list[tuple[str, str]],
 
1366
  ):
1367
  try:
 
1368
  if dolphin_sysprompt_mode == "Chat with LLM" or not history or len(history) < 1:
1369
  return "", gr.update(), gr.update()
1370
  msg = history[-1][0]
@@ -1392,12 +1424,14 @@ def dolphin_respond_auto(
1392
  top_p: float = 0.95,
1393
  top_k: int = 40,
1394
  repeat_penalty: float = 1.1,
 
1395
  progress=gr.Progress(track_tqdm=True),
1396
  ):
1397
  try:
1398
  #if not is_japanese(message): return [(None, None)]
1399
  progress(0, desc="Processing...")
1400
 
 
1401
  if override_llm_format:
1402
  chat_template = override_llm_format
1403
  else:
@@ -1465,9 +1499,11 @@ def dolphin_respond_auto(
1465
  def dolphin_parse_simple(
1466
  message: str,
1467
  history: list[tuple[str, str]],
 
1468
  ):
1469
  try:
1470
  #if not is_japanese(message): return message
 
1471
  if dolphin_sysprompt_mode == "Chat with LLM" or not history or len(history) < 1: return message
1472
  msg = history[-1][0]
1473
  raw_prompt = get_raw_prompt(msg)
@@ -1499,8 +1535,10 @@ def respond_playground(
1499
  top_p,
1500
  top_k,
1501
  repeat_penalty,
 
1502
  ):
1503
  try:
 
1504
  if override_llm_format:
1505
  chat_template = override_llm_format
1506
  else:
 
3
  from pathlib import Path
4
  import re
5
  import torch
6
+ from typing import Any
7
  from huggingface_hub import hf_hub_download, HfApi
8
  from llama_cpp import Llama
9
  from llama_cpp_agent import LlamaCppAgent, MessagesFormatterType
 
76
  "ChatWaifu_22B_v2.0_preview.Q4_K_S.gguf": ["mradermacher/ChatWaifu_22B_v2.0_preview-GGUF", MessagesFormatterType.MISTRAL],
77
  "ChatWaifu_v1.4.Q5_K_M.gguf": ["mradermacher/ChatWaifu_v1.4-GGUF", MessagesFormatterType.MISTRAL],
78
  "ChatWaifu_v1.3.1.Q4_K_M.gguf": ["mradermacher/ChatWaifu_v1.3.1-GGUF", MessagesFormatterType.MISTRAL],
79
+ "dolphin-2.6-mistral-7b-dpo-laser.Q4_K_S.gguf": ["mradermacher/dolphin-2.6-mistral-7b-dpo-laser-GGUF", MessagesFormatterType.MISTRAL],
80
+ "Flowable-Docs-Llama-3.1-8B.Q5_K_M.gguf": ["mradermacher/Flowable-Docs-Llama-3.1-8B-GGUF", MessagesFormatterType.LLAMA_3],
81
+ "slimorca-gemma2-9b-fft.Q4_K_M.gguf": ["mradermacher/slimorca-gemma2-9b-fft-GGUF", MessagesFormatterType.ALPACA],
82
+ "TQ2.5-14B-Sugarquill-v1-Q4_K_M.gguf": ["bartowski/TQ2.5-14B-Sugarquill-v1-GGUF", MessagesFormatterType.OPEN_CHAT],
83
+ "magnum-v3-9b-customgemma2.i1-Q4_K_M.gguf": ["mradermacher/magnum-v3-9b-customgemma2-i1-GGUF", MessagesFormatterType.ALPACA],
84
+ "Captain_BMO-12B.Q4_K_M.gguf": ["mradermacher/Captain_BMO-12B-GGUF", MessagesFormatterType.MISTRAL],
85
+ "LemonP-8B-Model_Stock.i1-Q5_K_M.gguf": ["mradermacher/LemonP-8B-Model_Stock-i1-GGUF", MessagesFormatterType.LLAMA_3],
86
+ "Ice0.31-08.11-RP.i1-Q5_K_M.gguf": ["mradermacher/Ice0.31-08.11-RP-i1-GGUF", MessagesFormatterType.MISTRAL],
87
+ "EVA-Qwen2.5-14B-v0.2.i1-Q4_K_M.gguf": ["mradermacher/EVA-Qwen2.5-14B-v0.2-i1-GGUF", MessagesFormatterType.OPEN_CHAT],
88
+ "L3.1-Dark-Planet-SpinFire-Uncensored-8B-D_AU-Q4_k_m.gguf": ["DavidAU/L3.1-Dark-Planet-SpinFire-Uncensored-8B-GGUF", MessagesFormatterType.LLAMA_3],
89
+ "EndlessRP-v2-7B.Q5_K_M.gguf": ["mradermacher/EndlessRP-v2-7B-GGUF", MessagesFormatterType.MISTRAL],
90
+ "badger-lambda-0-llama-3-8b.i1-Q5_K_M.gguf": ["mradermacher/badger-lambda-0-llama-3-8b-i1-GGUF", MessagesFormatterType.LLAMA_3],
91
+ "L3.1-Artemis-e2-8B.i1-Q5_K_M.gguf": ["mradermacher/L3.1-Artemis-e2-8B-i1-GGUF", MessagesFormatterType.LLAMA_3],
92
+ "MN-12B-Inferor-v0.0.Q4_K_M.gguf": ["mradermacher/MN-12B-Inferor-v0.0-GGUF", MessagesFormatterType.MISTRAL],
93
+ "Eclipse-13B-dpo.i1-Q4_K_M.gguf": ["mradermacher/Eclipse-13B-dpo-i1-GGUF", MessagesFormatterType.MISTRAL],
94
+ "Epic_Fiction-8b-v0.1.Q5_K_M.gguf": ["mradermacher/Epic_Fiction-8b-v0.1-GGUF", MessagesFormatterType.MISTRAL],
95
+ "Llama-3-8B-StoryGenerator.i1-Q5_K_M.gguf": ["mradermacher/Llama-3-8B-StoryGenerator-i1-GGUF", MessagesFormatterType.LLAMA_3],
96
+ "badger-mu-llama-3-8b.i1-Q5_K_M.gguf": ["mradermacher/badger-mu-llama-3-8b-i1-GGUF", MessagesFormatterType.LLAMA_3],
97
+ "badger-writer-llama-3-8b.i1-Q5_K_M.gguf": ["mradermacher/badger-writer-llama-3-8b-i1-GGUF", MessagesFormatterType.LLAMA_3],
98
+ "Qwen-Rui-SE.Q5_K_M.gguf": ["mradermacher/Qwen-Rui-SE-GGUF", MessagesFormatterType.OPEN_CHAT],
99
+ "Valor-7B-v0.1.i1-Q4_K_M.gguf": ["mradermacher/Valor-7B-v0.1-i1-GGUF", MessagesFormatterType.MISTRAL],
100
  "Fraken-Maid-TW-Slerp.i1-Q5_K_M.gguf": ["mradermacher/Fraken-Maid-TW-Slerp-i1-GGUF", MessagesFormatterType.MISTRAL],
101
  "KunoichiLake-2x7b.Q4_K_M.gguf": ["mradermacher/KunoichiLake-2x7b-GGUF", MessagesFormatterType.MISTRAL],
102
  "Llama-3.1-SuperNova-8B-Lite_TIES_with_Base-Q4_K_M.gguf": ["bartowski/Llama-3.1-SuperNova-8B-Lite_TIES_with_Base-GGUF", MessagesFormatterType.LLAMA_3],
 
930
  llm_languages = ["English", "Japanese", "Chinese", "Korean", "Spanish", "Portuguese", "German", "French", "Finnish", "Russian"]
931
  llm_models_tupled_list = []
932
  default_llm_model_filename = list(llm_models.keys())[0]
 
933
  device = "cuda" if torch.cuda.is_available() else "cpu"
934
 
935
 
936
+ def to_list(s: str):
937
  return [x.strip() for x in s.split(",") if not s == ""]
938
 
939
 
940
+ def list_uniq(l: list):
941
  return sorted(set(l), key=l.index)
942
 
943
 
944
+ def get_state(state: dict, key: str):
945
+ if key in state.keys(): return state[key]
946
+ else:
947
+ print(f"State '{key}' not found.")
948
+ return None
949
+
950
+
951
+ def set_state(state: dict, key: str, value: Any):
952
+ state[key] = value
953
+
954
+
955
  @wrapt_timeout_decorator.timeout(dec_timeout=3.5)
956
+ def to_list_ja(s: str):
957
  s = re.sub(r'[、。]', ',', s)
958
  return [x.strip() for x in s.split(",") if not s == ""]
959
 
960
 
961
+ def is_japanese(s: str):
962
  import unicodedata
963
  for ch in s:
964
  name = unicodedata.name(ch, "")
 
996
  llm_models_tupled_list.append((name, value))
997
 
998
 
999
+ def download_llm_model(filename: str):
1000
  if not filename in llm_models.keys(): return default_llm_model_filename
1001
  try:
1002
  hf_hub_download(repo_id = llm_models[filename][0], filename = filename, local_dir = llm_models_dir)
 
1007
  return filename
1008
 
1009
 
1010
+ def get_dolphin_model_info(filename: str):
1011
  md = "None"
1012
  items = llm_models.get(filename, None)
1013
  if items:
 
1015
  return md
1016
 
1017
 
1018
+ def select_dolphin_model(filename: str, state: dict, progress=gr.Progress(track_tqdm=True)):
1019
+ set_state(state, "override_llm_format", None)
 
1020
  progress(0, desc="Loading model...")
1021
  value = download_llm_model(filename)
1022
  progress(1, desc="Model loaded.")
1023
  md = get_dolphin_model_info(filename)
1024
+ return gr.update(value=value, choices=get_dolphin_models()), gr.update(value=get_dolphin_model_format(value)), gr.update(value=md), state
1025
 
1026
 
1027
+ def select_dolphin_format(format_name: str, state: dict):
1028
+ set_state(state, "override_llm_format", llm_formats[format_name])
1029
+ return gr.update(value=format_name), state
 
1030
 
1031
 
1032
  download_llm_model(default_llm_model_filename)
 
1047
  return None
1048
 
1049
 
1050
+ def get_dolphin_model_format(filename: str):
1051
  if not filename in llm_models.keys(): filename = default_llm_model_filename
1052
  format = llm_models[filename][1]
1053
  format_name = get_key_from_value(llm_formats, format)
1054
  return format_name
1055
 
1056
 
1057
+ def add_dolphin_models(query: str, format_name: str):
1058
  global llm_models
1059
  api = HfApi()
1060
  add_models = {}
 
1085
  return gr.update(choices=choices, value=choices[-1][1])
1086
 
1087
 
 
 
1088
  dolphin_system_prompt = {"Default": r'''You are a helpful AI assistant to generate messages for AI that outputs an image when I enter a message.
1089
  The message must have the following [Tags] generated in strict accordance with the following [Rules]:
1090
  ```
 
1275
  "Chat with LLM": r"You are a helpful AI assistant. Respond in <LANGUAGE>."}
1276
 
1277
 
1278
+ def get_dolphin_sysprompt(state: dict={}):
1279
+ dolphin_sysprompt_mode = get_state(state, "dolphin_sysprompt_mode")
1280
+ dolphin_output_language = get_state(state, "dolphin_output_language")
1281
+ prompt = re.sub('<LANGUAGE>', dolphin_output_language if dolphin_output_language else llm_languages[0],
1282
+ dolphin_system_prompt.get(dolphin_sysprompt_mode, dolphin_system_prompt[list(dolphin_system_prompt.keys())[0]]))
1283
  return prompt
1284
 
1285
 
 
1287
  return list(dolphin_system_prompt.keys())
1288
 
1289
 
1290
+ def select_dolphin_sysprompt(key: str, state: dict):
1291
+ dolphin_sysprompt_mode = get_state(state, "dolphin_sysprompt_mode")
1292
+ if not key in dolphin_system_prompt.keys(): dolphin_sysprompt_mode = "Default"
1293
+ else: dolphin_sysprompt_mode = key
1294
+ set_state(state, "dolphin_sysprompt_mode", dolphin_sysprompt_mode)
1295
+ return gr.update(value=get_dolphin_sysprompt(state)), state
 
1296
 
1297
 
1298
  def get_dolphin_languages():
1299
  return llm_languages
1300
 
1301
 
1302
+ def select_dolphin_language(lang: str, state: dict):
1303
+ set_state(state, "dolphin_output_language", lang)
1304
+ return gr.update(value=get_dolphin_sysprompt(state)), state
 
1305
 
1306
 
1307
  @wrapt_timeout_decorator.timeout(dec_timeout=5.0)
 
1322
  top_p: float = 0.95,
1323
  top_k: int = 40,
1324
  repeat_penalty: float = 1.1,
1325
+ state: dict = {},
1326
  progress=gr.Progress(track_tqdm=True),
1327
  ):
1328
  try:
1329
  progress(0, desc="Processing...")
1330
+ override_llm_format = get_state(state, "override_llm_format")
1331
  if override_llm_format:
1332
  chat_template = override_llm_format
1333
  else:
 
1393
 
1394
  def dolphin_parse(
1395
  history: list[tuple[str, str]],
1396
+ state: dict,
1397
  ):
1398
  try:
1399
+ dolphin_sysprompt_mode = get_state(state, "dolphin_sysprompt_mode")
1400
  if dolphin_sysprompt_mode == "Chat with LLM" or not history or len(history) < 1:
1401
  return "", gr.update(), gr.update()
1402
  msg = history[-1][0]
 
1424
  top_p: float = 0.95,
1425
  top_k: int = 40,
1426
  repeat_penalty: float = 1.1,
1427
+ state: dict = {},
1428
  progress=gr.Progress(track_tqdm=True),
1429
  ):
1430
  try:
1431
  #if not is_japanese(message): return [(None, None)]
1432
  progress(0, desc="Processing...")
1433
 
1434
+ override_llm_format = get_state(state, "override_llm_format")
1435
  if override_llm_format:
1436
  chat_template = override_llm_format
1437
  else:
 
1499
  def dolphin_parse_simple(
1500
  message: str,
1501
  history: list[tuple[str, str]],
1502
+ state: dict,
1503
  ):
1504
  try:
1505
  #if not is_japanese(message): return message
1506
+ dolphin_sysprompt_mode = get_state(state, "dolphin_sysprompt_mode")
1507
  if dolphin_sysprompt_mode == "Chat with LLM" or not history or len(history) < 1: return message
1508
  msg = history[-1][0]
1509
  raw_prompt = get_raw_prompt(msg)
 
1535
  top_p,
1536
  top_k,
1537
  repeat_penalty,
1538
+ state,
1539
  ):
1540
  try:
1541
+ override_llm_format = get_state(state, "override_llm_format")
1542
  if override_llm_format:
1543
  chat_template = override_llm_format
1544
  else: