黄腾 aopstudio commited on
Commit
61bc209
·
1 Parent(s): 17f4221

add support for SILICONFLOW (#1926)

Browse files

### What problem does this PR solve?

#1853 add support for SILICONFLOW

### Type of change


- [x] New Feature (non-breaking change which adds functionality)

---------

Co-authored-by: Zhedong Cen <[email protected]>

conf/llm_factories.json CHANGED
@@ -2767,6 +2767,290 @@
2767
  "model_type": "chat"
2768
  }
2769
  ]
2770
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2771
  ]
2772
  }
 
2767
  "model_type": "chat"
2768
  }
2769
  ]
2770
+ },
2771
+ {
2772
+ "name": "SILICONFLOW",
2773
+ "logo": "",
2774
+ "tags": "LLM,TEXT EMBEDDING,TEXT RE-RANK",
2775
+ "status": "1",
2776
+ "llm": [
2777
+ {
2778
+ "llm_name": "Qwen/Qwen2-7B-Instruct",
2779
+ "tags": "LLM,CHAT,32k",
2780
+ "max_tokens": 32768,
2781
+ "model_type": "chat"
2782
+ },
2783
+ {
2784
+ "llm_name": "Qwen/Qwen2-1.5B-Instruct",
2785
+ "tags": "LLM,CHAT,32k",
2786
+ "max_tokens": 32768,
2787
+ "model_type": "chat"
2788
+ },
2789
+ {
2790
+ "llm_name": "Qwen/Qwen1.5-7B-Chat",
2791
+ "tags": "LLM,CHAT,32k",
2792
+ "max_tokens": 32768,
2793
+ "model_type": "chat"
2794
+ },
2795
+ {
2796
+ "llm_name": "THUDM/glm-4-9b-chat",
2797
+ "tags": "LLM,CHAT,32k",
2798
+ "max_tokens": 32768,
2799
+ "model_type": "chat"
2800
+ },
2801
+ {
2802
+ "llm_name": "THUDM/chatglm3-6b",
2803
+ "tags": "LLM,CHAT,32k",
2804
+ "max_tokens": 32768,
2805
+ "model_type": "chat"
2806
+ },
2807
+ {
2808
+ "llm_name": "01-ai/Yi-1.5-9B-Chat-16K",
2809
+ "tags": "LLM,CHAT,16k",
2810
+ "max_tokens": 16384,
2811
+ "model_type": "chat"
2812
+ },
2813
+ {
2814
+ "llm_name": "01-ai/Yi-1.5-6B-Chat",
2815
+ "tags": "LLM,CHAT,4k",
2816
+ "max_tokens": 4096,
2817
+ "model_type": "chat"
2818
+ },
2819
+ {
2820
+ "llm_name": "google/gemma-2-9b-it",
2821
+ "tags": "LLM,CHAT,8k",
2822
+ "max_tokens": 8192,
2823
+ "model_type": "chat"
2824
+ },
2825
+ {
2826
+ "llm_name": "internlm/internlm2_5-7b-chat",
2827
+ "tags": "LLM,CHAT,32k",
2828
+ "max_tokens": 32768,
2829
+ "model_type": "chat"
2830
+ },
2831
+ {
2832
+ "llm_name": "meta-llama/Meta-Llama-3-8B-Instruct",
2833
+ "tags": "LLM,CHAT,8k",
2834
+ "max_tokens": 8192,
2835
+ "model_type": "chat"
2836
+ },
2837
+ {
2838
+ "llm_name": "meta-llama/Meta-Llama-3.1-8B-Instruct",
2839
+ "tags": "LLM,CHAT,8k",
2840
+ "max_tokens": 8192,
2841
+ "model_type": "chat"
2842
+ },
2843
+ {
2844
+ "llm_name": "mistralai/Mistral-7B-Instruct-v0.2",
2845
+ "tags": "LLM,CHAT,32k",
2846
+ "max_tokens": 32768,
2847
+ "model_type": "chat"
2848
+ },
2849
+ {
2850
+ "llm_name": "Pro/Qwen/Qwen2-7B-Instruct",
2851
+ "tags": "LLM,CHAT,32k",
2852
+ "max_tokens": 32768,
2853
+ "model_type": "chat"
2854
+ },
2855
+ {
2856
+ "llm_name": "Pro/Qwen/Qwen2-1.5B-Instruct",
2857
+ "tags": "LLM,CHAT,32k",
2858
+ "max_tokens": 32768,
2859
+ "model_type": "chat"
2860
+ },
2861
+ {
2862
+ "llm_name": "Pro/Qwen/Qwen1.5-7B-Chat",
2863
+ "tags": "LLM,CHAT,32k",
2864
+ "max_tokens": 32768,
2865
+ "model_type": "chat"
2866
+ },
2867
+ {
2868
+ "llm_name": "Pro/THUDM/glm-4-9b-chat",
2869
+ "tags": "LLM,CHAT,32k",
2870
+ "max_tokens": 32768,
2871
+ "model_type": "chat"
2872
+ },
2873
+ {
2874
+ "llm_name": "Pro/THUDM/chatglm3-6b",
2875
+ "tags": "LLM,CHAT,32k",
2876
+ "max_tokens": 32768,
2877
+ "model_type": "chat"
2878
+ },
2879
+ {
2880
+ "llm_name": "Pro/01-ai/Yi-1.5-9B-Chat-16K",
2881
+ "tags": "LLM,CHAT,16k",
2882
+ "max_tokens": 16384,
2883
+ "model_type": "chat"
2884
+ },
2885
+ {
2886
+ "llm_name": "Pro/01-ai/Yi-1.5-6B-Chat",
2887
+ "tags": "LLM,CHAT,4k",
2888
+ "max_tokens": 4096,
2889
+ "model_type": "chat"
2890
+ },
2891
+ {
2892
+ "llm_name": "Pro/internlm/internlm2_5-7b-chat",
2893
+ "tags": "LLM,CHAT,32k",
2894
+ "max_tokens": 32768,
2895
+ "model_type": "chat"
2896
+ },
2897
+ {
2898
+ "llm_name": "Pro/google/gemma-2-9b-it",
2899
+ "tags": "LLM,CHAT,8k",
2900
+ "max_tokens": 8192,
2901
+ "model_type": "chat"
2902
+ },
2903
+ {
2904
+ "llm_name": "Pro/meta-llama/Meta-Llama-3.1-8B-Instruct",
2905
+ "tags": "LLM,CHAT,32k",
2906
+ "max_tokens": 32768,
2907
+ "model_type": "chat"
2908
+ },
2909
+ {
2910
+ "llm_name": "Pro/meta-llama/Meta-Llama-3-8B-Instruct",
2911
+ "tags": "LLM,CHAT,8k",
2912
+ "max_tokens": 8192,
2913
+ "model_type": "chat"
2914
+ },
2915
+ {
2916
+ "llm_name": "Pro/mistralai/Mistral-7B-Instruct-v0.2",
2917
+ "tags": "LLM,CHAT,32k",
2918
+ "max_tokens": 32768,
2919
+ "model_type": "chat"
2920
+ },
2921
+ {
2922
+ "llm_name": "Qwen/Qwen2-72B-Instruct",
2923
+ "tags": "LLM,CHAT,32k",
2924
+ "max_tokens": 32768,
2925
+ "model_type": "chat"
2926
+ },
2927
+ {
2928
+ "llm_name": "Qwen/Qwen2-Math-72B-Instruct",
2929
+ "tags": "LLM,CHAT,32k",
2930
+ "max_tokens": 32768,
2931
+ "model_type": "chat"
2932
+ },
2933
+ {
2934
+ "llm_name": "Qwen/Qwen2-57B-A14B-Instruct",
2935
+ "tags": "LLM,CHAT,32k",
2936
+ "max_tokens": 32768,
2937
+ "model_type": "chat"
2938
+ },
2939
+ {
2940
+ "llm_name": "Qwen/Qwen1.5-110B-Chat",
2941
+ "tags": "LLM,CHAT,32k",
2942
+ "max_tokens": 32768,
2943
+ "model_type": "chat"
2944
+ },
2945
+ {
2946
+ "llm_name": "Qwen/Qwen1.5-32B-Chat",
2947
+ "tags": "LLM,CHAT,32k",
2948
+ "max_tokens": 32768,
2949
+ "model_type": "chat"
2950
+ },
2951
+ {
2952
+ "llm_name": "Qwen/Qwen1.5-14B-Chat",
2953
+ "tags": "LLM,CHAT,32k",
2954
+ "max_tokens": 32768,
2955
+ "model_type": "chat"
2956
+ },
2957
+ {
2958
+ "llm_name": "01-ai/Yi-1.5-34B-Chat-16K",
2959
+ "tags": "LLM,CHAT,16k",
2960
+ "max_tokens": 16384,
2961
+ "model_type": "chat"
2962
+ },
2963
+ {
2964
+ "llm_name": "deepseek-ai/DeepSeek-Coder-V2-Instruct",
2965
+ "tags": "LLM,CHAT,32k",
2966
+ "max_tokens": 32768,
2967
+ "model_type": "chat"
2968
+ },
2969
+ {
2970
+ "llm_name": "deepseek-ai/DeepSeek-V2-Chat",
2971
+ "tags": "LLM,CHAT,32k",
2972
+ "max_tokens": 32768,
2973
+ "model_type": "chat"
2974
+ },
2975
+ {
2976
+ "llm_name": "deepseek-ai/deepseek-llm-67b-chat",
2977
+ "tags": "LLM,CHAT,4k",
2978
+ "max_tokens": 4096,
2979
+ "model_type": "chat"
2980
+ },
2981
+ {
2982
+ "llm_name": "internlm/internlm2_5-20b-chat",
2983
+ "tags": "LLM,CHAT,32k",
2984
+ "max_tokens": 32768,
2985
+ "model_type": "chat"
2986
+ },
2987
+ {
2988
+ "llm_name": "meta-llama/Meta-Llama-3.1-405B-Instruct",
2989
+ "tags": "LLM,CHAT,32k",
2990
+ "max_tokens": 32768,
2991
+ "model_type": "chat"
2992
+ },
2993
+ {
2994
+ "llm_name": "meta-llama/Meta-Llama-3.1-70B-Instruct",
2995
+ "tags": "LLM,CHAT,32k",
2996
+ "max_tokens": 32768,
2997
+ "model_type": "chat"
2998
+ },
2999
+ {
3000
+ "llm_name": "meta-llama/Meta-Llama-3-70B-Instruct",
3001
+ "tags": "LLM,CHAT,32k",
3002
+ "max_tokens": 32768,
3003
+ "model_type": "chat"
3004
+ },
3005
+ {
3006
+ "llm_name": "mistralai/Mixtral-8x7B-Instruct-v0.1",
3007
+ "tags": "LLM,CHAT,32k",
3008
+ "max_tokens": 32768,
3009
+ "model_type": "chat"
3010
+ },
3011
+ {
3012
+ "llm_name": "google/gemma-2-27b-it",
3013
+ "tags": "LLM,CHAT,8k",
3014
+ "max_tokens": 8192,
3015
+ "model_type": "chat"
3016
+ },
3017
+ {
3018
+ "llm_name": "BAAI/bge-m3 ",
3019
+ "tags": "TEXT EMBEDDING,8K",
3020
+ "max_tokens": 8192,
3021
+ "model_type": "embedding"
3022
+ },
3023
+ {
3024
+ "llm_name": "BAAI/bge-large-en-v1.5 ",
3025
+ "tags": "TEXT EMBEDDING,512",
3026
+ "max_tokens": 512,
3027
+ "model_type": "embedding"
3028
+ },
3029
+ {
3030
+ "llm_name": "BAAI/bge-large-zh-v1.5 ",
3031
+ "tags": "TEXT EMBEDDING,512",
3032
+ "max_tokens": 512,
3033
+ "model_type": "embedding"
3034
+ },
3035
+ {
3036
+ "llm_name": "netease-youdao/bce-embedding-base_vl",
3037
+ "tags": "TEXT EMBEDDING,512",
3038
+ "max_tokens": 512,
3039
+ "model_type": "embedding"
3040
+ },
3041
+ {
3042
+ "llm_name": "BAAI/bge-reranker-v2-m3",
3043
+ "tags": "RE-RANK, 512",
3044
+ "max_tokens": 1024,
3045
+ "model_type": "rerank"
3046
+ },
3047
+ {
3048
+ "llm_name": "netease-youdao/bce-reranker-base-v1",
3049
+ "tags": "RE-RANK, 512",
3050
+ "max_tokens": 1024,
3051
+ "model_type": "rerank"
3052
+ }
3053
+ ]
3054
+ }
3055
  ]
