Files
ollama-upravlenie/__pycache__/ollama_manager.cpython-312.pyc
T

235 lines
66 KiB
Plaintext
Raw Normal View History

2026-05-31 18:45:36 +08:00
Ë
ø>j5ªãóôdZddlZddlZddlZddlZddlmZmZmZ ddl Z ddl Z dZ
gd¢ZGdd «ZGd
d «ZGd d
«ZdZedk(re«yy#e
$r e d«wxYw#e
$rdZ
YŒMwxYw)
Ollama Manager — графичеÑкий менеджер Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¼ Ñервером Ollama.
ВозможноÑти:
* Подключение к Ollama по HTTP (по умолчанию 192.168.1.118:11434).
* СпиÑок уÑтановленных моделей, их детали, удаление, копирование.
* УÑтановка (pull) моделей Ñ Ð¸Ð½Ð´Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ прогреÑÑа.
* СпиÑок запущенных (загруженных в памÑть) моделей и их выгрузка.
* Создание модели из Modelfile, push модели в рееÑтр.
* Управление Ñервером (start / stop / restart / status) по SSH.
* Определение железа (RAM / VRAM / GPU) по SSH.
* "Ðайти модель" — Ñ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹, которые помеÑÑ‚ÑÑ‚ÑÑ Ð² железо.
ЗавиÑимоÑти:
pip install requests paramiko
(paramiko нужен только Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ по SSH: управление Ñервером и определение
железа. Без него оÑтальные функции работают.)
ЗапуÑк:
python ollama_manager.py
éN)ÚttkÚ
messageboxÚ scrolledtextu[Ðе уÑтановлен пакет 'requests'. УÑтановите: pip install requestsTF)")z qwen2.5:0.5bgš™™™™™Ù?çð?rõчат)ztinyllama:1.1bg333333ã?çø?r)zdeepseek-r1:1.5bgš™™™™™ñ?ç@rõраÑÑуждение)z qwen2.5:1.5brr
rr)z llama3.2:1bgÍÌÌÌÌÌô?r
rr)z gemma2:2bgš™™™™™ù?g @g@r)z llama3.2:3brç@r)z
qwen2.5:3bgffffffþ?r r
r)z phi3:3.8bgš™™™™™@g@r
r)z
starcoder2:3bg333333û?r r
õкод)z
mistral:7bgffffff@r)z llama3.1:8bçÍÌÌÌÌÌ@rrr)z
qwen2.5:7brrrr)zqwen2.5-coder:7brrrr)zdeepseek-r1:7brrrr )zdeepseek-r1:8bgš™™™™™@rrr )z codellama:7bgffffff@rrr)zllava:7brrrÚvision)z gemma2:9bgš™™™™™$@rr)zphi4:14bç"@ç(@rr)zphi3:14bgš™™™™™@rrr)z qwen2.5:14brrrr)zdeepseek-r1:14brrrr )z
codellama:13bgš™™™™™@rrr)z
gemma2:27bg0@ç4@g2@r)z qwen2.5:32brç8@ç6@r)zdeepseek-r1:32brrrr )z mixtral:8x7bg:@g@@g<@ÚMoE)z llama3.3:70bç€E@çH@çE@r)zdeepseek-r1:70brrrr )z qwen2.5:72bg€G@gI@g€F@r)z
mixtral:8x22bgT@g€V@g@U@r)znomic-embed-textg333333Ó?rrõÑмбеддинги)zmxbai-embed-largegffffffæ?r rrcófeZdZddZdZddZddZddZddZddZ ddZ
dd „Z d
Z d Z
dd
Zy )Ú OllamaClientcó(|j||«y©N)Ú set_endpoint©ÚselfÚhostÚports úollama_manager.pyÚ__init__zOllamaClient.__init__^sØ ×ј$ Õcó`||_t|«|_d|d|j|_y)Nzhttp://Ú:)r%Úintr&Úbase_urlr#s r'r"zOllamaClient.set_endpointas,؈Œ ܘ“IˆŒ Ø! $  q¨¯©¨ Ð
r)cóªtj|jd|¬«}|j«|j «jdd«S)Nz /api/version©ÚtimeoutÚversionÚÚrequestsÚgetr-Úraise_for_statusÚjson©r$r0Úrs r'r1zOllamaClient.versionfs@Ü L‰L˜DŸM™M˜?¨,ÐÔ Ø ×ÑÔØv‰vx|‰|˜I +r)cóªtj|jd|¬«}|j«|j «jdg«S)Nz /api/tagsr/Úmodelsr3r8s r'Ú list_modelszOllamaClient.list_modelsks@Ü L‰L˜DŸM™M˜?¨)Ð4¸gÔ Ø ×ÑÔØv‰vx|‰|˜H )r)cóªtj|jd|¬«}|j«|j «jdg«S)Nz/api/psr/r;r3r8s r'Ú list_runningzOllamaClient.list_runningps@Ü L‰L˜DŸM™M˜?¨'Ð2¸GÔ Ø ×ÑÔØv‰vx|‰|˜H )r)cótj|jdd|i|¬«}|j«|j «S)Nz /api/showÚmodel©r7r0)r4Úpostr-r6r7©r$Únamer0r9s r'ÚshowzOllamaClient.showus;Ü M‰M˜TŸ]™]˜O¨9Ð5¸WÀd¸OÐU\Ô Ø ×ÑÔØv‰v‹xˆr)có®tj|jdd|i|¬«}|jdk(rt d|d«|j «y)Nz /api/deleter@rAé”uМодель 'õ' не найдена.T)r4Údeleter-Ú status_codeÚ RuntimeErrorr6rCs r'rIzOllamaClient.deletezsTÜ O‰O˜tŸ}™}˜o¨[ÐÈ$ÀÐY`Ô Ø =‰=˜CÒ Ü °¨vÐ5KÐ  ×ÑÔØr)có°tj|jd||dœ|¬«}|jdk(rt d|d«|j «y)Nz /api/copy)ÚsourceÚ destinationrArGuИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ 'rHT)r4rBr-rJrKr6)r$rMrNr0r9s r'ÚcopyzOllamaClient.copysZÜ M‰M˜TŸ]™]˜O¨9Ð5Ø*0ÀÑMÐW^ô
`ˆà =‰=˜CÒ ÜÐ!@ÀÀÐH^Ð  ×ÑÔØr)cóvtj|jd|dddœ|¬«}|j«y)ubВыгрузить модель из памÑти (keep_alive=0 Ñ Ð¿ÑƒÑтым запроÑом).z
/api/generateÚr)r@ÚpromptÚ
keep_aliverAT)r4rBr-r6rCs r'ÚunloadzOllamaClient.unload‰s:ä M‰M˜TŸ]™]˜O¨=Ð9Ø)-¸È1ÑMÐW^ô
`ˆà ×ÑÔØr)c#óNKtj|jd|ddœdd¬«5}|j«|j «D]?}|sŒt j |jd««}d|vrt|d«|ŒA ddd«y#1swYyxYw­w)upГенератор: возвращает Ñловари прогреÑÑа при загрузке модели.z /api/pullT©r@ÚstreamN©r7rWr0úutf-8Úerror© r4rBr-r6Ú
iter_linesr7ÚloadsÚdecoderK©r$rDr9ÚlineÚdatas r'Ú pull_streamzOllamaClient.pull_streamsèø€ä
]‰]˜dŸm™m˜_¨IÐ6Ø*.¸$Ñ ?Ø"&°õ6à9:Ø
× Ñ Ô ØŸ žÙØÜ—z‘z $§+¡+¨gÓ"6Ó7ؘd& t¨G¡}Ó
ñ
6üó*B%¬A#B B%ÂB"ÂB%c#óNKtj|jd|ddœdd¬«5}|j«|j «D]?}|sŒt j |jd««}d|vrt|d«|ŒA ddd«y#1swYyxYw­w)Nz /api/pushTrVrXrYrZr[r_s r'Ú push_streamzOllamaClient.push_streamžsèø€Ü
]‰]˜dŸm™m˜_¨IÐ6Ø*.¸$Ñ ?Ø"&°õ6à9:Ø
× Ñ Ô ØŸ žÙØÜ—z‘z $§+¡+¨gÓ"6Ó7ؘd& t¨G¡}Ó
ñ
6ürcNc#ó|K|ddœ}|r||d<|r||d<|r||d<tj|jd|dd¬«5}|j«|j «D]?}|sŒt j |jd««}d |vrt|d «|ŒA ddd«y#1swYyxYw­w)
NTrVÚfromÚsystemÚtemplatez /api/createrXrYrZr[) r$rDÚmodelfile_fromrhriÚbodyr9r`ras r'Ú
create_streamzOllamaClient.create_stream«èø€Ø¨ÑÙ Ø)ˆD‰LÙ Ø#ˆD‰NÙ Ø'ˆDÑ Ü
]‰]˜dŸm™m˜_¨KÐ8¸tÈDÐZ^Õ
_ÐcdØ
× Ñ Ô ØŸ žÙØÜ—z‘z $§+¡+¨gÓ"6Ó7ؘd& t¨G¡}Ó
ñ
`×
_üsAB<ÁA#B0Â' B<Â0B9Â5B<)ú
192.168.1.118iª,)é)é
)é©é)NNN)Ú__name__Ú
__module__Ú __qualname__r(r"r1r<r>rErIrOrTrbrerl©r)r'rr]s>ó



ó
óóò ò ôr)rcóVeZdZdZed«Zd dZdZd
dZdZ dZ
d „Z d
Z d Z
y)Ú
SSHControllercó d|_d|_y©NrQ)ÚclientÚinfo©r$s r'r(zSSHController.__init__Âs؈Œ ؈ r)có|jduSr!)r{r}s r'Ú connectedzSSHController.connectedÆsà{‰{ &r)Nc
óts td«tj«}|j tj
««|j
|t|«||xsd|xsdddd¬«||_|d|d||_ y)NuNÐе уÑтановлен paramiko. УÑтановите: pip install paramikoroT)Úhostnamer&ÚusernameÚpasswordÚ key_filenamer0Ú allow_agentÚ
look_for_keysÚ@r+)
Ú HAS_PARAMIKOrKÚparamikoÚ SSHClientÚset_missing_host_key_policyÚ
AutoAddPolicyÚconnectr,r{r|)r$r%r&ÚuserrƒÚkeyfileÚclis r'rzSSHController.connectÊsˆÝÜÐ × Ñ Ó"ˆØ ××(>Ñ(>Ó(@Ô ˜¨D« ¸DظGºOÀtبDÀð ô FðˆŒ Øf˜A˜d˜V 1 T +ˆ r)có`|jr"|jj«d|_yyr!)r{Úcloser}s r'rzSSHController.closeÕs%Ø ;Š;Ø K‰K× Ñ Ô ØˆD r)có0|js td«|jj||¬«\}}}|j «j dd«}|j «j dd«}|j j«}|||fS)Nu"Ðет SSH-подключениÑ.r/rYÚreplace)rrKr{Ú exec_commandÚreadr^ÚchannelÚrecv_exit_status) r$Úcmdr0ÚstdinÚstdoutÚstderrÚoutÚerrÚcodes r'ÚrunzSSHController.runÚØ~Š~ÜÐ DØ $§ ¡ × 8Ñ 8¸ÀgÐ 8Ó Nшˆvk‰km×" 7¨IÓ6ˆØk‰km×" 7¨IÓ6ˆØ~‰~×0ˆØS˜#ˆr)có(d}|j|«S)Nztsudo -n systemctl start ollama 2>&1 || (nohup ollama serve > /tmp/ollama.log 2>&1 & echo 'started via ollama serve')©r ©r$r™s r'Ú start_serverzSSHController.start_serveräsðbˆàx‰x˜‹}Ðr)có(d}|j|«S)Nusudo -n systemctl stop ollama 2>&1 || (pkill -f 'ollama serve' && echo 'stopped via pkill') || echo 'процеÑÑ ollama не найден'r¢s r'Ú stop_serverzSSHController.stop_serveréóðCˆðx‰x˜‹}Ðr)có(d}|j|«S)Nzšsudo -n systemctl restart ollama 2>&1 || (pkill -f 'ollama serve'; sleep 2; nohup ollama serve > /tmp/ollama.log 2>&1 & echo 'restarted via ollama serve')r¢s r'Úrestart_serverzSSHController.restart_serverïsð`ˆðx‰x˜‹}Ðr)có(d}|j|«S)Nuxsystemctl status ollama --no-pager 2>&1 || ps aux | grep -i '[o]llama' || echo 'процеÑÑ ollama не найден'r¢s r'Ú
status_serverzSSHController.status_serverõr)cód}|j|«\}}}d}d}d}d}|j«D]} | j«} | jd«r| dd}Œ+| jd«r3| ddj«j «rt | dd«d z }Œo| jd
«r3| d dj«j «rt | d d«d z }Œ³| jd
«r| dd}ŒÊ| jd«sŒÜ| ddj«}
|
j «sŒt |
«dz }Œ|dk(r|sd}|}d|xsdd|dd} |r| d|d|ddz
} n| dz
} t
|d«t
|d«| fS)u9Возвращает (ram_gb, vram_gb, опиÑание).ap
echo "OS=$(uname -s)"
if [ -f /proc/meminfo ]; then
echo "RAM_KB=$(awk '/MemTotal/{print $2}' /proc/meminfo)"
else
echo "RAM_BYTES=$(sysctl -n hw.memsize 2>/dev/null)"
fi
echo "GPU=$(nvidia-smi --query-gpu=name --format=csv,noheader 2>/dev/null | head -1)"
echo "VRAM_MB=$(nvidia-smi --query-gpu=memory.total --format=csv,noheader,nounits 2>/dev/null | head -1)"
grQzOS=éNzRAM_KB=éiz
RAM_BYTES=roi@zGPU=ézVRAM_MB=ééÚDarwinzApple GPU (unified memory)r2z, RAM=ú.1fõГБz, GPU=z, VRAM=u#, GPU не обнаружен (CPU)é)Ú
splitlinesÚstripÚ
startswithÚisdigitr,Úround) r$ÚscriptrŸrÚram_gbÚvram_gbÚgpu_nameÚos_namer`ÚvalÚdescs r'Údetect_hardwarezSSHController.detect_hardwareüsð ˆðŸ &Ó)‰ˆˆcˆØˆØˆØˆØ—N‘N×$ˆDØ—:‘:“<ˆDؘuÔ˜q˜r˜(‘Ø Ô°Q°R°·±Ó0@×0HÑ0HÔ0JܘT ! "˜X¨+Ñ6‘Ø Ô.°4¸¸°9·?±?Ó3D×3LÑ3LÔ3NܘT " #˜Y¨9Ñ5‘Ø Ô  ˜8‘Ø Õ˜1˜2h—n&Ø—;;! #™o’Gð  ¡xØ3ˆH؈GàW’^ Ð$ F¨6°#¨,°dÐÙ Ø f˜X˜J g¨g°c¨]¸$Ð ?‰Dà Ð 9ˆDÜV˜QÓ¤ Ó!2°DÐ8r))NNrq)rsrtrur(Úpropertyrrrr rvr)r'rxrxÁsCòðñð ó
òò
ò ò ó*9r)rxcóÜeZdZdZdZdZdZdZdZdZ dZ
d"d „Z d#d Z d$d Z
ed
«ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d „Z"d!„Z#y
)%ÚOllamaManagerAppcón||_|jjd«|jjd«t«|_t «|_|j«|j«|j«|jd«ts|jdd«yy)Nu Ollama Manager — 192.168.1.118Ú960x720ufГотово. Укажите Ð°Ð´Ñ€ÐµÑ Ñервера и нажмите «ПодключитьÑÑ».u±paramiko не уÑтановлен — управление Ñервером и автоопределение железа по SSH недоÑтупны (pip install paramiko).Úwarn) ÚrootÚtitleÚgeometryrr{rxÚsshÚ_build_top_barÚ_build_notebookÚ_build_consoleÚlogrˆ)r$s r'r(zOllamaManagerApp.__init__-s؈Œ Ø Ð ×ј9Ô"“nˆŒ Ü “?ˆŒà ×ÑÔØ ×ÑÔØ ×ÑÔà ÐØ H‰HðZØ[aõ
cðr)có|tj|jd¬«}|jddd¬«tj|d¬«j ddd d
d ¬ «t
jd
¬«|_tj||jd¬«j ddd ¬«tj|d¬«j ddd d ¬«t
jd¬«|_
tj||jd¬«j ddd ¬«tj|d|j¬«j dd d
¬«t
jd¬«|_
tj||jd¬«|_|jj ddd¬«y)Nu'Подключение к Ollama (HTTP)©ÚtextÚxr°)©ÚfillÚpadxÚpadyõ ХоÑÑ‚:réÚÚrowÚcolumnr×Ústickyrm©Úvalueé©Ú textvariableÚwidthrµ©õ Порт:é©r×Ú11434r­uПодключитьÑÑ©Úcommandu◠не подключеноú#b00©Ú
foregroundrnro)rÚ
LabelFramerÉÚpackÚLabelÚgridÚtkÚ StringVarÚvar_hostÚEntryÚvar_portÚButtonÚ
on_connectÚ
var_statusÚ
lbl_status)r$Úbars r'zOllamaManagerApp._build_top_bar?sLÜn‰n˜TŸY™YÐ-VÔØ ¨ˆÔ #˜KÔ(×-°!¸AÀAÈAÐVYП ¨?ÔŒ
Ü # D§M¡M¸Ô<×AÀaÐPQÐXYÐ #˜(×-°!¸AÀAÈcП ¨7ÔŒ
Ü # D§M¡M¸Ô;×@ÀQÈqÐWXÐ
ÇÁÔVÐ[\ÐefÐmnП,™,Ð-LԌܟ)™) C°d·o±oÐRXÔŒØ ×Ñ ¨1°2ÐÕ6r)cóôtj|j«}|jdddd¬«|j |«|j |«|j
|«|j|«y)bothTr°©Úexpandr×)rÚNotebookrÉÚ_build_tab_modelsÚ_build_tab_runningÚ_build_tab_serverÚ_build_tab_recommend)r$Únbs r'z OllamaManagerApp._build_notebookPs`Ü
\‰\˜$Ÿ)™)Ó
$ˆØ
V D¨q°qˆÔ ×јrÔ ×Ñ Ô ×јrÔ ×! %r)cóžtj|«}|j|d¬«tj|d¬«}|j ddd¬«t j «|_tj||jd¬«j d dd¬
«tj|d |j¬ «j d d
¬«tj|dd¬«|_ |jj d d¬«t j d¬«|_
tj||j¬«j d d
¬«tj|d¬«}|j dddd¬«d}tj||dd¬«|_dD]A\}}}|j j#||¬«|j j%||d¬ «ŒC|j j d ddd!d¬"«tj&|d#|j j(¬$«} | j d d%d¬&«|j j+| j,¬'«tj|«}
|
j ddd(¬«tj|
d)|j.¬ «j d d
¬«tj|
d*|j0¬ «j d d
¬«tj|
d+|j2¬ «j d d
¬«tj|
d,|j4¬ «j d d
¬«tj|
d-|j6¬ «j d d
¬«tj|
d.|j8¬ «j d d
¬«y)/Nu МоделиrÒuУÑтановка моделиrÔé(Úleft©Úsider×uУÑтановить (pull)rë©r r×éðÚ determinate)ÚlengthÚmoder°rQ)u'УÑтановленные моделиrÿTr)rDÚsizeÚparamsÚquantÚmodifiedÚheadingsé ©ÚcolumnsrEÚheight))rDõ Модельr)ru РазмерéZ)ruПараметрыr)ru Квант.r)ruИзмененаé ÚÚanchor©r©r rr×Úvertical©ÚorientrìÚr ©Úyscrollcommand©ruОбновить ÑпиÑокõ ДеталиuКопировать…uУдалитьu Создать из Modelfile…uPush…)rÚFrameÚaddrðÚvar_pullr÷Úon_pullÚ ProgressbarÚprogressÚvar_pull_statusròÚTreeviewÚ tree_modelsÚheadingrÞÚ ScrollbarÚyviewÚ configureÚsetÚrefresh_modelsÚon_show_detailsÚon_copyÚ on_deleteÚ on_createÚon_push) r$rÚtabÚinstÚlstÚcolsÚtrÚsbÚbtnss r'rz"OllamaManagerApp._build_tab_modelsYsÜi‰i˜‹mˆØ
ˆs˜ˆÔ~‰~˜cÐ(IÔØ ¨ˆ ÔŸ ˆŒ
Ü $ T§]¡]¸=×ÐUVÐ]^Ð
Ÿ<™<ô )ß)-©°6À¨Ô)BÜŸ¨°S¸}ÔŒ
Ø
×Ñ ¨QÐÔ!Ÿ|™|°"Ô5ˆÔÜ $ T×%9Ñ%9Ô:×?ÀVÐRSÐn‰n˜SÐ'PÔQˆØ f ¸ˆÔ>ˆÜŸ<™<¨°TÀ
ÐSUÔÔó?‰GˆAˆq
× Ñ × $ Q¨QÐ × Ñ × # A¨Q°sÐ 
×Ñ×Ñ 6°¸tÈ&ÐWXÐÔ
]‰]˜3 z¸4×;KÑ;K×;QÑ;QÔ
RˆØ
V #¨AˆÔ ×Ñ×"°"·&±&Ðy‰y˜~ˆØ ¨ˆ Ô
=Àt×GZÑGZÔ[×`ÐflÐstÐ
4˜n°d×6JÑ6JÔK×PÐV\ÐcdÐ
ÇÁÔSÐY_ÐfgÐ
¿¹ÔLÐRXÐ_`Ð
Ÿ>™>ô +ß+/©4°VÀ!¨4Ô+DÜ
4˜·±Ô>×ÐVWÐXr)có¢tj|«}|j|d¬«tj|d¬«}|j dddd¬«d}tj
||d d
¬ «|_d D]A\}}}|j j||¬«|j j||d
¬«ŒC|j j ddddd¬«tj|d|j j¬«}|j ddd¬«|j j|j¬«tj|«} | j ddd¬«tj| d|j¬«j dd¬«tj| d|j¬«j dd¬«y)NuЗапущенныеrÒu4Модели, загруженные в памÑтьrÿTrÚr)rDrÚvramÚexpiresrrr))rDri)ruРазмер в памÑтиéŒ)rIuИз них в VRAMrK)rJuВыгрузка вrrrr
r!r"r#r$r&r'r(r*uОбновитьrër
u$Выгрузить из памÑти)rr,r-r3Ú tree_runningr5r6r7r8r9Úrefresh_runningÚ on_unload)
r$rr@rBrCrDrErrFrGs
r'rz#OllamaManagerApp._build_tab_running„s…Üi‰i˜‹mˆØ
ˆsÐ/ˆÔn‰n˜SÐ']Ô^ˆØ f T°¸ˆÔÜŸL™L¨°dÀÐTVÔÔóg‰GˆAˆq × Ñ × % a¨aÐ × Ñ × $ Q¨a¸Ð gð
×Ñ×Ñ F°ÀÈ6ÐXYÐÔ
]‰]˜3 z¸4×;LÑ;L×;RÑ;RÔ
SˆØ
V #¨AˆÔ ×Ñ×#°2·6±6Ðy‰y˜‹~ˆØ ¨ˆ Ô
0¸$×:NÑ:NÔO×TÐZ`ÐghÐ
Ÿ>™>ô +ß+/©4°VÀ!¨4Õ+Dr)cóàtj|«}|j|d¬«tj|d¬«}|j ddd¬«tj
|d¬«j
ddd d d
¬ «tjd ¬
«_ tj|jd¬«j
ddd ¬«tj
|d¬«j
ddd d
¬«tjd¬
«_ tj|jd¬«j
ddd ¬«tj
|d¬«j
dd d d
¬«tj«_ tj|jd¬«j
ddd ¬«tj
|d¬«j
ddd d d
¬ «tj«_
tj|jdd¬«j
ddd ¬«tj
|d¬«j
ddd d
¬«tj«_tj|jd¬«j
dddd d¬ «tj|d!‰j ¬"«j
ddd ¬«tj|d#¬«}|j ddd¬«tj|d$ˆfd%„¬"«j d&dd'¬(«tj|d)ˆfd*„¬"«j d&d¬+«tj|d,ˆfd-„¬"«j d&d¬+«tj|d.ˆfd/„¬"«j d&d¬+«tj
|d0d1d&d2¬3«}|j dd4d ¬«y)5NuСервер (SSH)rÒu4SSH-подключение к машине Ñ OllamarÔrrméÚ22r­u Логин:érnu
Пароль:Ú*)rEuКлюч (путь):ér)Ú
columnspanr×uSSH-подключениеrëu,Управление Ñервером Ollamauâ–¶ ЗапуÑтитьcó&jd«S)start©Ú on_serverr}s€r'Ú<lambda>z4OllamaManagerApp._build_tab_server.<locals>.<lambda>¸sø€ÈÏÉÐW^ÔH_r)r
r uâ–  ОÑтановитьcó&jd«S)stoprXr}s€r'rZz4OllamaManagerApp._build_tab_server.<locals>.<lambda>¹sø€È$Ï.É.ÐY_ÔJ`r)r
u↻ ПерезапуÑтитьcó&jd«S)restartrXr}s€r'rZz4OllamaManagerApp._build_tab_server.<locals>.<lambda>ºsø€ÐPT×P^ÑP^Ð_hÔPir)uℹ СтатуÑcó&jd«S)statusrXr}s€r'rZz4OllamaManagerApp._build_tab_server.<locals>.<lambda>»sø€À$Ç.Á.ÐQYÔBZr)z#666i„u#Примечание: запуÑк/оÑтановка через systemctl требует прав sudo без Ð¿Ð°Ñ€Ð¾Ð»Ñ (NOPASSWD) или запуÑкаетÑÑ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ñ‹Ð¹ режим «ollama serve». Вывод команд отображаетÑÑ Ð² журнале внизу.)Ú
wraplengthÚjustifyrÓro)rr,r-Ú var_ssh_hostr÷Ú var_ssh_portÚ var_ssh_userÚ var_ssh_passÚ var_ssh_keyrùÚon_ssh_connect)r$rr@ÚconnÚctrlÚnotes` r'rz"OllamaManagerApp._build_tab_serverœs?ø€Üi‰i˜‹mˆØ
ˆsÐÔ~‰~˜cÐ(^ÔØ s ¨ˆ Ô $˜[Ô)×.°1¸QÀQÈQÐWZПL™L¨ÔÔÜ $ T×%6Ñ%6¸A×FÈ1ÐUVÐ]^Ð $˜)×.°1¸QÀQÈsПL™L¨tÔÔÜ $ T×%6Ñ%6¸@×EÈ!ÐTUÐ\]Ð $˜+×0°Q¸qÀqÐQTПL™L›NˆÔÜ $ T×%6Ñ%6¸A×FÈ1ÐUVÐ]^Ð $˜2°qÀÈÐQRÐ[^ПL™LNˆÔÜ $ T×%6Ñ%6¸bÀsÔK×PÐUVÐ_`ÐghÐ 4×9¸ÐPQÐZ]П<™<>ˆÔÜ $ T×%5Ñ%5¸@×EÈ!ÐTUÐbcÐjkÐtwÐ
× 0ß04±¸À1È1°Ô0Mä~‰~˜cÐ(VÔØ s ¨ˆ Ô
6Ó@_Ô`×eÐkqÐxyðABÐ CÜ
8ÓB`Ôa×fÐlrÐyzÐ