-
Notifications
You must be signed in to change notification settings - Fork 1
/
про-искусственный-интеллект.el
194 lines (154 loc) · 8.47 KB
/
про-искусственный-интеллект.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
;;; про-искусственный-интеллект.el --- Искусственный Интеллект -*- lexical-binding: t -*-
;; Автор: Пётр ([email protected])
;;; Commentary:
;; Конфигурация нейросетевых сервисов
;;; Code:
(require 'установить-из)
(require 'cape)
;;;; Настройка openapi-key
(if (boundp 'proxyapi-key)
(progn
(setq-default openai-key proxyapi-key)
(setq-default chatgpt-shell-openai-key proxyapi-key)
(setq-default dall-e-shell-openai-key proxyapi-key)))
;;;; Библиотека поддержки Нейросетей OpenAI
;; (use-package openai ;
;; :init
;; (установить-из :repo "11111000000/openai")
;; :custom
;; (openai-base-url "https://api.proxyapi.ru/openai/v1"))
;;;; REPL для разных нейросетей. ChatGPT Shell
(use-package chatgpt-shell
:init (установить-из :repo "xenodium/chatgpt-shell")
:bind (:map chatgpt-shell-mode-map
("C-c C-c" . chatgpt-shell-interrupt))
:custom (
;; Настройка версии моделей и URL API
;; (по-умолчанию используется первая из списка, переключение в шелле C-c C-v)
(chatgpt-shell-model-versions '("gpt-4o-mini"
"o1-mini"
"o1-preview"
"gpt-4o"
"gpt-4o-2024-08-06"
"gpt-4-turbo"
"gpt-4"
"gpt-3.5-turbo-0125"
"gemini-1.5-pro"
"gemini-1.5-flash"
"claude-3-opus-20240229"))
(chatgpt-shell-api-url-base "https://api.proxyapi.ru/openai")
(dall-e-shell--url "https://api.proxyapi.ru/v1/images/generations")
(chatgpt-shell-transmitted-context-length 30))
:config
;; Поддержка блоков Org-мод
;; Пример: #+begin_src chatgpt-shell :version "gpt-4o" :system "результат в формате org-mode" :context emacs
(require 'ob-chatgpt-shell)
(ob-chatgpt-shell-setup)
)
;;;; Поддержка локальной нейросети LLAMA
(use-package ellama
:ensure t
:init
(require 'llm-ollama)
(setopt ellama-language "Russian")
(setopt ellama-provider
(make-llm-ollama
:chat-model "codellama" :embedding-model "codellama")))
;;;; Дополните кода нейросетью Codeium
(defun запустить-codeium()
"Enable codeium."
(interactive)
(add-to-list 'completion-at-point-functions #'codeium-completion-at-point))
;; Codeium
;; настройки для программного интерфейса Codeium
(use-package codeium
:init (установить-из :repo "Exafunction/codeium.el")
:bind
("C-c <tab>" . дополнить-codeium)
("M-S-<iso-lefttab>" . дополнить-codeium)
:config
(defalias 'дополнить-codeium
(cape-capf-interactive #'codeium-completion-at-point))
(setq use-dialog-box nil)
;; используй M-x codeium-diagnose, чтобы увидеть API/поля, которые будут отправлены на локальный языковой сервер
(setq codeium-api-enabled
(lambda (api)
(memq api '(GetCompletions Heartbeat CancelRequest GetAuthToken RegisterUser auth-redirect AcceptCompletion))))
;; Для отдельного буфера можно настроить так:
;; (add-hook 'python-mode-hook
;; (lambda ()
;; (setq-local codeium/editor_options/tab_size 4)))
(setq codeium/document/text
(lambda ()
(buffer-substring-no-properties (max (- (point) 3000) (point-min)) (min (+ (point) 1000) (point-max)))))
(setq codeium/document/cursor_offset
(lambda ()
(codeium-utf8-byte-length
(buffer-substring-no-properties (max (- (point) 3000) (point-min)) (point))))))
;;;; Распознавание голоса. Whisper
(use-package whisper
:init (установить-из :repo "natrys/whisper.el")
:bind ("M-<f5>" . whisper-run)
:config
(setq whisper-install-directory (expand-file-name "~/.emacs.d/")
whisper-model "medium"
whisper-language "ru"
whisper-translate nil
whisper-use-threads (/ (num-processors) 2)))
;;;; Обработка новостей
(require 'chatgpt-shell)
(defvar промт-новости-по-умолчанию "убери рекламу, систематизируй и кратко суммаризируй все новости, добавь аналитику на главные темы")
(defun новости-за-время (часов-новостей &optional промт)
"Рассказывает новости Elfeed за ЧАСОВ-НОВОСТЕЙ. Можно добавить ПРОМТ."
(interactive)
(elfeed-обновить-и-выполнить
(lambda ()
(let* ((список-новостей (elfeed-список-новостей-за (* 3600 часов-новостей)))
(текст-новостей (string-join список-новостей)))
(with-current-buffer (or (chatgpt-shell--primary-buffer) (current-buffer))
(chatgpt-shell-send-to-buffer
(concat "Вот события за "
(number-to-string часов-новостей)
" часа. "
(or промт промт-новости-по-умолчанию)
текст-новостей)
nil))))))
(defun новости-за-час ()
"Рассказывает новости Elfeed за час."
(interactive)
(новости-за-время 1))
(defun новости-за-сутки ()
"Рассказывает новости Elfeed за сутки."
(interactive)
(новости-за-время 24))
(defun новости-за-день ()
"Рассказывает новости Elfeed за день."
(interactive)
(новости-за-время 12))
(defun куплет-за-сутки ()
"Поёт новости Elfeed за сутки."
(interactive)
(новости-за-время 24
"Сперва сгруппируй новости на одну тему, а потом сделай лёгкий красивый поэтический рифмованый пересказ:"))
(defun смешное-за-час ()
"Рассказывает новости Elfeed за день."
(interactive)
(новости-за-время 1
"Перескажи только смешные или просто несуразные и курьёзные новости и суммаризируй, простым текстом, без Markdown, только суммаризацию, неформальным, лёгким языком :"))
(defun смешное-за-сутки ()
"Рассказывает смешные новости Elfeed за сутки."
(interactive)
(новости-за-время 24
"Перескажи только смешные или просто несуразные и курьёзные новости и суммаризируй, простым текстом, без Markdown, только суммаризацию, неформальным, лёгким языком :"))
(defun война-за-сутки ()
"Рассказывает новости войны за сутки."
(interactive)
(новости-за-время 24
"Перескажи кратко только военные новости, разбей на группы по смыслу, систематизируй и суммаризируй, простым текстом, без Markdown:"))
(defun анализ-за-сутки ()
"Рассказывает анализ новостей за сутки."
(interactive)
(новости-за-время 24
"убери рекламу, и сделай анализ и предсказание по заголовкам новостей: напиши только результат анализа, простым текстом, без Markdown:"))
(provide 'про-искусственный-интеллект)
;;; про-искусственный-интеллект.el ends here