3056
  }
rag/llm/__init__.py CHANGED
@@ -41,7 +41,8 @@ EmbeddingModel = {
41
  "cohere": CoHereEmbed,
42
  "TogetherAI": TogetherAIEmbed,
43
  "PerfXCloud": PerfXCloudEmbed,
44
- "Upstage": UpstageEmbed
 
45
  }
46
 
47
 
@@ -92,7 +93,8 @@ ChatModel = {
92
  "TogetherAI": TogetherAIChat,
93
  "PerfXCloud": PerfXCloudChat,
94
  "Upstage":UpstageChat,
95
- "novita.ai": NovitaAIChat
 
96
  }
97
 
98
 
@@ -105,7 +107,8 @@ RerankModel = {
105
  "LM-Studio": LmStudioRerank,
106
  "OpenAI-API-Compatible": OpenAI_APIRerank,
107
  "cohere": CoHereRerank,
108
- "TogetherAI": TogetherAIRerank
 
109
  }
110
 
111
 
 
41
  "cohere": CoHereEmbed,
42
  "TogetherAI": TogetherAIEmbed,
43
  "PerfXCloud": PerfXCloudEmbed,
44
+ "Upstage": UpstageEmbed,
45
+ "SILICONFLOW": SILICONFLOWEmbed
46
  }
