Запуск модели из Ollama с конфигурационным файлом JSON и контекстом

Полноценный пример создания запроса из командной строки и полным набором параметров с подключением внешнего файла настроек JSON с контекстом

Продвинутый пример с контекстом и многошаговым диалогом

Создаем скрипт advanced_dialog.sh:

#!/bin/bash

CONFIG_FILE="dialog_config.json"
CONTEXT_FILE="context.json"

# Функция для отправки запроса
send_request() {
    local prompt="$1"
    local context="${2:-null}"
    
    local request_data=$(jq --arg prompt "$prompt" --argjson context "$context" '
    {
        model: .model,
        prompt: $prompt,
        stream: false,
        format: .format,
        options: .options,
        template: .template,
        context: $context
    }' "$CONFIG_FILE")
    
    curl -s http://localhost:11434/api/generate \
        -H "Content-Type: application/json" \
        -d "$request_data"
}

# Основной диалог
echo "🤖 Начинаем диалог с AI"

# Шаг 1
echo "👤: Расскажи о Python"
response1=$(send_request "Расскажи о Python")
answer1=$(echo $response1 | jq -r '.response')
context=$(echo $response1 | jq '.context')
echo "🤖: $answer1"

# Сохраняем контекст
echo "$context" > "$CONTEXT_FILE"

# Шаг 2 с контекстом
echo -e "\n👤: А какие у него недостатки?"
response2=$(send_request "А какие у него недостатки?" "$(cat $CONTEXT_FILE)")
answer2=$(echo $response2 | jq -r '.response')
echo "🤖: $answer2"

# Обновляем контекст
echo "$(echo $response2 | jq '.context')" > "$CONTEXT_FILE"

# Шаг 3
echo -e "\n👤: Что посоветуешь для изучения?"
response3=$(send_request "Что посоветуешь для изучения?" "$(cat $CONTEXT_FILE)")
answer3=$(echo $response3 | jq -r '.response')
echo "🤖: $answer3"

Конфигурационный файл dialog_config.json:

{
  "model": "qwen3:4b",
  "format": "text",
  "template": "Ответь дружелюбно и подробно: {{ .Prompt }}\n\n",
  "options": {
    "temperature": 0.7,
    "top_p": 0.9,
    "top_k": 40,
    "num_predict": 200,
    "stop": ["\n\n", "###"],
    "repeat_penalty": 1.1,
    "seed": 12345,
    "mirostat": 1,
    "mirostat_tau": 5.0,
    "mirostat_eta": 0.1
  }
}

Запуск:

chmod +x advanced_dialog.sh
./advanced_dialog.sh