Last translated: 17 Jun 2025

Translation Not Available Yet

This repository's README hasn't been translated yet. Once translated, it will be easier to read and understand in your native language (中文).

After translating, add the links to README so others can view it directly.

julep

Get API Key   Documentation

NPM Version   PyPI - Version   Docker Image Version   GitHub License

Discord · 𝕏 · LinkedIn

Бессерверные AI-воркфлоу для Data & ML команд

🎉 Анонс: Julep Open Responses API (Альфа)

Мы рады объявить о запуске нашего Open Responses API! Этот новый API предлагает:

  1. Совместимый с OpenAI интерфейс - Прямая замена для существующего кода
  2. Самостоятельно размещаемая open-source реализация - Работает с любым LLM бэкендом
  3. Не зависит от провайдера моделей - Подключайтесь к любому LLM провайдеру (OpenAI, Anthropic и др.)

Open Responses API упрощает интеграцию с вашими приложениями, добавляя мощные новые возможности.

Готовы попробовать? Ознакомьтесь с нашей документацией Open Responses API чтобы начать!

Julep - это бессерверная платформа, помогающая Data и ML командам создавать сложные AI-воркфлоу. Она предоставляет надежную основу для оркестрации сложных AI-операций, управления состоянием между взаимодействиями и интеграции с вашей существующей инфраструктурой данных и инструментами.

Создаете ли вы конвейеры данных или AI-воркфлоу, Julep упрощает компоновку и масштабирование LLM-воркфлоу без управления инфраструктурой. Представьте, что вы хотите создать AI-агента, который может делать больше, чем просто отвечать на простые вопросы - ему нужно выполнять сложные задачи, запоминать прошлые взаимодействия и, возможно, использовать другие инструменты или API. Вот для чего нужен Julep. Наша платформа берет на себя тяжелую работу, чтобы вы могли сосредоточиться на создании интеллектуальных решений для вашего бизнеса.

💡 Чтобы узнать больше о Julep, ознакомьтесь с Документацией.

📖 Содержание


✨ Ключевые возможности

🧠Умная памятьАгенты, которые запоминают контекст и учатся на прошлых взаимодействиях
🔄Движок воркфлоуСоздавайте сложные многошаговые процессы с ветвлениями и циклами
Параллельная обработкаВыполняйте несколько операций одновременно для максимальной эффективности
🛠️Интеграция инструментовБеспрепятственное подключение к внешним API и сервисам
🔌Простая настройкаБыстрый старт с Python и Node.js SDK
🔒Надежность и безопасностьВстроенная обработка ошибок, повторные попытки и функции безопасности
📊МониторингОтслеживание прогресса задач и производительности в реальном времени

💡 Чтобы узнать больше о Julep, ознакомьтесь с Документацией.


🧠 Ментальная модель

Julep состоит из следующих компонентов:

  • Julep Platform: Облачный сервис, выполняющий ваши воркфлоу. Включает язык для описания воркфлоу, сервер для их выполнения и SDK для взаимодействия с платформой.
  • Julep SDK: Набор библиотек для создания воркфлоу. Доступны SDK для Python и JavaScript, другие в разработке.
  • Julep CLI: Инструмент командной строки для взаимодействия с платформой Julep напрямую из терминала.
  • Julep API: RESTful API для взаимодействия с платформой Julep.

Представьте Julep как платформу, объединяющую клиентские и серверные компоненты для создания продвинутых AI-агентов. Вот как это визуализировать:

  1. Ваш код приложения:

    • Используйте Julep SDK для определения агентов, задач и воркфлоу.
    • SDK предоставляет функции и классы для простой настройки и управления.
    • Используйте Julep CLI для взаимодействия с платформой напрямую из терминала.
  2. Julep Backend Service:

    • SDK взаимодействует с Julep бэкендом по сети.
    • CLI взаимодействует с бэкендом через SDK.
    • Бэкенд выполняет задачи, управляет состоянием сессий, хранит документы и оркестрирует воркфлоу.
  3. Интеграция с инструментами и API:

    • В воркфлоу можно интегрировать внешние инструменты и сервисы.
    • Бэкенд обеспечивает интеграции, позволяя агентам выполнять веб-поиск, доступ к базам данных или вызов сторонних API.


