Запуск модели Ollama с конфигурационным файлом JSON из NODE.JS
Полноценный пример создания запроса из NODE.JS с подключением внешнего файла настроек JSON
JavaScript/Node.js пример с полными параметрами
Установите зависимости:
npm init -y
npm install axios
ollama-client.js
:
const axios = require('axios');
class OllamaClient {
constructor(baseURL = 'http://localhost:11434') {
this.baseURL = baseURL;
this.context = null;
}
/**
* Генерация текста с полным набором параметров
*/
async generate({
prompt,
model = 'qwen3:4b',
stream = false,
format = 'text',
temperature = 0.7,
top_p = 0.9,
top_k = 40,
num_predict = 256,
stop = ['\n', '###'],
repeat_penalty = 1.1,
presence_penalty = 0.0,
frequency_penalty = 0.0,
seed = null,
mirostat = 0,
mirostat_tau = 5.0,
mirostat_eta = 0.1,
num_ctx = 2048,
num_thread = 8,
template = null,
useContext = true
}) {
const payload = {
model,
prompt,
stream,
format,
options: {
temperature,
top_p,
top_k,
num_predict,
stop,
repeat_penalty,
presence_penalty,
frequency_penalty,
mirostat,
mirostat_tau,
mirostat_eta,
num_ctx,
num_thread
}
};
// Добавляем опциональные параметры
if (seed !== null) {
payload.options.seed = seed;
}
if (template) {
payload.template = template;
}
if (useContext && this.context) {
payload.context = this.context;
}
try {
const response = await axios.post(`${this.baseURL}/api/generate`, payload, {
timeout: 30000
});
// Сохраняем контекст для следующего запроса
if (useContext && response.data.context) {
this.context = response.data.context;
}
return response.data;
} catch (error) {
console.error('Ошибка запроса:', error.message);
return { error: error.message };
}
}
/**
* Чат-интерфейс с поддержкой истории
*/
async chat(messages, model = 'qwen3:4b', options = {}) {
try {
const response = await axios.post(`${this.baseURL}/api/chat`, {
model,
messages,
stream: false,
options
}, {
timeout: 30000
});
return response.data;
} catch (error) {
console.error('Ошибка чата:', error.message);
return { error: error.message };
}
}
/**
* Очистить контекст
*/
clearContext() {
this.context = null;
}
/**
* Сохранить контекст в файл
*/
async saveContext(filename) {
const fs = require('fs').promises;
try {
await fs.writeFile(filename, JSON.stringify(this.context, null, 2));
console.log(`Контекст сохранен в ${filename}`);
} catch (error) {
console.error('Ошибка сохранения контекста:', error.message);
}
}
/**
* Загрузить контекст из файла
*/
async loadContext(filename) {
const fs = require('fs').promises;
try {
const data = await fs.readFile(filename, 'utf8');
this.context = JSON.parse(data);
console.log(`Контекст загружен из ${filename}`);
} catch (error) {
console.error('Ошибка загрузки контекста:', error.message);
}
}
}
// Пример использования
async function main() {
const client = new OllamaClient();
// Пример 1: Простая генерация
console.log('=== Пример 1: Простая генерация ===');
const result1 = await client.generate({
prompt: 'Расскажи о JavaScript и его особенностях',
model: 'qwen3:4b',
temperature: 0.7,
top_p: 0.9,
num_predict: 200,
seed: 42,
format: 'text'
});
console.log('Ответ:', result1.response || result1.error);
// Пример 2: Продолжение с контекстом
console.log('\n=== Пример 2: Продолжение с контекстом ===');
const result2 = await client.generate({
prompt: 'А какие современные фреймворки используются?',
temperature: 0.5,
top_p: 0.8
});
console.log('Ответ:', result2.response || result2.error);
// Пример 3: Чат с историей
console.log('\n=== Пример 3: Чат-интерфейс ===');
const chatResult = await client.chat([
{ role: 'user', content: 'Привет! Расскажи о Node.js' },
{ role: 'assistant', content: 'Node.js - это JavaScript runtime...' },
{ role: 'user', content: 'Какие пакеты самые популярные?' }
], 'qwen3:4b', {
temperature: 0.6,
top_p: 0.85
});
console.log('Чат ответ:', chatResult.message?.content || chatResult.error);
// Пример 4: Сохранение и загрузка контекста
await client.saveContext('context.json');
client.clearContext();
await client.loadContext('context.json');
// Пример 5: Генерация кода с специфическими параметрами
console.log('\n=== Пример 5: Генерация кода ===');
const codeResult = await client.generate({
prompt: 'Напиши простой HTTP сервер на Node.js',
temperature: 0.3,
top_p: 0.7,
num_predict: 300,
seed: 12345,
format: 'code',
stop: ['```']
});
console.log('Сгенерированный код:');
console.log(codeResult.response || codeResult.error);
}
// Запуск примера
main().catch(console.error);
package.json для JavaScript:
{
"name": "ollama-client",
"version": "1.0.0",
"description": "Ollama client with full parameters support",
"main": "ollama-client.js",
"scripts": {
"start": "node ollama-client.js",
"dev": "node ollama-client.js"
},
"dependencies": {
"axios": "^1.6.0"
},
"keywords": ["ollama", "ai", "llm", "javascript"],
"author": "Your Name",
"license": "MIT"
}