L o a d i n g
Создание задачи Celery для автоматического наполнения сайта статьями через DeepSeek API Сайты

В этой статье мы рассмотрим, как настроить задачу Celery для автоматической генерации и публикации статей в блоге на сайте, построенном на Django, с использованием API нейросети DeepSeek. Это позволит автоматизировать процесс наполнения контентом, минимизируя ручной труд.

Предварительные требования

  • Установленный Django-проект с настроенным блогом.
  • Celery и Redis (или другой брокер сообщений) для асинхронных задач.
  • Доступ к API DeepSeek (ключ API).
  • Python-библиотеки: requests, celery, django.

Шаг 1: Настройка окружения

Убедитесь, что у вас установлены необходимые зависимости. Добавьте их в requirements.txt:

celery
redis
requests
django

Установите зависимости:

pip install -r requirements.txt

Настройте Redis как брокер сообщений. В файле настроек Django (settings.py) добавьте:

CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

Шаг 2: Создание модели для статей

Предположим, у вас есть модель для статей в блоге. Пример модели в blog/models.py:

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    slug = models.SlugField(unique=True)

    def __str__(self):
        return self.title

Убедитесь, что модель зарегистрирована в админке (blog/admin.py):

from django.contrib import admin
from .models import Article

admin.site.register(Article)

Шаг 3: Настройка Celery

Создайте файл celery.py в корневой папке проекта:

import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')

app = Celery('your_project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

В __init__.py корневой папки добавьте:

from .celery import app as celery_app

__all__ = ('celery_app',)

Шаг 4: Создание задачи Celery

Создайте задачу для генерации статей через API DeepSeek. В blog/tasks.py:

import requests
from celery import shared_task
from django.utils.text import slugify
from .models import Article

@shared_task
def generate_article(topic):
    # Настройки API DeepSeek
    api_key = 'YOUR_DEEPSEEK_API_KEY'
    url = 'https://api.deepseek.com/v1/completions'
    headers = {
        'Authorization': f'Bearer {api_key}',
        'Content-Type': 'application/json'
    }
    payload = {
        'model': 'deepseek',
        'prompt': f'Напишите статью на тему "{topic}" для блога. Статья должна быть информативной, объемом около 500 слов.',
        'max_tokens': 1000,
        'temperature': 0.7
    }

    # Запрос к API
    response = requests.post(url, json=payload, headers=headers)
    if response.status_code == 200:
        article_data = response.json()
        content = article_data['choices'][0]['text'].strip()
        title = f"{topic.title()}"

        # Сохранение статьи в базе данных
        article = Article(
            title=title,
            content=content,
            slug=slugify(title)
        )
        article.save()
        return f"Статья '{title}' успешно создана"
    else:
        return f"Ошибка API: {response.status_code}"

Замените 'YOUR_DEEPSEEK_API_KEY' на ваш ключ API DeepSeek.

Шаг 5: Запуск задачи

Для запуска задачи используйте Django shell или создайте представление. Пример в Django shell:

python manage.py shell
from blog.tasks import generate_article
generate_article.delay('Искусственный интеллект в веб-разработке')

Задача будет выполнена асинхронно через Celery. Вы можете проверить результат в админке Django.

Шаг 6: Периодические задачи (опционально)

Чтобы статьи создавались автоматически по расписанию, настройте Celery Beat. Установите:

pip install django-celery-beat

Добавьте в settings.py:

INSTALLED_APPS += ['django_celery_beat']

Выполните миграции:

python manage.py migrate

Настройте периодическую задачу в админке Django или через код. Пример в blog/tasks.py:

from celery.schedules import crontab
app.conf.beat_schedule = {
    'generate-article-every-day': {
        'task': 'blog.tasks.generate_article',
        'schedule': crontab(hour=8, minute=0),  # Каждый день в 8:00
        'args': ('Новая тема для статьи',),
    },
}

Шаг 7: Запуск Celery и Celery Beat

Запустите Redis, затем выполните команды в отдельных терминалах:

celery -A your_project worker -l info
celery -A your_project beat -l info

Замените your_project на имя вашего проекта.

Заключение

Мы настроили задачу Celery для автоматической генерации статей через API DeepSeek и их публикации в блоге на Django. Это решение позволяет автоматизировать создание контента, экономя время и ресурсы. Вы можете расширить функциональность, добавив валидацию контента, категоризацию или уведомления об успешной публикации.

Написать комментарий

Вы можете оставить комментарий автору статьи Обязательные поля помечены *