📦 Установка

🛠️ Julep SDK

Чтобы начать работу с Julep, установите его через npm или pip:

Node.js

  npm install @julep/sdk

  # or

  bun add @julep/sdk

Python

  pip install julep

[!NOTE] 🔑 Получите ваш API ключ здесь.

Присоединяйтесь к Discord чтобы узнать больше о Julep.

🛠️ Julep CLI

Julep CLI - это инструмент командной строки для взаимодействия с платформой Julep напрямую из терминала. Он предоставляет удобный способ управления AI-воркфлоу, задачами и агентами без написания кода.

pip install julep-cli

Подробнее в Документации Julep CLI.

[!NOTE] CLI находится в бета-версии и доступен только для Python. Поддержка Node.js скоро появится!


🚀 Быстрый старт

Представьте AI-агента для исследований, который может:

  1. Принимать тему,
  2. Генерировать 30 поисковых запросов по этой теме,
  3. Выполнять веб-поиск параллельно,
  4. Суммировать результаты,
  5. Отправлять итоги в Discord.

[!NOTE] В Julep это будет одной задачей менее чем в 80 строках кода, выполняемой полностью автономно. Все шаги выполняются на серверах Julep без вашего участия.

Пример определения задачи:

# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json
name: Research Agent
description: A research assistant that can search the web and send the summary to Discord
########################################################
####################### INPUT ##########################
########################################################

# Define the input schema for the task
input_schema:
  type: object
  properties:
    topic:
      type: string
      description: The main topic to research
    num_questions:
      type: integer
      description: The number of search queries to generate

########################################################
####################### TOOLS ##########################
########################################################

# Define the tools that the agent can use
tools:
  - name: web_search
    type: integration
    integration:
      provider: brave
      setup:
        api_key: "<your-brave-api-key>"

  - name: discord_webhook
    type: api_call
    api_call:
      url: https://discord.com/api/webhooks/<your-webhook-id>/<your-webhook-token>
      method: POST
      headers:
        Content-Type: application/json

########################################################
####################### MAIN WORKFLOW #################
########################################################

# Special variables:
# - steps[index].input: for accessing the input to the step at that index
# - steps[index].output: for accessing the output of the step at that index
# - _: for accessing the output of the previous step

# Define the main workflow
main:
# Step 0: Generate search queries
- prompt:
    - role: system
      content: >-
        $ f"""
        You are a research assistant.
        Generate {{steps[0].input.num_questions|default(30, true)}} diverse search queries related to the topic:
        {steps[0].input.topic}

        Write one query per line.
        """
  unwrap: true

# Step 1: Evaluate the search queries using a simple python expression
- evaluate:
    search_queries: $ _.split(NEWLINE)

# Step 2: Run the web search in parallel for each query
- over: $ _.search_queries
  map:
    tool: web_search
    arguments:
      query: $ _
  parallelism: 5

# Step 3: Collect the results from the web search
- evaluate:
    search_results: $ _

# Step 4: Summarize the results
- prompt:
    - role: system
      content: >
        $ f"""
        You are a research summarizer. Create a comprehensive summary of the following research results on the topic {steps[0].input.topic}.
        The summary should be well-structured, informative, and highlight key findings and insights. Keep the summary concise and to the point.
        The length of the summary should be less than 150 words.
        Here are the search results:
        {_.search_results}
        """
  unwrap: true
  settings:
    model: gpt-4o-mini

# Step 5: Send the summary to Discord
- evaluate:
    discord_message: |-
      $ f'''
      **Research Summary for {steps[0].input.topic}**
      {_}
      '''

# Step 6: Send the summary to Discord
- tool: discord_webhook
  arguments:
    json_: 
      content: $ _.discord_message[:2000] # Discord has a 2000 character limit

Пример выполнения этого воркфлоу с помощью Julep SDK:

Python (Нажмите чтобы развернуть)
from julep import Client
import yaml
import time

# Initialize the client
client = Client(api_key=JULEP_API_KEY)

# Create the agent
agent = client.agents.create(
  name="Julep Browser Use Agent",
  description="A Julep agent that can use the computer tool to interact with the browser.",
)

