From e3dcfef024af11667e7e7628140ec9f56790cb9a Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 9 Jul 2024 19:29:47 +0800 Subject: [PATCH] feat: add provider and model image --- .../src/assets/images/models/chatglm.jpeg | Bin 0 -> 9288 bytes .../src/assets/images/models/chatgpt.svg | 3 + .../src/assets/images/models/deepseek.png | Bin 0 -> 6086 bytes .../src/assets/images/models/gemma.jpeg | Bin 0 -> 9316 bytes .../src/assets/images/models/llama.jpeg | Bin 0 -> 5347 bytes .../src/assets/images/models/mixtral.jpeg | Bin 0 -> 5113 bytes .../src/assets/images/models/qwen.jpeg | Bin 0 -> 9167 bytes src/renderer/src/assets/images/models/yi.svg | 7 ++ .../src/assets/images/providers/deepseek.png | Bin 0 -> 6086 bytes .../src/assets/images/providers/groq.png | Bin 0 -> 1450 bytes .../src/assets/images/providers/openai.jpeg | Bin 0 -> 10195 bytes .../src/assets/images/providers/silicon.png | Bin 0 -> 2179 bytes .../src/assets/images/providers/yi.svg | 7 ++ src/renderer/src/assets/styles/index.scss | 4 + .../src/pages/home/components/Inputbar.tsx | 4 +- .../src/pages/home/components/Message.tsx | 11 ++- .../src/pages/settings/ModelSettings.tsx | 5 +- .../src/pages/settings/ProviderSettings.tsx | 10 ++- .../components/ModalProviderSetting.tsx | 10 ++- .../settings/components/SettingComponent.tsx | 1 + src/renderer/src/services/assistant.ts | 11 ++- src/renderer/src/services/provider.ts | 75 ++++++++++++++++++ 22 files changed, 137 insertions(+), 11 deletions(-) create mode 100644 src/renderer/src/assets/images/models/chatglm.jpeg create mode 100644 src/renderer/src/assets/images/models/chatgpt.svg create mode 100644 src/renderer/src/assets/images/models/deepseek.png create mode 100644 src/renderer/src/assets/images/models/gemma.jpeg create mode 100644 src/renderer/src/assets/images/models/llama.jpeg create mode 100644 src/renderer/src/assets/images/models/mixtral.jpeg create mode 100644 src/renderer/src/assets/images/models/qwen.jpeg create mode 100644 src/renderer/src/assets/images/models/yi.svg create mode 100644 src/renderer/src/assets/images/providers/deepseek.png create mode 100644 src/renderer/src/assets/images/providers/groq.png create mode 100644 src/renderer/src/assets/images/providers/openai.jpeg create mode 100644 src/renderer/src/assets/images/providers/silicon.png create mode 100644 src/renderer/src/assets/images/providers/yi.svg create mode 100644 src/renderer/src/services/provider.ts diff --git a/src/renderer/src/assets/images/models/chatglm.jpeg b/src/renderer/src/assets/images/models/chatglm.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..ec40bf962e6f944ff726a70b41d1328d8b2a5249 GIT binary patch literal 9288 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 Kb6kuE + + \ No newline at end of file diff --git a/src/renderer/src/assets/images/models/deepseek.png b/src/renderer/src/assets/images/models/deepseek.png new file mode 100644 index 0000000000000000000000000000000000000000..f9af429e33254557f6b40a189cec1dc1b2c55d5b GIT binary patch literal 6086 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 literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/models/gemma.jpeg b/src/renderer/src/assets/images/models/gemma.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..3ccbd8ee13e38e5131e68c3f874f7bf88363cad2 GIT binary patch literal 9316 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 adwDfc*qo(!_q+SQ;IYC_KuHItcHn3(q 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 UFaIVlC|e2*uE+oGbflU80gHP}ivR!s literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/models/yi.svg b/src/renderer/src/assets/images/models/yi.svg new file mode 100644 index 00000000..83ebd22d --- /dev/null +++ b/src/renderer/src/assets/images/models/yi.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/renderer/src/assets/images/providers/deepseek.png b/src/renderer/src/assets/images/providers/deepseek.png new file mode 100644 index 0000000000000000000000000000000000000000..f9af429e33254557f6b40a189cec1dc1b2c55d5b GIT binary patch literal 6086 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 literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/providers/groq.png b/src/renderer/src/assets/images/providers/groq.png new file mode 100644 index 0000000000000000000000000000000000000000..31564145e1068131f3cf0a49766efbd68a0b4d54 GIT binary patch literal 1450 zcmb7^dotQT$Rm%*&tNegE6tFx zX~(OSS86M*Ff-*bWJY9AB4p4GJG+1FUwh7;bMO7$d%x%2KR;Pc4mL7Uho!{C#AI+F z)C%l{0cSnPN$C?LbJuzsrmhz*qR>*$4wYt2$y}dOzvyq>& zo)P_{qe&3q`RD6y;l$`#fWt;PNp#!cIN&Y%CK2u8;F{Ovd()hO4f|a*!*N&(xA^jf z^3Rles?r(!-?BNJ5YNSJ!lO)dG|ma>xACQ5QGoxX5DA%2OicJ#s)R4HLuc6_j|jx0 z;O7)!mAT@M)~Uxdo)zTtdcmdtSd+ESw}f(9$38TNdkzn8R2Jn?jgJb>(uZWORTk$= zBT@1`oHOpek&s)%o~ZGd`S&W66sobV?>Q~&3ac{WHPfVvd+D-6T6JiIY@JD{sYekt z1a8zYf4aCts~1A4$todQY7yjB#)0Ku3n(^28dnh_x7q0(SbbeDr+WH%Gf24QMe`Tf z0&qE+M2%%+{!Q(>_o1Ui)#3Puyj%mY-%l_`YDj8d+T?MNwg}}ksa~Bl3zi_Faq-1H zCsmj@+;q$&6NP8gy~gcIGS$7?B})_@n?%ZkBP|B~rO029cEiObRKB%BIg~jPJeRg* zhwo|U-d^e+9db65(}A7RbiR70%yu-hxG>EDN9+!CI?M#qfWG+4as2xaUZ1c6G0$V$ z_f$JL7Rvtt_7jn?;NA9-SbZyNOcYPPzDW2;PZ8#>8azpQoRe;J8nF-N?v-We8LF$d z5BANgPH}gse2M^`FK0t}(%)MzCw~zOY$23fldH%M^97>bh&7e6{Yi5@wh)rLWgl0) zwaj^_oO}BP_x447>E+Va1f)9L%)rsGAWL`fJHxqvNNU^68cX17s(q_iqDYb~s`aIk zy-6=X+sw$8^h-(oB zpyN{1OEZ?{p1C$f+=Jz$nJFp^tpq&-F*S`A(*c0_bS-0GReH@J(5|l1SIk zlb9^Pzwdj?3d_e%yyuAH-dS~rL3s8xW>#4G^h;FN%T~+COa3>s+1$gu=lMy}Z~In) zgfvMol0Eozac0k5=H+rvCe$VM$nN97@TSjkJjO6^Xxq&X&W%wpX4a{4@#2EiH)IGy z=?bw?>p-%^>lIPY2 zV!qI2!{>Svz3FRiQ!m@XE9yUU+OA$XWVV4b@3fRzumHCa+Y}Ccj!O>4$HFRXE zZBT5<`L3Jtb;7_M%;xnN?IxvM7wTO4e%X)XntK<_Sft!Kd*c>k?Fnkx1MJU?E*j@2 z!r6lkL4oz0ZG%_E1mdkp--dRAVrP;+MKg{R5h*Lseb|K=B&j4 literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/providers/openai.jpeg b/src/renderer/src/assets/images/providers/openai.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..293a43d3c0930e59ddd5971456f22a447da48ebf GIT binary patch literal 10195 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 literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/providers/silicon.png b/src/renderer/src/assets/images/providers/silicon.png new file mode 100644 index 0000000000000000000000000000000000000000..d54921c67bc7a161d2ddef926cba4bd29e9a57df GIT binary patch literal 2179 zcmV-}2z>X6P)Px#19L)2R0s$N+u={(0000WV@Og>004R>004l5008;` z004mK004C`008P>0026e000+ooVrmw00042P)t-sgIM;Ka`&i-__dt+!K?bv!290P z{NUC6@9O^d^#1?<|MBhq=H30!!2GkB`H*V&iD34kg7~?i`qIPv>f-(V{Quz9{i%%k zg;`rgz0uaxyh+ z^6mcB#{83Q_p+Dyu95l6xclPR{qXAko_zSRmidcf_Q$jPjAi%r^8V=G{jHJt#;)hxwRw z_~hIDrib{biundD!9M^129QZaK~#90?Vame8b=g|p=yicjf+dST8NYs4AHJMqOB&T zctMn0wb7bhq^9X5ZPWJu|58vB5!vN8yJzQ&KJ$Le^Wbyd%50$mrPk1b27{@kBB;X?2I+Mfzi#J5EpRPo}2(Ih^xphC5hS zvbR!Kt|KpI;@lDUB==cf#-h#SZSJ72kRAA3)}l=z${qM+in9ej8ZGYVv?ke-)SYpe zyWG)VFc+r;Vu9PC#l+pf8bUZlZjDI7?_PD8ac++! z_%70qGOvdHC5?s@rZ1aYB;l5CXXDY zMs0yF!#GA}u{~4gT8$QQKW|x^shy=t;u5U!20m&&`B zIg@VQR3tP;bX|=$Rovq-|3QHV>#zsUS67rLu*XyGP`!DEdgyYv>Be)=V~RV_evD!s zdwSRWw7{MsPJ=tnek@`OqW6Z?rVe@RGrtZ3%t9i%?^rETh(}HT1&Qn-A~W1k0zef& zI=?Eu1G=)fg9KPXM3_r4Afkv!i91Sw1R}y%zyOm$MD+c3d%+SSqGigY3rK`JNCYFI z8>O2fGH66J!-z1l@@@Ua;3=gSndrgUKVCDD=y-Ly`!r`{^{{eqokYHyOC7m}`10j7 z5y^hP7QE{~G%yZA)0kg&UyD#Eq^C0U8Oe=%)U}qF%nv`3YRpTX3=-n(&}EN`hb*h{ zj&-Wip!x`>MhoW_g+`IKz}+ABgL@>nm*W&G@S6O@dUsrq57y*rLrG~Rj0Sn46rr57 zA_8=e+`hvdd?y9pj}yH-{4a@a9)7zO;^0BELVOhk+VoZWf$`O2b;uoc5B&5`!zCpu zS(W!_khif=uqW+dPjkoIlbEy!cI>a5Nm-95L53j=(y}6H?ucDTNqS&~F$^5bd4$j( zMMP6h1Uhx%;7INpi5+a9Oo;p}w;<9r`pS@OM5JxUAw;q>w88;)e76#aU5Tfich9-Ukpst%POg%o@Td$J80w#1c{K6&@opBzty=g{VrbU_hR zICje3(vDOI)rq$lm69TnHqMB zm6M?Qm-0c*W;oxWgW$;p-QMM_8 z-UoTelSsk#i&Si^d;I~ZS?n-;5vbnJ>n4HbQAuW~{IGz;@w@xyu@i}U_#)7MsO7#S z1IXw5?0Y0YO>6FzQxn*veg(~9(7h_eAH6@F#SXQ%!}o|pz@%Z%+ZCO*{6>Yy8!Q%a zc=hTkLf;OBqON>+l4^Rs>ytS+)u?0w<`x=_aF#o3);I9vw~A~~i+wmCVXeMiY$wnT znkAXi71>jNpFoeq4u)g0qTDG;0lRr%NL5SEc{@>FUkg2JP5ZIeqWUb z^{)tYqi{yeZkQf5mD2^nEIac`fRlqCh)UyeA`u4RHMl7rtF;x@#`UM_DNfi~pghVa zyTrpe{r^j~M@aX3jpK(*WnY336l8&}lBF*QoZ;|j?OZitk4>(*bAQwB!3Dkvlcc}s z!ZnKj6vE~ti{(at58c-FjMan8#A5$NMj8|5>*|c-;CokIkMWX~paspbx7-Tnybac| zTh?cydVI#ehIOpf#OS);0X3UEzYye3@s%G9XI87_IHUQGw8vvj=XY1+%HPvWKf(xL z*Wp#M)|%YWdea<34nqo4nqE|$#83K63d^Vd)$kVYN&LU6%lBYsdM9yREY2xrlGSua z&dAv=KOfk=21C?cC^j0o#BPK8XPOKKgTY`h7z~C!{13Ldm@(>K*<%0z002ovPDHLk FV1jZ9fg=C_ literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/providers/yi.svg b/src/renderer/src/assets/images/providers/yi.svg new file mode 100644 index 00000000..19806791 --- /dev/null +++ b/src/renderer/src/assets/images/providers/yi.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/renderer/src/assets/styles/index.scss b/src/renderer/src/assets/styles/index.scss index 18726823..32191b63 100644 --- a/src/renderer/src/assets/styles/index.scss +++ b/src/renderer/src/assets/styles/index.scss @@ -94,3 +94,7 @@ body, flex-direction: row; flex: 1; } + +#inputbar .ant-input { + resize: none; +} diff --git a/src/renderer/src/pages/home/components/Inputbar.tsx b/src/renderer/src/pages/home/components/Inputbar.tsx index 94336e52..8514ca67 100644 --- a/src/renderer/src/pages/home/components/Inputbar.tsx +++ b/src/renderer/src/pages/home/components/Inputbar.tsx @@ -100,7 +100,7 @@ const Inputbar: FC = ({ assistant, setActiveTopic }) => { }, [assistant]) return ( - + @@ -144,7 +144,7 @@ const Inputbar: FC = ({ assistant, setActiveTopic }) => { autoFocus contextMenu="true" variant="borderless" - styles={{ textarea: { resize: 'none', paddingLeft: 0 } }} + styles={{ textarea: { paddingLeft: 0 } }} allowClear ref={inputRef} /> diff --git a/src/renderer/src/pages/home/components/Message.tsx b/src/renderer/src/pages/home/components/Message.tsx index da0fc76e..e8caf5c4 100644 --- a/src/renderer/src/pages/home/components/Message.tsx +++ b/src/renderer/src/pages/home/components/Message.tsx @@ -2,12 +2,13 @@ import { Message } from '@renderer/types' import { Avatar, Tooltip } from 'antd' import { FC } from 'react' import styled from 'styled-components' -import Logo from '@renderer/assets/images/logo.png' import useAvatar from '@renderer/hooks/useAvatar' import { CopyOutlined, DeleteOutlined, EditOutlined } from '@ant-design/icons' import Markdown from 'react-markdown' import CodeBlock from './CodeBlock' import { EVENT_NAMES, EventEmitter } from '@renderer/services/event' +import { getModelLogo } from '@renderer/services/provider' +import Logo from '@renderer/assets/images/logo.png' interface Props { message: Message @@ -40,7 +41,13 @@ const MessageItem: FC = ({ message, showMenu, onDeleteMessage }) => { return ( - {message.role === 'assistant' ? : } + + {message.role === 'assistant' ? ( + + ) : ( + + )} + {message.content} diff --git a/src/renderer/src/pages/settings/ModelSettings.tsx b/src/renderer/src/pages/settings/ModelSettings.tsx index a0213e8c..d8b3f68c 100644 --- a/src/renderer/src/pages/settings/ModelSettings.tsx +++ b/src/renderer/src/pages/settings/ModelSettings.tsx @@ -16,7 +16,10 @@ const ModelSettings: FC = () => { .map((p) => ({ label: p.name, title: p.name, - options: p.models.map((m) => ({ label: m.name, value: m.id })) + options: p.models.map((m) => ({ + label: m.name, + value: m.id + })) })) return ( diff --git a/src/renderer/src/pages/settings/ProviderSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings.tsx index ea07e9f0..51415e68 100644 --- a/src/renderer/src/pages/settings/ProviderSettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings.tsx @@ -3,6 +3,8 @@ import { Provider } from '@renderer/types' import { FC, useState } from 'react' import styled from 'styled-components' import ModalProviderSetting from './components/ModalProviderSetting' +import { Avatar } from 'antd' +import { getProviderLogo } from '@renderer/services/provider' const ProviderSettings: FC = () => { const providers = useSystemProviders() @@ -16,7 +18,8 @@ const ProviderSettings: FC = () => { key={JSON.stringify(provider)} className={provider.id === selectedProvider?.id ? 'active' : ''} onClick={() => setSelectedProvider(provider)}> - {provider.name} + + {provider.name} ))} @@ -60,4 +63,9 @@ const ProviderListItem = styled.div` } ` +const ProviderItemName = styled.div` + margin-left: 10px; + font-weight: bold; +` + export default ProviderSettings diff --git a/src/renderer/src/pages/settings/components/ModalProviderSetting.tsx b/src/renderer/src/pages/settings/components/ModalProviderSetting.tsx index 937d3fe6..31174beb 100644 --- a/src/renderer/src/pages/settings/components/ModalProviderSetting.tsx +++ b/src/renderer/src/pages/settings/components/ModalProviderSetting.tsx @@ -1,11 +1,12 @@ import { Provider } from '@renderer/types' import { FC, useEffect, useState } from 'react' import styled from 'styled-components' -import { Button, Card, Divider, Input } from 'antd' +import { Avatar, Button, Card, Divider, Input } from 'antd' import { useProvider } from '@renderer/hooks/useProvider' import ModalListPopup from '@renderer/components/Popups/ModalListPopup' import { groupBy } from 'lodash' import { SettingContainer, SettingSubtitle, SettingTitle } from './SettingComponent' +import { getModelLogo } from '@renderer/services/provider' interface Props { provider: Provider @@ -58,7 +59,10 @@ const ModalProviderSetting: FC = ({ provider }) => { {Object.keys(modelGroups).map((group) => ( {modelGroups[group].map((model) => ( - {model.id} + + + {model.id} + ))} ))} @@ -73,7 +77,7 @@ const ModelListItem = styled.div` display: flex; flex-direction: row; align-items: center; - justify-content: space-between; + justify-content: flex-start; padding: 5px 0; ` diff --git a/src/renderer/src/pages/settings/components/SettingComponent.tsx b/src/renderer/src/pages/settings/components/SettingComponent.tsx index f58779e8..d114a619 100644 --- a/src/renderer/src/pages/settings/components/SettingComponent.tsx +++ b/src/renderer/src/pages/settings/components/SettingComponent.tsx @@ -19,6 +19,7 @@ export const SettingTitle = styled.div` flex-direction: row; justify-content: space-between; align-items: center; + font-weight: 900; ` export const SettingSubtitle = styled.div` diff --git a/src/renderer/src/services/assistant.ts b/src/renderer/src/services/assistant.ts index f7c543cf..e5864e1a 100644 --- a/src/renderer/src/services/assistant.ts +++ b/src/renderer/src/services/assistant.ts @@ -34,7 +34,14 @@ export function getAssistantProvider(assistant: Assistant) { return provider || getDefaultProvider() } -export function getProviderByModel(model: Model) { +export function getProviderByModel(model?: Model) { const providers = store.getState().llm.providers - return providers.find((p) => p.id === model.provider) as Provider + const providerId = model ? model.provider : getDefaultProvider().id + return providers.find((p) => p.id === providerId) as Provider +} + +export function getProviderByModelId(modelId?: string) { + const providers = store.getState().llm.providers + const _modelId = modelId || getDefaultModel().id + return providers.find((p) => p.models.find((m) => m.id === _modelId)) as Provider } diff --git a/src/renderer/src/services/provider.ts b/src/renderer/src/services/provider.ts new file mode 100644 index 00000000..dbd22e5c --- /dev/null +++ b/src/renderer/src/services/provider.ts @@ -0,0 +1,75 @@ +import OpenAiProviderLogo from '@renderer/assets/images/providers/openai.jpeg' +import SiliconFlowProviderLogo from '@renderer/assets/images/providers/silicon.png' +import DeepSeekProviderLogo from '@renderer/assets/images/providers/deepseek.png' +import YiProviderLogo from '@renderer/assets/images/providers/yi.svg' +import GroqProviderLogo from '@renderer/assets/images/providers/groq.png' +import ChatGPTModelLogo from '@renderer/assets/images/models/chatgpt.svg' +import ChatGLMModelLogo from '@renderer/assets/images/models/chatglm.jpeg' +import DeepSeekModelLogo from '@renderer/assets/images/models/deepseek.png' +import GemmaModelLogo from '@renderer/assets/images/models/gemma.jpeg' +import QwenModelLogo from '@renderer/assets/images/models/qwen.jpeg' +import YiModelLogo from '@renderer/assets/images/models/yi.svg' +import LlamaModelLogo from '@renderer/assets/images/models/llama.jpeg' +import MixtralModelLogo from '@renderer/assets/images/models/mixtral.jpeg' + +export function getProviderLogo(providerId: string) { + if (providerId === 'openai') { + return OpenAiProviderLogo + } + + if (providerId === 'silicon') { + return SiliconFlowProviderLogo + } + + if (providerId === 'deepseek') { + return DeepSeekProviderLogo + } + + if (providerId === 'yi') { + return YiProviderLogo + } + + if (providerId === 'groq') { + return GroqProviderLogo + } + + return '' +} + +export function getModelLogo(modelId: string) { + const _modelId = modelId.toLowerCase() + + if (_modelId.includes('gpt')) { + return ChatGPTModelLogo + } + + if (_modelId.includes('glm')) { + return ChatGLMModelLogo + } + + if (_modelId.includes('deepseek')) { + return DeepSeekModelLogo + } + + if (_modelId.includes('qwen')) { + return QwenModelLogo + } + + if (_modelId.includes('gemma')) { + return GemmaModelLogo + } + + if (_modelId.includes('yi-')) { + return YiModelLogo + } + + if (_modelId.includes('llama')) { + return LlamaModelLogo + } + + if (_modelId.includes('mixtral')) { + return MixtralModelLogo + } + + return '' +}