ollama run)- Сессионная память: Модель помнит контекст только в рамках одного открытого окна терминала. Если вы закроете его или нажмете
Ctrl+C, история текущего диалога сотрется. - Логи сервера: Техническая информация о запросах (но не сам текст чата в удобном виде) может находиться в папке логов:
- Windows:
%LOCALAPPDATA%\Ollama. - macOS/Linux:
~/.ollama/logs.
- Windows:
- Open WebUI: Хранит все чаты в базе данных (обычно SQLite) внутри Docker-контейнера или локальной папки приложения.
- AnythingLLM: Сохраняет переписку в собственной локальной базе данных на вашем компьютере.
- Плагины для браузеров/IDE: Хранят историю во внутренних хранилищах расширений.
- Windows:
C:\Users\<Имя_пользователя>\.ollama\models - Linux:
/usr/share/ollama/.ollama/models - macOS:
~/.ollama/models
C:\Users\Ваше_Имя\AppData\Local\Ollama
.db или .sqlite), где хранятся сообщения. Чтобы увидеть их, в проводнике должно быть включено отображение скрытых файлов и папок.- Логи работы приложения (ошибки, запросы):
%LOCALAPPDATA%\Ollama(файлыapp.logиserver.log). - Сами модели (веса нейросетей):
C:\Users\Ваше_Имя\.ollama\models. - История командной строки: если вы также используете терминал (
ollama run), история вводов (readline) сохраняется в текстовом файлеhistoryв папке.ollama.
http://localhost:11434.Вы можете отправить POST-запрос на этот адрес, чтобы получить ответ от модели.
- Endpoint:
http://localhost:11434/api/chat - Метод:
POST - Тело (JSON):json
{ "model": "llama3", "messages": [ { "role": "user", "content": "Привет! Как дела?" } ], "stream": false }Используйте код с осторожностью.
"stream": true, ответ будет приходить по частям (слово за словом), как в ChatGPT.- Это полноценный сайт-интерфейс (клон ChatGPT), который подключается к вашей локальной Ollama.
- Там сохраняется вся история переписки, можно загружать документы и переключать модели одним кликом.
localhost:11434 в браузере?Ollama is running. Это технический адрес для программ, а не готовый сайт для общения. Для «человеческого» интерфейса в браузере нужно использовать упомянутый выше Open WebUI или расширения для браузера (например, Page Assist).- Установите Python: Скачайте его с официального сайта. При установке обязательно поставьте галочку "Add Python to PATH".
- Откройте Терминал (PowerShell или Командная строка).
- Обновите менеджер пакетов:powershell
python.exe -m pip install --upgrade pipИспользуйте код с осторожностью. - Установите Open WebUI:powershell
pip install open-webuiИспользуйте код с осторожностью. - Запустите сервер:powershell
open-webui serve ```Используйте код с осторожностью. - Откройте браузер: Перейдите по адресу http://localhost:8080.
- Запустите команду в терминале:powershell
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main ```Используйте код с осторожностью. - Откройте браузер: Перейдите на http://localhost:3000.
- Регистрация: При первом входе нужно создать аккаунт (нажать Sign Up). Первый созданный пользователь автоматически станет администратором.
- Подключение моделей: Если Ollama запущена, Open WebUI подтянет ваши модели автоматически. Если список пуст, зайдите в Settings > Connections и убедитесь, что адрес Ollama указан как
http://localhost:11434(для Python) илиhttp://host.docker.internal:11434(для Docker).
curl.index.php:<?php
$model = "llama3"; // укажите вашу модель
$prompt = "Привет! Расскажи коротко, что такое PHP.";
$ch = curl_init("http://localhost:11434/api/generate");
$data = [
"model" => $model,
"prompt" => $prompt,
"stream" => false // получаем весь ответ сразу
];
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
curl_close($ch);
if ($response) {
$result = json_decode($response, true);
echo "<h3>Ответ от Ollama:</h3>";
echo $result['response'];
} else {
echo "Ошибка: Ollama не отвечает. Проверьте, запущен ли сервер.";
}
?>
- Порт: Убедитесь, что Ollama запущена (иконка в трее). По умолчанию это порт
11434. - Стриминг: В примере выше
"stream" => false. Если поставитьtrue, Ollama будет присылать ответ по кусочкам. Для новичка проще работать с полным ответом (false), иначе придется писать цикл для чтения потока. - Таймаут: Генерация ответа может занять время (зависит от мощности ПК). Если скрипт падает по таймауту, добавьте в начало:
set_time_limit(300);
index.php. Я объединил форму, стили и логику обработки запроса в одном месте. Просто сохрани это и запусти на своем локальном сервере.<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Ollama PHP Interface</title>
<style>
body { font-family: sans-serif; max-width: 800px; margin: 50px auto; padding: 20px; line-height: 1.6; background: #f4f4f9; }
textarea { width: 100%; height: 100px; padding: 10px; margin-bottom: 10px; border-radius: 5px; border: 1px solid #ccc; }
button { padding: 10px 20px; background: #007bff; color: white; border: none; border-radius: 5px; cursor: pointer; }
button:hover { background: #0056b3; }
.response-box { background: white; padding: 20px; border-radius: 5px; border-left: 5px solid #007bff; margin-top: 20px; white-space: pre-wrap; }
.loading { color: #666; font-style: italic; }
</style>
</head>
<body>
<h2>Запрос к Ollama</h2>
<form method="POST">
<textarea name="prompt" placeholder="Введите ваш вопрос..." required><?php echo isset($_POST['prompt']) ? htmlspecialchars($_POST['prompt']) : ''; ?></textarea>
<br>
<button type="submit">Спросить нейросеть</button>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['prompt'])) {
$prompt = $_POST['prompt'];
// Настройки запроса
$url = "http://localhost:11434/api/generate";
$data = [
"model" => "llama3", // ЗАМЕНИТЕ на вашу модель (например, llama3, mistral, qwen2)
"prompt" => $prompt,
"stream" => false
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // Тайм-аут 2 минуты
echo "<div class='loading'>Думаю...</div>";
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error) {
echo "<div class='response-box' style='border-color: red;'>Ошибка связи: $error</div>";
} else {
$result = json_decode($response, true);
$text = $result['response'] ?? 'Ошибка: модель не вернула текст.';
echo "<div class='response-box'><strong>Ответ:</strong><br>" . htmlspecialchars($text) . "</div>";
}
}
?>
</body>
</html>
- Название модели: Проверь в консоли через
ollama list, какая модель у тебя скачана, и впиши её имя в строку"model" => "llama3". - Зависание: Пока PHP ждет ответа от
curl, страница будет выглядеть "зависшей" (белый индикатор загрузки во вкладке). Это нормально для простых скриптов без JavaScript/AJAX. - Безопасность: Если планируешь выставлять это в интернет (а не только для себя локально), обязательно добавь авторизацию, иначе кто угодно "съест" ресурсы твоего ПК.
127.0.0.1, поэтому запросы извне (с другого ПК или из интернета) блокируются.- Откройте «Изменение переменных окружения текущего пользователя»:
- Нажмите клавишу
Win, введите «переменные» и выберите «Изменение переменных окружения текущего пользователя».
- Нажмите клавишу
- Добавьте новую переменную:
- Нажмите кнопку «Создать...».
- Имя переменной:
OLLAMA_HOST - Значение переменной:
0.0.0.0(это значит «слушать все доступные IP-адреса»).
- Примените изменения:
- Нажмите ОК.
- Важно: Полностью закройте Ollama (через иконку в трее: ПКМ -> Quit Ollama) и запустите её снова.
localhost, но и по локальному IP вашего компьютера (например, http://192.168.1.10:11434).0.0.0.0, вы позволяете любому устройству в вашей сети отправлять запросы к вашей видеокарте.- Если у вашего компьютера «белый» IP или вы пробросили порты в роутере, Ollama станет доступна всему интернету.
- У Ollama нет встроенной авторизации (пароля). Если нужно выставить её в сеть, лучше использовать Nginx с настроенным
Basic Auth.
Invoke-RestMethod -Uri "http://localhost:11434/api/tags"
test_port.php):<?php
$host = 'localhost';
$port = 11434;
$connection = @fsockopen($host, $port, $errno, $errstr, 2);
if (is_resource($connection)) {
echo "✅ Соединение с Ollama установлено!";
fclose($connection);
} else {
echo "❌ Ошибка: Ollama не отвечает на порту $port ($errstr)";
}
?>
- Проверьте иконку в трее: Она должна быть активна.
- Брандмауэр (Firewall): Если пытаетесь достучаться по внешнему IP (не localhost), Windows может блокировать порт 11434. Нужно создать "Правило для входящих подключений" в настройках брандмауэра.
- Прокси: Если у вас в системе включен прокси (например, для обхода блокировок), PHP может пытаться идти через него. В
curlстоит добавитьcurl_setopt($ch, CURLOPT_PROXY, '');.
check.php:<?php
$url = "http://localhost:11434/api/tags"; // технический адрес списка моделей
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); // ждем не более 2 секунд
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code === 200) {
echo "✅ PHP видит Ollama!<br>";
$data = json_decode($response, true);
echo "Доступные модели: " . count($data['models']);
} else {
echo "❌ Ошибка связи. Код ответа: " . $http_code;
echo "<br>Убедись, что Ollama запущена.";
}
?>
- Код 200: Значит, PHP успешно достучался до API, расширение
curlработает, и Ollama отвечает. - Код 0 или пустой ответ: Проблема в адресе (попробуй
127.0.0.1вместоlocalhost) или Ollama закрыта. - Медленная загрузка: Если скрипт «висит», значит порт 11434 занят чем-то другим или блокируется антивирусом.
- Официальный API: не имеет команд
list_chatsилиget_chat_by_id. - Сторонние GUI (Open WebUI, AnythingLLM): они создают собственную базу данных (обычно SQLite или PostgreSQL) и записывают туда каждый ваш запрос и ответ.
- Создать базу данных (например, SQLite
chats.db). - Записывать запрос: при нажатии кнопки «Спросить» сохранять текст вопроса в БД.
- Записывать ответ: после получения ответа от
curlсохранять его в ту же таблицу. - Выводить список: при загрузке страницы делать
SELECT * FROM messagesи выводить их в виде списка ссылок.
ollama run в консоли Windows, история ваших вводов (только то, что писали вы) сохраняется здесь:C:\Users\Ваше_Имя\.ollama\history- Примечание: Это просто текстовый файл со списком команд, он не содержит ответов нейросети и не предназначен для API.
- Если через сторонний GUI: Ищите файл по пути
%LOCALAPPDATA%\Ollama\db.sqlite(или аналогичный в папке вашего приложения). - Если через свой PHP: Вам нужно добавить код для работы с базой данных. Без БД при каждом обновлении страницы ваш PHP-скрипт будет «забывать» всё, что было раньше.
history.db содержит данные в формате таблиц. Чтобы PHP смог их прочитать, вам понадобится расширение php_sqlite3 (оно обычно включено по умолчанию в XAMPP/OpenServer).<?php
// Путь к базе данных Ollama (замените Имя_Пользователя)
// Обычно: C:\Users\Имя\AppData\Local\Ollama\history.db
$db_path = $_SERVER['USERPROFILE'] . '\AppData\Local\Ollama\history.db';
if (!file_exists($db_path)) {
die("База данных не найдена по пути: " . $db_path);
}
try {
$db = new SQLite3($db_path, SQLITE3_OPEN_READONLY);
// В Ollama GUI обычно таблицы называются 'messages' или 'chats'
// Выведем последние 20 сообщений
$results = $db->query("SELECT role, content, timestamp FROM messages ORDER BY timestamp DESC LIMIT 20");
echo "<h2>История чатов из Ollama GUI</h2>";
while ($row = $results->fetchArray(SQLITE3_ASSOC)) {
$role = htmlspecialchars($row['role']);
$text = htmlspecialchars($row['content']);
$time = date('Y-m-d H:i:s', $row['timestamp']);
echo "<div style='margin-bottom: 15px; padding: 10px; border: 1px solid #ccc; border-radius: 5px;'>";
echo "<strong>[$time] $role:</strong><br>$text";
echo "</div>";
}
} catch (Exception $e) {
echo "Ошибка чтения базы: " . $e->getMessage();
}
?>
- Названия таблиц: Разработчики Ollama могут менять структуру БД. Если код выдаст ошибку "no such table", нужно проверить точное имя таблицы.
- Права доступа: Если Ollama запущена, она может «заблокировать» файл БД. В этом случае используйте режим
SQLITE3_OPEN_READONLY(как в коде выше). - Markdown: Нейросеть часто отвечает с разметкой (списки, код). Чтобы это красиво смотрелось в PHP, текст ответа стоит прогонять через библиотеку типа
Parsedown, иначе это будет просто сплошной текст.
Откройте Командную строку от имени администратора и выполните:
mklink "C:\путь\к\вашему\проекту\ollama_history.db" "C:\Users\Имя\AppData\Local\Ollama\history.db"
$db_path = __DIR__ . '/ollama_history.db';USERPROFILE, лучше жестко прописать путь в конфиг-файле вашего приложения:define('OLLAMA_DB', 'C:/Users/Admin/AppData/Local/Ollama/history.db');
$db = new SQLite3(OLLAMA_DB, SQLITE3_OPEN_READONLY);
$original = $_SERVER['USERPROFILE'] . '\AppData\Local\Ollama\history.db';
$local_copy = __DIR__ . '/temp_history.db';
// Копируем актуальную базу, чтобы не мешать работе Ollama
copy($original, $local_copy);
$db = new SQLite3($local_copy, SQLITE3_OPEN_READONLY);
$SERVER['USERPROFILE'] может не работать?USERPROFILE может указывать не на вашу папку, а на системную (например, C:\Windows\System32\config\systemprofile). В этом случае путь к БД в коде нужно прописывать полностью вручную.%LOCALAPPDATA%. Она автоматически подставит путь к папке текущего пользователя.mklink "C:\ваш_проект\history.db" "%LOCALAPPDATA%\Ollama\history.db"
// Получаем путь к LocalAppData независимо от имени пользователя
$localAppData = getenv('LOCALAPPDATA');
$db_path = $localAppData . '\Ollama\history.db';
if (file_exists($db_path)) {
$db = new SQLite3($db_path, SQLITE3_OPEN_READONLY);
echo "База найдена для пользователя: " . getenv('USERNAME');
} else {
echo "Файл истории не найден. Возможно, Ollama GUI не установлена.";
}
mklink:- Переносимость: Код будет работать на любом компьютере с Windows без предварительной настройки консолью.
- Права доступа: Для создания
mklinkчасто нужны права администратора, а PHP-скрипту для чтения файла — нет. - Обновления: Если вы переустановите Windows или смените пользователя, скрипт подстроится автоматически.
getenv('LOCALAPPDATA') вернет пустоту.Решение: Запускайте локальный сервер (OpenServer/XAMPP) просто как программу от своего имени, а не как службу Windows.
OLLAMA_HOST: Адрес и порт. У тебя уже стоит0.0.0.0:11434, значит Ollama принимает подключения со всех IP (не только с localhost).OLLAMA_MODELS: Путь к папке, где лежат веса нейросетей. Можно перенести на другой диск, если наC:мало места.OLLAMA_ORIGINS: Список разрешенных доменов для веб-запросов (CORS). Если твой PHP-сайт на другом порту или домене не может достучаться до API, нужно добавить его сюда.OLLAMA_KEEP_ALIVE: Сколько модель остается в памяти видеокарты после последнего запроса. По умолчанию5m0s(5 минут). Можно поставить24hили-1(держать вечно), чтобы не ждать загрузки при каждом вопросе.
OLLAMA_NUM_PARALLEL: Количество одновременных запросов. По умолчанию1. Если поставить4, несколько пользователей смогут общаться с моделью одновременно (но это съест больше видеопамяти).OLLAMA_CONTEXT_LENGTH: Размер «памяти» чата (контекстное окно). По умолчанию управляется моделью, но можно ограничить вручную (например,4096).OLLAMA_MAX_LOADED_MODELS: Сколько разных моделей могут быть загружены в память одновременно. По умолчанию1.OLLAMA_FLASH_ATTENTION: Ускоряет работу и экономит память на современных видеокартах. По умолчаниюfalse(можно попробовать включитьtrue).OLLAMA_GPU_OVERHEAD: Резерв видеопамяти (в байтах), который Ollama не будет трогать, оставляя системе/монитору.
OLLAMA_DEBUG: Уровень логирования. Если поставить1, в консоли будет гораздо больше инфы о том, как нейросеть «думает».OLLAMA_LOAD_TIMEOUT: Время ожидания загрузки модели (по умолчанию 5 мин). Если модель огромная и диск медленный, можно увеличить.OLLAMA_NOPRUNE: Еслиtrue, Ollama не будет удалять неиспользуемые фрагменты данных при обновлении.CUDA_VISIBLE_DEVICES: Если у тебя 2 видеокарты, здесь можно указать ID той, которую должна использовать Ollama (например,0или1).
- Нажми
Win + R, введиsysdm.cpl, вкладка Дополнительно -> Переменные среды. - В разделе "Переменные среды пользователя" нажми Создать.
- Имя: например,
OLLAMA_KEEP_ALIVE, Значение:24h. - Обязательно перезапусти Ollama (полный выход через трей и запуск заново).
Turn on your Visual Search History?
Google uses its visual recognition technologies to process the images you use to search, like when you search with Google Lens. If you turn on your Visual Search History, Google will save these images from eligible Google services to your Web & App Activity when you’re signed in to your Google Account. You can learn more about this setting and which Google services save images to it at g.co/Search/VisualSearchHistory.
How visual search history is used
Your Visual Search History may be used to improve your experience on Google services, like letting you revisit your past visual searches. It may be used to develop and improve Google’s visual recognition and search technologies, as well as the Google services that use them.
When visual search history is off
If you turn this setting off, any previous Visual Search History may still be kept and used to improve Google’s visual recognition and search technologies, unless you delete it from your Web & App Activity.
Visual Search History doesn’t affect images saved by other settings, like Gemini Apps Activity.
How to manage your Visual Search History
You can view, delete, or manage your Visual Search History at activity.google.com. To download your Visual Search History, visit takeout.google.com. Images will be deleted in accordance with your Web & App Activity auto-delete settings, although some types of images may be deleted sooner.
Google uses and saves data in accordance with Google Privacy Policy.