47
 
48
 
 
93
  "TogetherAI": TogetherAIChat,
94
  "PerfXCloud": PerfXCloudChat,
95
  "Upstage":UpstageChat,
96
+ "novita.ai": NovitaAIChat,
97
+ "SILICONFLOW": SILICONFLOWChat
98
  }
99
 
100
 
 
107
  "LM-Studio": LmStudioRerank,
108
  "OpenAI-API-Compatible": OpenAI_APIRerank,
109
  "cohere": CoHereRerank,
110
+ "TogetherAI": TogetherAIRerank,
111
+ "SILICONFLOW": SILICONFLOWRerank
112
  }
113
 
114
 
rag/llm/chat_model.py CHANGED
@@ -1016,4 +1016,10 @@ class NovitaAIChat(Base):
1016
  if not base_url:
1017
  base_url = "https://api.novita.ai/v3/openai"
1018
  super().__init__(key, model_name, base_url)
1019
-
 
 
 
 
 
 
 
1016
  if not base_url:
1017
  base_url = "https://api.novita.ai/v3/openai"
1018
  super().__init__(key, model_name, base_url)
1019
+
1020
+
1021
+ class SILICONFLOWChat(Base):
1022
+ def __init__(self, key, model_name, base_url="https://api.siliconflow.cn/v1"):
1023
+ if not base_url:
1024
+ base_url = "https://api.siliconflow.cn/v1"
1025
+ super().__init__(key, model_name, base_url)
rag/llm/embedding_model.py CHANGED
@@ -574,3 +574,10 @@ class UpstageEmbed(OpenAIEmbed):
574
  if not base_url:
