From f2b5ed09c0abed4dbf102737cf4f88d2b256ef50 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Sat, 20 Jul 2024 11:29:24 +0800 Subject: [PATCH] feat(provider): add AiHubMix provider --- .../src/assets/images/providers/aihubmix.jpg | Bin 0 -> 9567 bytes .../src/assets/images/providers/baichuan.png | Bin 2668 -> 5253 bytes src/renderer/src/config/models.ts | 16 +++++++++++++ src/renderer/src/config/provider.ts | 11 +++++++++ src/renderer/src/i18n/index.ts | 6 +++-- .../src/pages/settings/ProviderSettings.tsx | 10 ++++----- src/renderer/src/store/index.ts | 2 +- src/renderer/src/store/llm.ts | 9 ++++++++ src/renderer/src/store/migrate.ts | 21 ++++++++++++++++++ 9 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 src/renderer/src/assets/images/providers/aihubmix.jpg diff --git a/src/renderer/src/assets/images/providers/aihubmix.jpg b/src/renderer/src/assets/images/providers/aihubmix.jpg new file mode 100644 index 0000000000000000000000000000000000000000..65dbbd5a1a3bc271a463dda9f74eaba90b937b94 GIT binary patch literal 9567 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 J6JWm@`!6KxPj&zR literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/providers/baichuan.png b/src/renderer/src/assets/images/providers/baichuan.png index 3a23c99b16bedf3b6dcbcff448001e3f78033dca..f0512847294a54f39ea0c1c61ff34a6ea6be5665 100644 GIT binary patch delta 4592 zcmcJTS5y;9x5q>8MVd%Cf(i(sL+BAhl@@A9=pAW+Pr4ukX-W~KL;(TmLJ}|>I)Wfo z>Y)V`2t}kyCv=0?bI`6FSGvJTnXaBNoG)e7Dhfs006*Z z@Ic4n_xkzoK~MR6zNMx*P%8|i6q41ESApotDl6zJLFD9g^|bU9RJFB~6_gYqayq&o zP?jI1z`r4t{|Hr5%KjSy{YU8Re|A#(kB}mj7Rs1<(*OWqKQhpPScT7S7hI-0z_|No z?uE@-V9lth(TD8Gu|fe15bZHuZgOvrQ>y5N*xAjq51KbnlRdoA6iKuzDF8Ga-Iu68 z1dO2<&;DriaCS7G{z4Kt2*Ueye- zsJ?3E4oZ4w2!M$a!A^}AilL#9r2j2DV*xzWzvbVVzvbVVf1u9Te;{YbKM-E%|584t zMi_3r@U~vt=;){*ccAca#f)I5y3L5zQ`OnK2-NU8Z-S#Hr*)DPYxI^myc8)*uxFpl&aekem&JYso>Cds2l|FeUcYh z;2EYyUAY7@3V3NPwcGM!Q2x%Fxd4c2%APQOMUAex=fF`baKlfwq$`Jupl57i+IVBJQyqX>bJ|U_+uMKzcPov2oX8pm3PP-`&BMRC!C?S2qOH>^GsSq#&KbQRyZ3YJ()*W%5 zQRd%z@Od13>5_(y4UHQJW#Sl)x|1)fB`>lt4fRV7ioOnq-7~McgI64~YB{hhuwm~V z4z~Bd+XRC(X1QSoTU-Ray~T({Wj}xv)6Z>lOTWUs&JlO2i{gG}K`&m+Jx|WB*AjeC zm8Tj#E=n0;Kx;8$rHbN>B^$^N9%)K(zwrU!GDyqPc~N}~m^0_p%nyuIk~iGhgEz0X zP<|?JPu_DC)*gB=oM?lFPIgH@JS%0O5u^rJ zSKewYu^0k5M9U{x67E6xM)$&7AvEJ}$cqeog`=@(eg3*gZ>7e>Qa7dh3J)`!YZzCA z^BGX!&7(h;fyd0_RwAjcy4nA_rNt&Ff|@z2qOhKjiAuP429)}^D}&zU?cCn(!c^^Y!+c<;|{?eOf(#cJ`gWY;J*<(Sl!H_7|)ChDtIE z;QQ<}8DW4>8IO=N;DQ2r22yApkp=H@jCh@&;LnK?s^f$Xg#tzRyTx)c+odlEYy4-k zos|KPQTC!}152SmWW|$}p62MzglA)L5qnls7vU$*X*VL8u4; zIct~l!RF-1`{poZQdGdIu7h{4LMud{Y0)}F-+>Bvb7|#6GDtwiw>;L?rMJ?;clGu( z@7ge1-;XJCnat2X<2{nr4Brq8c;Mo4!X8XNxNyBxx)&H(;iof}a_|jQi>`z8c$o=v zlFa4<%?i;#pStY&@f^b;6?{i|S`W;D_QzOO@V7-QIU0;<(+bJ;)XZtv7s#(QB|Bs?zj z+W%51#OZgpbL=+V#k|Jm_c&Z7i7K}_;pa>fF5y$#SCg?7Fb685B>MYmjmrgyXy2Z1 zxe_+zZUYiTzainkil>=%l@!*`4q2CfYVbHeZb^(kR^MGpO-CtUhdf6{jr6{3y1bHi z10dE@F)#_fa8Ka8bJm|_D^Myy%*Drt*&aGh2XL2n)SX-L%FGs9aTAQoJOw?2H$0z) zi=<{Y4nMUl_vp^r=s9HSOh#@oS{BLk5V1l9#BWKp7ZM_5WLz3ua8nK?ZZzI{*%eAM zszU-FUtVV`MhSchEEUc!ygswWqD5fhLg|Xqy_(&#4ggO0op&w8Q6`KPLC)C!22|>~IDN0$o#PrJonF2|6E)Z~mAlxnSjK<> z0E;`rM%-cCR)pRt|Le9=9N2A&=@tX!mnkSN8oO6a)l)k^lPtPIeTCet4*Vlvmm%s7 zl{G*Fj@6u-$^J}n%;lC_?`GGH<3_nx?Jj4~`B4Eizer|$t7}b{x6pg_FoW>Y2URpp${F9%6C)YvIQSiOSom&M2B1)|ti zzs)COw3v9X+N>GZGvQ)i=%<;iJg#^q%@0}gC8DuETXNF^#3x+`*At1x$`2gi)!$cU z_r3xu7Y5f0-K}VdI*qq0p_D+kucH{_?D!R)_8C*(9j}LzEQ2}hjrO;#vXaa|Fh|L^ zZS+Xn5yJpJ-g!fb{x;!sLi-X?6@|pwqAj84Et}VDQ+E6x6eg>sD0Kx8oEl0Ec7uPv z02tADY4v{hnP(dDTj6tM*=efQ6_(qZQe2+b;;cyi?6Pn{I-o1m+Ar1Pnf3I@bbFeX z#Ab1Wx7Fw;_E!>3rHfORgpnnpIza1FdwwGgUe6lL;%7Ue27#?yorx=EqE*WtYk$Z9Hm4Q&kg4}{uj?TrJK{q^MeCN3 z_OIGWo0RWu%=}5T)pU4NcBuWEAlaTJqJyFQ(u8M%`-;TQu1-RWtr*Wx>7cK(K&bAK zDF@eWjSSIWxN9*WN<^D@GEmuZPs0cYSJzR_29Ia17|P>thg8#C<0- z#}n_c^M(KrlZk$6FDHDEZDQmT`}fBErnzO88o>1ZQbM}GfFx1Z3tCKUB>3UYdBbA3 zIrwvzy7@892f6Q|C@J@o_H6u7*M~2E=9e2TVTndlko(cVG@LC9YvVGdg~^ zx#LUW>7xQ;is}zb1^KSLt2}P1@0s5eiyJdgObY=CJ)0gMiyf(PHB8pMMe~;V=b_GPLt1us3v@eDmRg6)3?oy|Gn20pBGiWNo{ zGC(NP24}<$1@0uExhT27b*pUV4QrYUs(s_IE$9rOxZ}Kv6Nq}t1HHIG7g*r1%6Lho zu{7*C8+!ZLQ+6MK9nZ}oZN~*aapFt`@_Rqh?ya`+s*(Ppclt9%$*-%E3a2N=I#Kv+ zW4QRx-aycMT$q?2p;*)E&QE--iTv{XDIKCbZM#&HoC$4T58i0Xy0_VXJYKDWvXd^| z2^*ui?lwhXT~$6=|B$ZzfPTb1Exj&CTMs=Vo$H-WvQs@Z;-aFPuuT{#`GBA0gnLHrldR-T82cdQRJaIk}~=1bdjuypPgFHCtT%G;pZn^xmuH~ z(}y=^FR6DTI=#)^mBU#aoY0qJSpN$3-FHWg&Sexl;~!r$;Yl{WFBvh}b@VF6PrHou zW{8lP`D7PbMESzJ?qz7*m$uYt-AztAn6*RXO$QWP-&wxb;jQ%7VPgyZUgz=0F$-ea z5^Qq;7itbxzv9nTCG2)@)ZCmXcj^RmyIvEVGgbd}|A_7`(C*kEH=Ok3O7QI$L*+$% zJDE=aQ!s+5jx@mQ@3=AK+thMj%)$WBT>PT~|Qu9f1oearLz mWDm&w@Ag8}or?|t6#&j%a#xo7bo95012E8q>eOgC$Nm=^+kx!> delta 1987 zcmZ{lXE+-OAHW^GaJVX>C6p2?c4CGWL6jg?m1wQ2G*ON=YSjpJ6g6YjEK#F_w!~g% z)QBSXC{+B__vwfKe18A`*Ix{T0hEllL0|oq8^q1V#`deZnTg$L z4gM#%*iUmEpg88Oq$2wzZBsRbk&ZT8-5831LXoBj9Zi@HQrpN_Lkp@2RWnWZVHf)s zLi`Y_U|0JW(*7ZI_`gp&KZGjr;N@jb5);W9CC z#E;3$ahSR7fE0_J`B<30=61aCls_j;<{ZDyZf`8V8Xhp%Q6!=f{g*q9mzW!kQ2+0O zGx|1-_jFd38$y45StZeBy)Ax%$vFw#nP+nGxxpe(Qu3SMbb(@Swvk*$k}Z43%)afX z5?Aq@jGhkqn{V~*F-8oxqfgalH0$k9h@-~`ugvHPsjBd#55*gRIYv8bk8ezVY8%*a z;+pw<)p=;jQJfei{PpTaMrpKtZCp%(SY5MOQ&yfM%^zuTX1*V8HE^6E`+o`=Y$R{xyK+?rRckb*=b8Yf^jZ8vXD z-m}!QeAn+eKO;eq(`~-y6(C1>u5{liX*a^PltFHI)kUiLCKu?OT)^9IdO5$y8}8Ve6S@B?lo!%e>VpfIwhZ6g7t$L;y|}*~hOzpS zu9TgB(n3zhZlpWjv9$m)$p!u-4(Mj97!Y+QfG|Z_i z?vF)p2!YW#?dTFLzIobyC7asGE@13@v(;0se>~I0#A+ff(rN>e#_xQA32pkN)P#rF zQF~aeou!JpCIf|;%QPWAK5VFEqYtgh*17dYe?}#emsG9!X;+SDyccK8hrOk$zznoS zgUaR8F^A5NOk4&6MFG=;ufd}AiJtHk*K29wl@A7d2cb6j0>>yqo!G6WgN6`vEbR_P zK9?|N=c%gl^-*9}x5{^FS-wH*hSyxDa5q}WS9_dF;KyB~Xk+RQ9PCBwlVj~&K|$;L zL%tmb=MZTq3{ljok1Uud7^O9YTw5s}SBVG9zobQvnugAWQSx~x!_YV_UXdVXw|=;m zpfYYqm*Q{Rvya?zy)f3GIsA%FV~}OqWtXhNmY~+u)McmuN*&9z2l%@MjAZOVSgD(& zm0v;+95_dt$rhxsPzr{$n&HxH0|w<_M#7bmlf<_J6x=yAJh|l{@b^V_=JD$giXVT; z)q%bud+ALB3)ndL&mubStVJVEH31>__P`*m1lOB_khA+}Q(1_nXQlb7uXYRAo{|mp z-l8%7W(a3lV6pmYl+oN&!_P8WzJuKR?c?LP7dLEpz`VK+1GGH%ila>u(CcDbIk1D+ zGPRw4D;+tcPyMXU3a$jZ47l6Ng6>S2h!Cz++{l%Q|FGT&qoxKZJ`NU;dSCJqe|B=` z%avv(kC)M9VkV-ud+>bQ5hah6h)nz&x8J&ZJ~}x*<>Qu~#gc!b^U(18Zz;*pBx1w{ zMGO^kkx+;pDe!U{*4&W)R@SB$G1AKHOazb!F9F%4XK_- z@1`83Rv?#Iw;!kIBNmJ21ieXnz=Q~<>r!KdW`Bsr>a0egJ~Rye=1Nu8-hkg-tgsJg zLH`nplsd~=vU0-snCA2>3@?Q>rtckjdvg@LSRGJZ%$8%(^Ned-Q1EgE)&nAsTX@}x z7yog^vI7=xwWE}3U?i;^_u&h zYZmg35IZl = { enabled: true } ], + aihubmix: [ + { + id: 'gpt-4o-mini', + provider: 'aihubmix', + name: 'GPT-4o Mini', + group: 'GPT-4o', + enabled: true + }, + { + id: 'aihubmix-Llama-3-70B-Instruct', + provider: 'aihubmix', + name: 'Llama 3 70B Instruct', + group: 'Llama3', + enabled: true + } + ], openrouter: [ { id: 'google/gemma-2-9b-it:free', diff --git a/src/renderer/src/config/provider.ts b/src/renderer/src/config/provider.ts index 8d2bdf28..20444759 100644 --- a/src/renderer/src/config/provider.ts +++ b/src/renderer/src/config/provider.ts @@ -10,6 +10,7 @@ import OpenRouterProviderLogo from '@renderer/assets/images/providers/openrouter import BaichuanProviderLogo from '@renderer/assets/images/providers/baichuan.png' import DashScopeProviderLogo from '@renderer/assets/images/providers/dashscope.png' import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.jpeg' +import AiHubMixProviderLogo from '@renderer/assets/images/providers/aihubmix.jpg' import ChatGPTModelLogo from '@renderer/assets/images/models/chatgpt.jpeg' import ChatGLMModelLogo from '@renderer/assets/images/models/chatglm.jpeg' import DeepSeekModelLogo from '@renderer/assets/images/models/deepseek.png' @@ -49,6 +50,8 @@ export function getProviderLogo(providerId: string) { return DashScopeProviderLogo case 'anthropic': return AnthropicProviderLogo + case 'aihubmix': + return AiHubMixProviderLogo default: return undefined } @@ -175,5 +178,13 @@ export const PROVIDER_CONFIG = { docs: 'https://docs.anthropic.com/en/docs', models: 'https://docs.anthropic.com/en/docs/about-claude/models' } + }, + aihubmix: { + websites: { + official: 'https://aihubmix.com/', + apiKey: 'https://aihubmix.com/token', + docs: 'https://doc.aihubmix.com/', + models: 'https://aihubmix.com/models' + } } } diff --git a/src/renderer/src/i18n/index.ts b/src/renderer/src/i18n/index.ts index 2853de26..9e31694a 100644 --- a/src/renderer/src/i18n/index.ts +++ b/src/renderer/src/i18n/index.ts @@ -81,7 +81,8 @@ const resources = { ollama: 'Ollama', baichuan: 'Baichuan', dashscope: 'DashScope', - anthropic: 'Anthropic' + anthropic: 'Anthropic', + aihubmix: 'AiHubMix' }, settings: { title: 'Settings', @@ -202,7 +203,8 @@ const resources = { ollama: 'Ollama', baichuan: '百川', dashscope: '阿里云灵积', - anthropic: 'Anthropic' + anthropic: 'Anthropic', + aihubmix: 'AiHubMix' }, settings: { title: '设置', diff --git a/src/renderer/src/pages/settings/ProviderSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings.tsx index 7f3138d0..be309aac 100644 --- a/src/renderer/src/pages/settings/ProviderSettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings.tsx @@ -100,11 +100,11 @@ const ProviderSettings: FC = () => { key={JSON.stringify(provider)} className={provider.id === selectedProvider?.id ? 'active' : ''} onClick={() => setSelectedProvider(provider)}> - {provider.isSystem && } + {provider.isSystem && } {!provider.isSystem && ( + size={28} + style={{ backgroundColor: generateColorFromChar(provider.name), minWidth: 28 }}> {getFirstCharacter(provider.name)} )} @@ -151,7 +151,7 @@ const ProviderListContainer = styled.div` width: var(--assistants-width); height: calc(100vh - var(--navbar-height)); border-right: 0.5px solid var(--color-border); - padding: 10px; + padding: 10px 8px; overflow-y: auto; ` @@ -165,7 +165,7 @@ const ProviderListItem = styled.div` display: flex; flex-direction: row; align-items: center; - padding: 6px 10px; + padding: 5px 8px; margin-bottom: 5px; width: 100%; cursor: pointer; diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index 7e14d429..aee04640 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -19,7 +19,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 11, + version: 12, blacklist: ['runtime'], migrate }, diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index 166695fe..f745f473 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -94,6 +94,15 @@ const initialState: LlmState = { isSystem: true, enabled: false }, + { + id: 'aihubmix', + name: 'AiHubMix', + apiKey: '', + apiHost: 'https://aihubmix.com', + models: SYSTEM_MODELS.aihubmix.filter((m) => m.enabled), + isSystem: true, + enabled: false + }, { id: 'openrouter', name: 'OpenRouter', diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index f2aed1e3..0d51eee2 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -207,6 +207,27 @@ const migrate = createMigrate({ ] } } + }, + // @ts-ignore store type is unknown + '12': (state: RootState) => { + return { + ...state, + llm: { + ...state.llm, + providers: [ + ...state.llm.providers, + { + id: 'aihubmix', + name: 'AiHubMix', + apiKey: '', + apiHost: 'https://aihubmix.com', + models: SYSTEM_MODELS.aihubmix.filter((m) => m.enabled), + isSystem: true, + enabled: false + } + ] + } + } } })