# Load the task definition
with open('./research_agent.yaml', 'r') as file:
  task_definition = yaml.safe_load(file)

# Create the task
task = client.tasks.create(
  agent_id=agent.id,
  **task_definition
)

# Create the execution
execution = client.executions.create(
    task_id=task.id,
    input={
        "topic": "artificial intelligence",
        "num_questions": 30
    }
)

# Wait for the execution to complete
while (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']:
    print(result.status)
    time.sleep(1)

# Print the result
if result.status == "succeeded":
    print(result.output)
else:
    print(f"Error: {result.error}")


Node.js (Нажмите чтобы развернуть)
import { Julep } from '@julep/sdk';
import yaml from 'yaml';
import fs from 'fs';

// Initialize the client
const client = new Julep({
  apiKey: 'your_julep_api_key'
});

// Create the agent
const agent = await client.agents.create({
  name: "Julep Browser Use Agent",
  description: "A Julep agent that can use the computer tool to interact with the browser.",
});

// Parse the task definition
const taskDefinition = yaml.parse(fs.readFileSync('./research_agent.yaml', 'utf8'));

// Create the task
const task = await client.tasks.create(
  agent.id,
  taskDefinition
);

// Create the execution
const execution = await client.executions.create(
  task.id,
  {
    input: { 
      "topic": "artificial intelligence",
      "num_questions": 30
    }
  }
);

// Wait for the execution to complete
let result;
while (true) {
  result = await client.executions.get(execution.id);
  if (result.status === 'succeeded' || result.status === 'failed') break;
  console.log(result.status);
  await new Promise(resolve => setTimeout(resolve, 1000));
}

// Print the result
if (result.status === 'succeeded') {
  console.log(result.output);
} else {
  console.error(`Error: ${result.error}`);
}

В этом примере Julep автоматически управляет параллельным выполнением, повторяет неудачные шаги, переотправляет API запросы и надежно выполняет задачи до завершения.

Выполняется менее чем за 30 секунд и возвращает следующий результат:

Итог исследования по AI (Нажмите чтобы развернуть)

Итог исследования по искусственному интеллекту (AI)

Краткое содержание результатов исследований по искусственному интеллекту (AI)

Введение

Область искусственного интеллекта (AI) значительно продвинулась в последние годы благодаря разработке методов и технологий, позволяющих машинам воспринимать окружение, обучаться на данных и принимать решения. Основное внимание в этом обзоре уделено выводам различных исследований, связанных с AI.

Ключевые выводы

  1. Определение и сфера AI:

    • AI определяется как раздел компьютерных наук, ориентированный на создание систем, способных выполнять задачи, требующие человеческого интеллекта, включая обучение, рассуждение и решение проблем (Wikipedia).
    • Включает подразделы: машинное обучение, обработка естественного языка, робототехника и компьютерное зрение.
  2. Влияние и применение:

    • Технологии AI интегрируются во множество секторов, повышая эффективность. Применения варьируются от автономных транспортных средств и медицинской диагностики до автоматизации обслуживания клиентов и финансового прогнозирования (OpenAI).
    • Приверженность Google сделать AI полезным для всех подчеркивает его потенциал улучшить повседневную жизнь через улучшение пользовательского опыта (Google AI).
  3. Этические аспекты:

    • Ведутся дискуссии об этических последствиях AI, включая вопросы конфиденциальности, предвзятости и ответственности в процессах принятия решений. Подчеркивается необходимость рамок для безопасного и ответственного использования AI (OpenAI).
  4. Механизмы обучения:

    • Системы AI используют различные механизмы: обучение с учителем, без учителя и с подкреплением. Эти методы позволяют AI улучшать производительность, обучаясь на опыте и данных (Wikipedia).
    • Критично различие между обучением с учителем (использует размеченные данные) и без учителя (выявляет паттерны без предопределенных меток) (Unsupervised).
  5. Будущие направления:

    • Ожидается развитие интерпретируемости и прозрачности систем AI для обоснования их решений (OpenAI).
    • Также стремление сделать системы AI более доступными и удобными для широкого внедрения в различных демографиях и отраслях (Google AI).

Заключение

AI представляет трансформирующую силу во многих областях, обещая изменить отрасли и улучшить качество жизни. Однако с ростом возможностей важно учитывать этические и социальные последствия. Продолжение исследований и сотрудничества между технологами, этиками и политиками будет ключевым для навигации в будущем AI.

Что дальше?

[!TIP] 💡 Больше руководств в разделе Туториалы документации.

💡 Если вы новичок, начните с Руководства по быстрому старту.

💡 Ищете идеи? Посмотрите раздел Идеи репозитория.

💡 Предпочитаете рецепты в стиле кулинарной книги? Изучите раздел Кулинарная книга репозитория.


🔍 Справочник

📚 Справочник по SDK

🛠️ Справочник по API

Изучите нашу документацию API чтобы узнать больше об агентах, задачах, инструментах и Julep CLI: Справочник API


💻 Локальная настройка

1. Клонирование репозитория

Клонируйте репозиторий из предпочитаемого источника:

git clone <repository_url>

2. Переход в корневую директорию

Перейдите в корневую директорию проекта:

cd <repository_root>

3. Настройка переменных окружения

  • Создайте файл .env в корневой директории.
  • Используйте .env.example как список требуемых переменных.
  • Убедитесь, что все необходимые переменные установлены в .env.

4. Создание Docker volume для резервного копирования

Создайте Docker volume с именами grafana_data, memory_store_data, temporal-db-data, prometheus_data, seaweedfs_data:

docker volume create grafana_data
docker volume create memory_store_data
docker volume create temporal-db-data
docker volume create prometheus_data
docker volume create seaweedfs_data

5. Запуск проекта с помощью Docker Compose

Вы можете запустить проект в двух режимах: Single Tenant или Multi-Tenant. Выберите одну из команд:

  1. Режим Single-Tenant

Запуск в single-tenant режиме:

docker compose --env-file .env --profile temporal-ui --profile single-tenant --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --build --force-recreate --watch

Примечание: В single-tenant режиме можно взаимодействовать с SDK напрямую без API KEY.

  1. Режим Multi-Tenant

Запуск в multi-tenant режиме:

docker compose --env-file .env --profile temporal-ui --profile multi-tenant --profile embedding-cpu --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --force-recreate --build --watch

Примечание: В multi-tenant режиме требуется локально сгенерировать JWT токен, выступающий как API KEY для взаимодействия с SDK.

Генерация JWT токена (Только для Multi-Tenant режима)

Для генерации токена требуется jwt-cli. Установите его перед продолжением.

Используйте следующую команду, заменив JWT_SHARED_KEY соответствующим ключом из .env файла:

jwt encode --secret JWT_SHARED_KEY --alg HS512 --exp=$(date -d '+10 days' +%s) --sub '00000000-0000-0000-0000-000000000000' '{}'

Эта команда генерирует JWT токен, действительный 10 дней.

6. Взаимодействие

  • Temporal UI: Доступ через указанный порт в .env файле.
  • Julep SDK: Библиотека Python/Node.js для взаимодействия с Julep API.
from julep import Client

client = Client(api_key="your_jwt_token")

Примечание: В multi-tenant режиме SDK требует JWT токен как API KEY. При инициализации клиента установите окружение local_multi_tenant и api key как сгенерированный токен. В single-tenant режиме взаимодействуйте напрямую без API KEY, установив окружение local.

7. Устранение неполадок

  • Убедитесь в наличии всех Docker образов.
  • Проверьте отсутствующие переменные в .env.
  • Используйте docker compose logs для просмотра логов.

👥 Участники

Присоединяйтесь к нашему сообществу! 🌟

Мы рады новым участникам проекта Julep! Мы создали несколько "good first issues" для вашего старта.

Как внести вклад:

  1. 📖 Ознакомьтесь с CONTRIBUTING.md
  2. 🔍 Изучите good first issues
  3. 💬 Присоединяйтесь к Discord для обсуждений

Ваш вклад, большой или маленький, ценен для нас. Давайте создадим что-то удивительное вместе! 🚀

Наши замечательные участники:


📄 Лицензия

Julep распространяется под лицензией Apache License 2.0.

Подробности смотрите в файле LICENSE.