Мы рады объявить о запуске нашего Open Responses API! Этот новый API предлагает:
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 как платформу, объединяющую клиентские и серверные компоненты для создания продвинутых AI-агентов. Вот как это визуализировать:
Ваш код приложения:
Julep Backend Service:
Интеграция с инструментами и API:
Чтобы начать работу с Julep, установите его через npm или pip:
npm install @julep/sdk
# or
bun add @julep/sdk
pip install julep
[!NOTE] 🔑 Получите ваш API ключ здесь.
Присоединяйтесь к Discord чтобы узнать больше о Julep.
Julep CLI - это инструмент командной строки для взаимодействия с платформой Julep напрямую из терминала. Он предоставляет удобный способ управления AI-воркфлоу, задачами и агентами без написания кода.
pip install julep-cli
Подробнее в Документации Julep CLI.
[!NOTE] CLI находится в бета-версии и доступен только для Python. Поддержка Node.js скоро появится!
Представьте AI-агента для исследований, который может:
[!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:
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}")
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:
- AI определяется как раздел компьютерных наук, ориентированный на создание систем, способных выполнять задачи, требующие человеческого интеллекта, включая обучение, рассуждение и решение проблем (Wikipedia).
- Включает подразделы: машинное обучение, обработка естественного языка, робототехника и компьютерное зрение.
Влияние и применение:
- Технологии AI интегрируются во множество секторов, повышая эффективность. Применения варьируются от автономных транспортных средств и медицинской диагностики до автоматизации обслуживания клиентов и финансового прогнозирования (OpenAI).
- Приверженность Google сделать AI полезным для всех подчеркивает его потенциал улучшить повседневную жизнь через улучшение пользовательского опыта (Google AI).
Этические аспекты:
- Ведутся дискуссии об этических последствиях AI, включая вопросы конфиденциальности, предвзятости и ответственности в процессах принятия решений. Подчеркивается необходимость рамок для безопасного и ответственного использования AI (OpenAI).
Механизмы обучения:
- Системы AI используют различные механизмы: обучение с учителем, без учителя и с подкреплением. Эти методы позволяют AI улучшать производительность, обучаясь на опыте и данных (Wikipedia).
- Критично различие между обучением с учителем (использует размеченные данные) и без учителя (выявляет паттерны без предопределенных меток) (Unsupervised).
Будущие направления:
- Ожидается развитие интерпретируемости и прозрачности систем AI для обоснования их решений (OpenAI).
- Также стремление сделать системы AI более доступными и удобными для широкого внедрения в различных демографиях и отраслях (Google AI).
Заключение
AI представляет трансформирующую силу во многих областях, обещая изменить отрасли и улучшить качество жизни. Однако с ростом возможностей важно учитывать этические и социальные последствия. Продолжение исследований и сотрудничества между технологами, этиками и политиками будет ключевым для навигации в будущем AI.
[!TIP] 💡 Больше руководств в разделе Туториалы документации.
💡 Если вы новичок, начните с Руководства по быстрому старту.
💡 Ищете идеи? Посмотрите раздел Идеи репозитория.
💡 Предпочитаете рецепты в стиле кулинарной книги? Изучите раздел Кулинарная книга репозитория.
Изучите нашу документацию API чтобы узнать больше об агентах, задачах, инструментах и Julep CLI: Справочник API
Клонируйте репозиторий из предпочитаемого источника:
git clone <repository_url>
Перейдите в корневую директорию проекта:
cd <repository_root>
.env
в корневой директории..env.example
как список требуемых переменных..env
.Создайте 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
Вы можете запустить проект в двух режимах: Single Tenant или Multi-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.
Запуск в 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 дней.
.env
файле.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
.
.env
.docker compose logs
для просмотра логов.Мы рады новым участникам проекта Julep! Мы создали несколько "good first issues" для вашего старта.
Ваш вклад, большой или маленький, ценен для нас. Давайте создадим что-то удивительное вместе! 🚀
Julep распространяется под лицензией Apache License 2.0.
Подробности смотрите в файле LICENSE.