575
  base_url = "https://api.upstage.ai/v1/solar"
576
  super().__init__(key, model_name, base_url)
 
 
 
 
 
 
 
 
574
  if not base_url:
575
  base_url = "https://api.upstage.ai/v1/solar"
576
  super().__init__(key, model_name, base_url)
577
+
578
+
579
+ class SILICONFLOWEmbed(OpenAIEmbed):
580
+ def __init__(self, key, model_name, base_url="https://api.siliconflow.cn/v1"):
581
+ if not base_url:
582
+ base_url = "https://api.siliconflow.cn/v1"
583
+ super().__init__(key, model_name, base_url)
rag/llm/rerank_model.py CHANGED
@@ -252,4 +252,39 @@ class TogetherAIRerank(Base):
252
  pass
253
 
254
  def similarity(self, query: str, texts: list):
255
- raise NotImplementedError("The api has not been implement")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252
  pass
253
 
254
  def similarity(self, query: str, texts: list):
255
+ raise NotImplementedError("The api has not been implement")
256
+
257
+
258
+ class SILICONFLOWRerank(Base):
259
+ def __init__(
260
+ self, key, model_name, base_url="https://api.siliconflow.cn/v1/rerank"
261
+ ):
262
+ if not base_url:
263
+ base_url = "https://api.siliconflow.cn/v1/rerank"
264
+ self.model_name = model_name
265
+ self.base_url = base_url
266
+ self.headers = {
267
+ "accept": "application/json",
268
+ "content-type": "application/json",
269
+ "authorization": f"Bearer {key}",
270
+ }
271
+
272
+ def similarity(self, query: str, texts: list):
273
+ payload = {
274
+ "model": self.model_name,
275
+ "query": query,
276
+ "documents": texts,
277
+ "top_n": len(texts),
278
+ "return_documents": False,
279
+ "max_chunks_per_doc": 1024,
280
+ "overlap_tokens": 80,
281
+ }
282
+ response = requests.post(
283
+ self.base_url, json=payload, headers=self.headers
284
+ ).json()
285
+ rank = np.array([d["relevance_score"] for d in response["results"]])
286
+ indexs = [d["index"] for d in response["results"]]
287
+ return (
288
+ rank[indexs],
289
+ response["meta"]["tokens"]["input_tokens"] + response["meta"]["tokens"]["output_tokens"],
290
+ )
web/src/assets/svg/llm/siliconflow.svg ADDED
web/src/pages/user-setting/setting-model/constant.ts CHANGED
@@ -28,7 +28,8 @@ export const IconMap = {
28
  TogetherAI:'together-ai',
29
  PerfXCould: 'perfx-could',
30
  Upstage: 'upstage',
31
- "novita.ai": 'novita-ai'
 
32
  };
33
 
34
  export const BedrockRegionList = [
 
28
  TogetherAI:'together-ai',
29
  PerfXCould: 'perfx-could',
30
  Upstage: 'upstage',
31
+ "novita.ai": 'novita-ai',
32
+ "SILICONFLOW": 'siliconflow'
33
  };
34
 
35
  export const BedrockRegionList = [