diff --git a/README-CN.md b/README-CN.md index be9d94a75..c47b56a6b 100644 --- a/README-CN.md +++ b/README-CN.md @@ -64,38 +64,50 @@
-

📖 Table of Contents

- -- [为什么选择 Julep 而不是 LangChain?](#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%89%E6%8B%A9-julep-%E8%80%8C%E4%B8%8D%E6%98%AF-langchain) - - [不同的用例](#%E4%B8%8D%E5%90%8C%E7%9A%84%E7%94%A8%E4%BE%8B) - - [不同的外形尺寸](#%E4%B8%8D%E5%90%8C%E7%9A%84%E5%A4%96%E5%BD%A2%E5%B0%BA%E5%AF%B8) -- [Python 快速入门🐍](#python-%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8) - - [步骤 1:创建代理](#%E6%AD%A5%E9%AA%A4-1%E5%88%9B%E5%BB%BA%E4%BB%A3%E7%90%86) - - [步骤 2:创建一个生成故事和漫画的任务](#%E6%AD%A5%E9%AA%A4-2%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%94%9F%E6%88%90%E6%95%85%E4%BA%8B%E5%92%8C%E6%BC%AB%E7%94%BB%E7%9A%84%E4%BB%BB%E5%8A%A1) - - [步骤 3:执行任务](#%E6%AD%A5%E9%AA%A4-3%E6%89%A7%E8%A1%8C%E4%BB%BB%E5%8A%A1) - - [步骤 4:与代理聊天](#%E6%AD%A5%E9%AA%A4-4%E4%B8%8E%E4%BB%A3%E7%90%86%E8%81%8A%E5%A4%A9) -- [Node.js 快速入门 🟩](#nodejs-%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8-) - - [步骤 1:创建代理](#%E6%AD%A5%E9%AA%A4-1%E5%88%9B%E5%BB%BA%E4%BB%A3%E7%90%86-1) - - [步骤 2:创建一个生成故事和漫画的任务](#%E6%AD%A5%E9%AA%A4-2%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%94%9F%E6%88%90%E6%95%85%E4%BA%8B%E5%92%8C%E6%BC%AB%E7%94%BB%E7%9A%84%E4%BB%BB%E5%8A%A1-1) - - [步骤 3:执行任务](#%E6%AD%A5%E9%AA%A4-3%E6%89%A7%E8%A1%8C%E4%BB%BB%E5%8A%A1-1) - - [步骤 4:与代理聊天](#%E6%AD%A5%E9%AA%A4-4%E4%B8%8E%E4%BB%A3%E7%90%86%E8%81%8A%E5%A4%A9-1) - - [心智模型](#%E5%BF%83%E6%99%BA%E6%A8%A1%E5%9E%8B) -- [概念](#%E6%A6%82%E5%BF%B5) -- [理解任务](#%E7%90%86%E8%A7%A3%E4%BB%BB%E5%8A%A1) - - [工作流步骤的类型](#%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%AD%A5%E9%AA%A4%E7%9A%84%E7%B1%BB%E5%9E%8B) -- [工具类型](#%E5%B7%A5%E5%85%B7%E7%B1%BB%E5%9E%8B) - - [用户定义的函数](#%E7%94%A8%E6%88%B7%E5%AE%9A%E4%B9%89%E7%9A%84%E5%87%BD%E6%95%B0) - - [`系统` 工具](#%E7%B3%BB%E7%BB%9F-%E5%B7%A5%E5%85%B7) - - [内置“集成”](#%E5%86%85%E7%BD%AE%E9%9B%86%E6%88%90) - - [直接 `api_call`](#%E7%9B%B4%E6%8E%A5-api_call) -- [集成](#%E9%9B%86%E6%88%90) - - [勇敢搜索](#%E5%8B%87%E6%95%A2%E6%90%9C%E7%B4%A2) - - [浏览器基础](#%E6%B5%8F%E8%A7%88%E5%99%A8%E5%9F%BA%E7%A1%80) - - [向代理添加工具](#%E5%90%91%E4%BB%A3%E7%90%86%E6%B7%BB%E5%8A%A0%E5%B7%A5%E5%85%B7) - - [管理会话和用户](#%E7%AE%A1%E7%90%86%E4%BC%9A%E8%AF%9D%E5%92%8C%E7%94%A8%E6%88%B7) - - [文档集成与搜索](#%E6%96%87%E6%A1%A3%E9%9B%86%E6%88%90%E4%B8%8E%E6%90%9C%E7%B4%A2) -- [本地快速启动](#%E6%9C%AC%E5%9C%B0%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8) -- [SDK 参考](#sdk-%E5%8F%82%E8%80%83) +

📖 目录

+ +- [简介](#introduction) +- [快速示例](#quick-example) +- [主要特点](#key-features) +- [为什么选择 Julep 而不是 LangChain?](#why-julep-vs-langchain) +- [不同用例](#different-use-cases) +- [不同的外形尺寸](#different-form-factor) +- [总结](#in-summary) +- [安装](#安装) +- [Python 快速入门 🐍](#python-quick-start-) +- [步骤 1:创建代理](#step-1-create-an-agent) +- [步骤 2:创建一个生成故事和漫画的任务](#step-2-create-a-task-that-generates-a-story-and-comic-strip) +- [步骤 3:执行任务](#step-3-execute-the-task) +- [步骤 4:与代理聊天](#step-4-chat-with-the-agent) +- [Node.js 快速入门🟩](#nodejs-quick-start-) +- [步骤 1:创建代理](#step-1-create-an-agent-1) +- [步骤 2:创建一个生成故事和漫画的任务](#step-2-create-a-task-that-generates-a-story-and-comic-strip-1) +- [步骤 3:执行任务](#step-3-execute-the-task-1) +- [步骤 4:与代理聊天](#step-4-chat-with-the-agent-1) +- [组件](#components) +- [心智模型](#mental-model) +- [概念](#concepts) +- [理解任务](#understanding-tasks) +- [工作流步骤的类型](#types-of-workflow-steps) +- [工具类型](#tool-types) +- [用户定义的函数](#user-defined-functions) +- [`系统` 工具](#system-tools) +- [内置集成](#built-in-integrations) +- [直接 `api_call`](#direct-api_calls) +- [集成](#integrations) +- [勇敢搜索](#brave-search) +- [BrowserBase](#browserbase) +- [电子邮件](#email) +- [蜘蛛](#蜘蛛) +- [天气](#天气) +- [维基百科](#wikipedia) +- [其他功能](#other-features) +- [向代理添加工具](#adding-tools-to-agents) +- [管理会话和用户](#managing-sessions-and-users) +- [文档集成与搜索](#document-integration-and-search) +- [本地快速启动](#local-quickstart) +- [SDK 参考](#sdk-reference) +- [API 参考](#api-reference)
diff --git a/README-FR.md b/README-FR.md index 1114ec877..334db2ed7 100644 --- a/README-FR.md +++ b/README-FR.md @@ -64,50 +64,50 @@ Des nouvelles passionnantes ! Nous participons au DevFest.AI tout au long du moi
-

📖 Table of Contents

- -- [Introduction](#introduction) -- [Exemple rapide](#exemple-rapide) -- [Principales caractéristiques](#principales-caract%C3%A9ristiques) -- [Pourquoi Julep vs. LangChain ?](#pourquoi-julep-vs-langchain%C2%A0) - - [Différents cas d'utilisation](#diff%C3%A9rents-cas-dutilisation) - - [Facteur de forme différent](#facteur-de-forme-diff%C3%A9rent) - - [En résumé](#en-r%C3%A9sum%C3%A9) +

📖 Table des matières

+ +- [Présentation](#introduction) +- [Exemple rapide](#quick-example) +- [Caractéristiques principales](#key-features) +- [Pourquoi Julep vs. LangChain ?](#pourquoi-julep-vs-langchain) +- [Différents cas d'utilisation](#different-use-cases) +- [Facteur de forme différent](#different-form-factor) +- [En résumé](#en-resumé) - [Installation](#installation) -- [Démarrage rapide de Python 🐍](#d%C3%A9marrage-rapide-de-python-) - - [Étape 1 : Créer un agent](#%C3%89tape-1%C2%A0-cr%C3%A9er-un-agent) - - [Étape 2 : Créer une tâche qui génère une histoire et une bande dessinée](#%C3%89tape-2%C2%A0-cr%C3%A9er-une-t%C3%A2che-qui-g%C3%A9n%C3%A8re-une-histoire-et-une-bande-dessin%C3%A9e) - - [Étape 3 : Exécuter la tâche](#%C3%89tape-3%C2%A0-ex%C3%A9cuter-la-t%C3%A2che) - - [Étape 4 : Discuter avec l'agent](#%C3%89tape-4%C2%A0-discuter-avec-lagent) -- [Démarrage rapide de Node.js 🟩](#d%C3%A9marrage-rapide-de-nodejs-) - - [Étape 1 : Créer un agent](#%C3%89tape-1%C2%A0-cr%C3%A9er-un-agent-1) - - [Étape 2 : Créer une tâche qui génère une histoire et une bande dessinée](#%C3%89tape-2%C2%A0-cr%C3%A9er-une-t%C3%A2che-qui-g%C3%A9n%C3%A8re-une-histoire-et-une-bande-dessin%C3%A9e-1) - - [Étape 3 : Exécuter la tâche](#%C3%89tape-3%C2%A0-ex%C3%A9cuter-la-t%C3%A2che-1) - - [Étape 4 : Discuter avec l'agent](#%C3%89tape-4%C2%A0-discuter-avec-lagent-1) +- [Démarrage rapide de Python 🐍](#python-quick-start-) +- [Étape 1 : Créer un agent](#step-1-create-an-agent) +- [Étape 2 : Créer une tâche qui génère une histoire et une bande dessinée](#step-2-create-a-task-that-generates-a-story-and-comic-strip) +- [Étape 3 : Exécuter la tâche](#step-3-execute-the-task) +- [Étape 4 : discuter avec l'agent](#step-4-chat-with-the-agent) +- [Démarrage rapide de Node.js 🟩](#nodejs-quick-start-) +- [Étape 1 : Créer un agent](#step-1-create-an-agent-1) +- [Étape 2 : Créer une tâche qui génère une histoire et une bande dessinée](#step-2-create-a-task-that-generates-a-story-and-comic-strip-1) +- [Étape 3 : Exécuter la tâche](#step-3-execute-the-task-1) +- [Étape 4 : discuter avec l'agent](#step-4-chat-with-the-agent-1) - [Composants](#composants) - - [Modèle mental](#mod%C3%A8le-mental) +- [Modèle mental](#mental-model) - [Concepts](#concepts) -- [Comprendre les tâches](#comprendre-les-t%C3%A2ches) - - [Types d'étapes de flux de travail](#types-d%C3%A9tapes-de-flux-de-travail) -- [Types d'outils](#types-doutils) - - [Fonctions définies par l'utilisateur](#fonctions-d%C3%A9finies-par-lutilisateur) - - [outils `système`](#outils-syst%C3%A8me) - - [Intégrations intégrées](#int%C3%A9grations-int%C3%A9gr%C3%A9es) - - [Appels directs `api_call`](#appels-directs-api_call) -- [Intégrations](#int%C3%A9grations) - - [Recherche courageuse](#recherche-courageuse) - - [Base de navigateur](#base-de-navigateur) - - [E-mail](#e-mail) - - [Araignée](#araign%C3%A9e) - - [Météo](#m%C3%A9t%C3%A9o) - - [Wikipédia](#wikip%C3%A9dia) -- [Autres fonctionnalités](#autres-fonctionnalit%C3%A9s) - - [Ajout d'outils aux agents](#ajout-doutils-aux-agents) - - [Gestion des sessions et des utilisateurs](#gestion-des-sessions-et-des-utilisateurs) - - [Intégration et recherche de documents](#int%C3%A9gration-et-recherche-de-documents) -- [Démarrage rapide local](#d%C3%A9marrage-rapide-local) -- [Référence du SDK](#r%C3%A9f%C3%A9rence-du-sdk) -- [Référence API](#r%C3%A9f%C3%A9rence-api) +- [Comprendre les tâches](#understanding-tasks) +- [Types d'étapes de flux de travail](#types-of-workflow-steps) +- [Types d'outils](#types-d'outils) +- [Fonctions définies par l'utilisateur](#user-defined-functions) +- [outils système](#outils-système) +- [Intégrations intégrées](#integrations-integrées) +- [Appels directs d'API](#appels directs d'API) +- [Intégrations](#intégrations) +- [Recherche courageuse](#brave-search) +- [Base du navigateur](#basedunavigateur) +- [Courriel](#courriel) +- [Araignée](#araignée) +- [Météo](#météo) +- [Wikipédia](#wikipédia) +- [Autres fonctionnalités](#other-features) +- [Ajout d'outils aux agents](#adding-tools-to-agents) +- [Gestion des sessions et des utilisateurs](#managing-sessions-and-users) +- [Intégration et recherche de documents](#document-integration-and-search) +- [Démarrage rapide local](#local-quickstart) +- [Référence SDK](#sdk-reference) +- [Référence API](#api-reference)
diff --git a/README-JA.md b/README-JA.md index dc856698a..e31e512a7 100644 --- a/README-JA.md +++ b/README-JA.md @@ -64,47 +64,50 @@ Julep プロジェクトに新しい貢献者を迎えられることを嬉し
-

📖 Table of Contents

- -- [簡単な例](#%E7%B0%A1%E5%8D%98%E3%81%AA%E4%BE%8B) -- [主な特徴](#%E4%B8%BB%E3%81%AA%E7%89%B9%E5%BE%B4) -- [Julep と LangChain を比較する理由](#julep-%E3%81%A8-langchain-%E3%82%92%E6%AF%94%E8%BC%83%E3%81%99%E3%82%8B%E7%90%86%E7%94%B1) - - [さまざまなユースケース](#%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%A6%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%82%B9) - - [異なるフォームファクタ](#%E7%95%B0%E3%81%AA%E3%82%8B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF) -- [インストール](#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) -- [Python クイックスタート 🐍](#python-%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88-) - - [ステップ 1: エージェントを作成する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%97-1-%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B) - - [ステップ2: ストーリーと漫画を生成するタスクを作成する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%972-%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AA%E3%83%BC%E3%81%A8%E6%BC%AB%E7%94%BB%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B) - - [ステップ3: タスクを実行する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%973-%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B) - - [ステップ4: エージェントとチャットする](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%974-%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%A8%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%81%99%E3%82%8B) -- [Node.js クイックスタート 🟩](#nodejs-%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88-) - - [ステップ 1: エージェントを作成する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%97-1-%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-1) - - [ステップ2: ストーリーと漫画を生成するタスクを作成する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%972-%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AA%E3%83%BC%E3%81%A8%E6%BC%AB%E7%94%BB%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-1) - - [ステップ3: タスクを実行する](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%973-%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B-1) - - [ステップ4: エージェントとチャットする](#%E3%82%B9%E3%83%86%E3%83%83%E3%83%974-%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%A8%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%81%99%E3%82%8B-1) -- [コンポーネント](#%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88) - - [メンタルモデル](#%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%E3%83%A2%E3%83%87%E3%83%AB) -- [コンセプト](#%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%97%E3%83%88) -- [タスクを理解する](#%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B) - - [ワークフローステップの種類](#%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%AE%E7%A8%AE%E9%A1%9E) -- [ツールの種類](#%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E7%A8%AE%E9%A1%9E) - - [ユーザー定義の `function`](#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E5%AE%9A%E7%BE%A9%E3%81%AE-function) - - [`システム` ツール](#%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0-%E3%83%84%E3%83%BC%E3%83%AB) - - [組み込みの `integration`](#%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%AE-integration) - - [直接の `api_call`](#%E7%9B%B4%E6%8E%A5%E3%81%AE-api_call) -- [統合](#%E7%B5%B1%E5%90%88) - - [ブレイブサーチ](#%E3%83%96%E3%83%AC%E3%82%A4%E3%83%96%E3%82%B5%E3%83%BC%E3%83%81) - - [ブラウザベース](#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%83%99%E3%83%BC%E3%82%B9) - - [メール](#%E3%83%A1%E3%83%BC%E3%83%AB) - - [スパイダー](#%E3%82%B9%E3%83%91%E3%82%A4%E3%83%80%E3%83%BC) - - [ウィキペディア](#%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2) -- [その他の機能](#%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E6%A9%9F%E8%83%BD) - - [エージェントへのツールの追加](#%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%B8%E3%81%AE%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E8%BF%BD%E5%8A%A0) - - [セッションとユーザーの管理](#%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E7%AE%A1%E7%90%86) - - [ドキュメントの統合と検索](#%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E7%B5%B1%E5%90%88%E3%81%A8%E6%A4%9C%E7%B4%A2) -- [ローカルクイックスタート](#%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88) -- [SDK リファレンス](#sdk-%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9) -- [APIリファレンス](#api%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9) +

📖 目次

+ +- [はじめに](#introduction) +- [簡単な例](#quick-example) +- [主な機能](#key-features) +- [なぜ Julep と LangChain を比較するのか?](#why-julep-vs-langchain) +- [さまざまなユースケース](#different-use-cases) +- [異なるフォームファクター](#different-form-factor) +- [要約](#in-summary) +- [インストール](#installation) +- [Python クイックスタート 🐍](#python-quick-start-) +- [ステップ 1: エージェントを作成する](#step-1-create-an-agent) +- [ステップ 2: ストーリーとコミック ストリップを生成するタスクを作成する](#step-2-create-a-task-that-generates-a-story-and-comic-strip) +- [ステップ 3: タスクを実行する](#step-3-execute-the-task) +- [ステップ 4: エージェントとチャットする](#step-4-chat-with-the-agent) +- [Node.js クイック スタート 🟩](#nodejs-quick-start-) +- [ステップ 1: エージェントを作成する](#step-1-create-an-agent-1) +- [ステップ 2: ストーリーとコミック ストリップを生成するタスクを作成する](#step-2-create-a-task-that-generates-a-story-and-comic-strip-1) +- [ステップ 3: タスクを実行する](#step-3-execute-the-task-1) +- [ステップ 4: エージェントとチャットする](#step-4-chat-with-the-agent-1) +- [コンポーネント](#components) +- [メンタルモデル](#mental-model) +- [コンセプト](#concepts) +- [タスクの理解](#understanding-tasks) +- [ワークフロー ステップの種類](#types-of-workflow-steps) +- [ツールの種類](#tool-types) +- [ユーザー定義の `function`](#user-defined-functions) +- [`システム` ツール](#system-tools) +- [組み込みの `integration`s](#built-in-integrations) +- [直接の `api_call`](#direct-api_calls) +- [統合](#integrations) +- [勇敢な検索](#brave-search) +- [ブラウザベース](#browserbase) +- [メールアドレス](#email) +- [スパイダー](#spider) +- [天気](#weather) +- [ウィキペディア](#wikipedia) +- [その他の機能](#other-features) +- [エージェントへのツールの追加](#adding-tools-to-agents) +- [セッションとユーザーの管理](#managing-sessions-and-users) +- [ドキュメントの統合と検索](#document-integration-and-search) +- [ローカルクイックスタート](#local-quickstart) +- [SDKリファレンス](#sdk-reference) +- [API リファレンス](#api-reference)
diff --git a/deploy/README.md b/deploy/README.md new file mode 100644 index 000000000..48c004efc --- /dev/null +++ b/deploy/README.md @@ -0,0 +1,69 @@ +# Julep Deployment Configurations + +This directory contains various Docker Compose configurations for deploying Julep in different scenarios. Each configuration is tailored to specific use cases and deployment requirements. + +## Available Configurations + +### 1. Single-Tenant Mode with CPU Embeddings & Managed DB +- **File:** `docker-compose.single-tenant-cpu-managed.yml` +- **Description:** Deploys Julep in single-tenant mode using CPU-based embedding services with managed Temporal and LiteLLM databases. +- **Suitable for:** Development, testing, or small-scale deployments prioritizing simplicity and cost-effectiveness. + +### 2. Multi-Tenant Mode with CPU Embeddings & Managed DB +- **File:** `docker-compose.multi-tenant-cpu-managed.yml` +- **Description:** Deploys Julep in multi-tenant mode using CPU-based embedding services with managed Temporal and LiteLLM databases. +- **Suitable for:** Multi-tenant environments requiring manageable complexity with efficient resource usage. + +### 3. Single-Tenant Mode with GPU Embeddings & Managed DB +- **File:** `docker-compose.single-tenant-gpu-managed.yml` +- **Description:** Deploys Julep in single-tenant mode using GPU-based embedding services with managed Temporal and LiteLLM databases. +- **Suitable for:** Single-tenant deployments needing enhanced performance through GPU-powered embeddings. + +### 4. Multi-Tenant Mode with GPU Embeddings & Managed DB +- **File:** `docker-compose.multi-tenant-gpu-managed.yml` +- **Description:** Deploys Julep in multi-tenant mode using GPU-based embedding services with managed Temporal and LiteLLM databases. +- **Suitable for:** Large-scale multi-tenant deployments demanding high-performance embeddings. + +### 5. Single-Tenant Mode with CPU Embeddings & Self-Hosted DB +- **File:** `docker-compose.single-tenant-cpu-selfhosted.yml` +- **Description:** Deploys Julep in single-tenant mode using CPU-based embedding services with self-hosted Temporal and LiteLLM databases. +- **Suitable for:** Deployments where controlling the database infrastructure is preferred over managed services. + +### 6. Multi-Tenant Mode with CPU Embeddings & Self-Hosted DB +- **File:** `docker-compose.multi-tenant-cpu-selfhosted.yml` +- **Description:** Deploys Julep in multi-tenant mode using CPU-based embedding services with self-hosted Temporal and LiteLLM databases. +- **Suitable for:** Multi-tenant deployments with greater control over database services, ideal for organizations with specific compliance or customization needs. + +### 7. Single-Tenant Mode with GPU Embeddings & Self-Hosted DB +- **File:** `docker-compose.single-tenant-gpu-selfhosted.yml` +- **Description:** Deploys Julep in single-tenant mode using GPU-based embedding services with self-hosted Temporal and LiteLLM databases. +- **Suitable for:** High-performance single-tenant deployments that require self-managed databases for specialized configurations. + +### 8. Multi-Tenant Mode with GPU Embeddings & Self-Hosted DB +- **File:** `docker-compose.multi-tenant-gpu-selfhosted.yml` +- **Description:** Deploys Julep in multi-tenant mode using GPU-based embedding services with self-hosted Temporal and LiteLLM databases. +- **Suitable for:** High-performance, multi-tenant deployments that require full control over both embedding services and database infrastructure. + +## Configuration Components + +Each configuration file combines the following components: + +- **Tenancy Mode:** Single-tenant or Multi-tenant +- **Embedding Service:** CPU-based or GPU-based +- **Database Management:** Managed or Self-hosted + +## Additional Services + +- **Temporal UI:** Available as an optional add-on for all configurations to provide a web-based interface for monitoring Temporal workflows. + +## Choosing a Configuration + +Select the configuration that best matches your deployment requirements, considering factors such as: + +- Number of tenants +- Performance needs +- Infrastructure control preferences +- Scalability requirements +- Development vs. Production environment + +Refer to the individual Docker Compose files for detailed service configurations and environment variable requirements. \ No newline at end of file diff --git a/deploy/docker-compose.multi-tenant-cpu-managed.yml b/deploy/docker-compose.multi-tenant-cpu-managed.yml new file mode 100644 index 000000000..777b5fa07 --- /dev/null +++ b/deploy/docker-compose.multi-tenant-cpu-managed.yml @@ -0,0 +1,175 @@ +version: '3.8' + +services: + memory-store: + image: julepai/memory-store:${TAG} + environment: + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_PORT: 9070 + COZO_MNT_DIR: /data + COZO_BACKUP_DIR: /backup + volumes: + - cozo_data:/data + - cozo_backup:/backup + ports: + - "9070:9070" + + gateway: + image: julepai/gateway:${TAG} + environment: + GATEWAY_PORT: 80 + JWT_SHARED_KEY: ${JWT_SHARED_KEY} + AGENTS_API_URL: http://agents-api-multi-tenant:8080 + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + TRAEFIK_LOG_LEVEL: INFO + ports: + - "80:80" + + embedding-service: + image: ghcr.io/huggingface/text-embeddings-inference:cpu-1.5 + environment: + MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + OPENAI_API_KEY: ${OPENAI_API_KEY} + ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} + GROQ_API_KEY: ${GROQ_API_KEY} + CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY} + CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID} + NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY} + GITHUB_API_KEY: ${GITHUB_API_KEY} + VOYAGE_API_KEY: ${VOYAGE_API_KEY} + GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS} + TRUNCATE_EMBED_TEXT: True + volumes: + - ~/.cache/huggingface/hub:/data + + agents-api-multi-tenant: + image: julepai/agents-api:${TAG} + environment: + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + AGENTS_API_HOSTNAME: gateway + AGENTS_API_PUBLIC_PORT: 80 + AGENTS_API_PROTOCOL: http + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_HOST: http://memory-store:9070 + DEBUG: False + EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + INTEGRATION_SERVICE_URL: http://integrations:8000 + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + LITELLM_URL: http://litellm:4000 + SUMMARIZATION_MODEL_NAME: gpt-4-turbo + TEMPORAL_ENDPOINT: temporal:7233 + TEMPORAL_NAMESPACE: default + TEMPORAL_TASK_QUEUE: julep-task-queue + TEMPORAL_WORKER_URL: temporal:7233 + WORKER_URL: temporal:7233 + AGENTS_API_MULTI_TENANT_MODE: true + AGENTS_API_PREFIX: "/api" + ports: + - "8080:8080" + depends_on: + memory-store: + condition: service_started + gateway: + condition: service_started + + litellm: + image: ghcr.io/berriai/litellm-database:main-v1.46.6 + environment: + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + DATABASE_URL: ${LITELLM_DATABASE_URL:-postgresql://${LITELLM_POSTGRES_USER:-llmproxy}:${LITELLM_POSTGRES_PASSWORD}@litellm-db:5432/${LITELLM_POSTGRES_DB:-litellm}?sslmode=prefer_ssl} + REDIS_URL: ${LITELLM_REDIS_URL:-redis://default:${LITELLM_REDIS_PASSWORD}@litellm-redis:6379} + OPENAI_API_KEY: ${OPENAI_API_KEY} + ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} + GROQ_API_KEY: ${GROQ_API_KEY} + CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY} + CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID} + NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY} + GITHUB_API_KEY: ${GITHUB_API_KEY} + VOYAGE_API_KEY: ${VOYAGE_API_KEY} + GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS} + volumes: + - ./litellm-config.yaml:/app/config.yaml + - .keys:/app/.keys:ro + ports: + - "4000:4000" + depends_on: + litellm-db: + condition: service_started + litellm-redis: + condition: service_started + + litellm-db: + image: postgres:16 + restart: unless-stopped + volumes: + - litellm-db-data:/var/lib/postgresql/data + environment: + POSTGRES_DB: ${LITELLM_POSTGRES_DB:-litellm} + POSTGRES_USER: ${LITELLM_POSTGRES_USER:-llmproxy} + POSTGRES_PASSWORD: ${LITELLM_POSTGRES_PASSWORD} + healthcheck: + test: ["CMD-SHELL", "pg_isready -d ${LITELLM_POSTGRES_DB:-litellm} -U ${LITELLM_POSTGRES_USER:-llmproxy}"] + interval: 1s + timeout: 5s + retries: 10 + + litellm-redis: + image: redis/redis-stack-server + restart: unless-stopped + environment: + REDIS_ARGS: --requirepass ${LITELLM_REDIS_PASSWORD} + volumes: + - litellm-redis-data:/data + + temporal: + image: temporalio/auto-setup:1.25 + hostname: temporal + environment: + POSTGRES_PWD: ${TEMPORAL_POSTGRES_PASSWORD} + POSTGRES_DB: ${TEMPORAL_POSTGRES_DB:-temporal} + POSTGRES_SEEDS: temporal-db + DB_HOST: temporal-db + DB_PORT: 5432 + POSTGRES_USER: temporal + TEMPORAL_ADDRESS: temporal:7233 + POSTGRES_TLS_ENABLED: false + POSTGRES_TLS_CA_FILE: /cert/ca.crt + SQL_TLS_ENABLED: false + SQL_CA: /cert/ca.crt + POSTGRES_TLS_DISABLE_HOST_VERIFICATION: false + VISIBILITY_DBNAME: temporal_visibility + SKIP_SCHEMA_SETUP: false + SKIP_DB_CREATE: false + DYNAMIC_CONFIG_FILE_PATH: config/dynamicconfig/temporal-postgres.yaml + DB: postgres12 + LOG_LEVEL: info + volumes: + - ./scheduler/dynamicconfig:/etc/temporal/config/dynamicconfig + - ./scheduler/cert:/cert + depends_on: + temporal-db: + condition: service_started + + temporal-db: + image: postgres:16 + restart: unless-stopped + volumes: + - temporal-db-data:/var/lib/postgresql/data + environment: + POSTGRES_DB: ${TEMPORAL_POSTGRES_DB:-temporal} + POSTGRES_USER: temporal + POSTGRES_PASSWORD: ${TEMPORAL_POSTGRES_PASSWORD} + healthcheck: + test: ["CMD-SHELL", "pg_isready -d ${TEMPORAL_POSTGRES_DB:-temporal} -U temporal"] + interval: 1s + timeout: 5s + retries: 10 + +volumes: + cozo_data: + cozo_backup: + litellm-db-data: + litellm-redis-data: + temporal-db-data: \ No newline at end of file diff --git a/deploy/docker-compose.multi-tenant-cpu-selfhosted.yml b/deploy/docker-compose.multi-tenant-cpu-selfhosted.yml new file mode 100644 index 000000000..caf68e46c --- /dev/null +++ b/deploy/docker-compose.multi-tenant-cpu-selfhosted.yml @@ -0,0 +1,144 @@ +version: '3.8' + +services: + memory-store: + image: julepai/memory-store:${TAG} + environment: + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_PORT: 9070 + COZO_MNT_DIR: /data + COZO_BACKUP_DIR: /backup + volumes: + - cozo_data:/data + - cozo_backup:/backup + ports: + - "9070:9070" + + gateway: + image: julepai/gateway:${TAG} + environment: + GATEWAY_PORT: 80 + JWT_SHARED_KEY: ${JWT_SHARED_KEY} + AGENTS_API_URL: http://agents-api-multi-tenant:8080 + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + TRAEFIK_LOG_LEVEL: INFO + ports: + - "80:80" + + embedding-service: + image: ghcr.io/huggingface/text-embeddings-inference:cpu-1.5 + environment: + MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + OPENAI_API_KEY: ${OPENAI_API_KEY} + ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} + GROQ_API_KEY: ${GROQ_API_KEY} + CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY} + CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID} + NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY} + GITHUB_API_KEY: ${GITHUB_API_KEY} + VOYAGE_API_KEY: ${VOYAGE_API_KEY} + GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS} + TRUNCATE_EMBED_TEXT: True + volumes: + - ~/.cache/huggingface/hub:/data + + agents-api-multi-tenant: + image: julepai/agents-api:${TAG} + environment: + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + AGENTS_API_HOSTNAME: gateway + AGENTS_API_PUBLIC_PORT: 80 + AGENTS_API_PROTOCOL: http + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_HOST: http://memory-store:9070 + DEBUG: False + EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + INTEGRATION_SERVICE_URL: http://integrations:8000 + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + LITELLM_URL: http://litellm:4000 + SUMMARIZATION_MODEL_NAME: gpt-4-turbo + TEMPORAL_ENDPOINT: temporal:7233 + TEMPORAL_NAMESPACE: default + TEMPORAL_TASK_QUEUE: julep-task-queue + TEMPORAL_WORKER_URL: temporal:7233 + WORKER_URL: temporal:7233 + AGENTS_API_MULTI_TENANT_MODE: true + AGENTS_API_PREFIX: "/api" + ports: + - "8080:8080" + depends_on: + memory-store: + condition: service_started + gateway: + condition: service_started + + litellm: + image: ghcr.io/berriai/litellm-database:main-v1.46.6 + environment: + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + DATABASE_URL: postgresql://${LITELLM_POSTGRES_USER:-llmproxy}:${LITELLM_POSTGRES_PASSWORD}@litellm-db:5432/${LITELLM_POSTGRES_DB:-litellm}?sslmode=prefer + REDIS_URL: redis://default:${LITELLM_REDIS_PASSWORD}@litellm-redis:6379 + volumes: + - ./litellm-config.yaml:/app/config.yaml + - .keys:/app/.keys:ro + ports: + - "4000:4000" + depends_on: + litellm-db: + condition: service_healthy + litellm-redis: + condition: service_started + + litellm-db: + image: postgres:16 + environment: + POSTGRES_DB: ${LITELLM_POSTGRES_DB:-litellm} + POSTGRES_USER: ${LITELLM_POSTGRES_USER:-llmproxy} + POSTGRES_PASSWORD: ${LITELLM_POSTGRES_PASSWORD} + volumes: + - litellm-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${LITELLM_POSTGRES_USER:-llmproxy}"] + interval: 5s + timeout: 5s + retries: 5 + + litellm-redis: + image: redis:6 + command: redis-server --requirepass ${LITELLM_REDIS_PASSWORD} + volumes: + - litellm-redis-data:/data + + temporal: + image: temporalio/auto-setup:1.25 + environment: + - DB=postgresql + - DB_PORT=5432 + - POSTGRES_USER=${TEMPORAL_POSTGRES_USER:-temporal} + - POSTGRES_PWD=${TEMPORAL_POSTGRES_PASSWORD} + - POSTGRES_SEEDS=temporal-db + depends_on: + temporal-db: + condition: service_healthy + + temporal-db: + image: postgres:16 + environment: + POSTGRES_PASSWORD: ${TEMPORAL_POSTGRES_PASSWORD} + POSTGRES_USER: ${TEMPORAL_POSTGRES_USER:-temporal} + volumes: + - temporal-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${TEMPORAL_POSTGRES_USER:-temporal}"] + interval: 5s + timeout: 5s + retries: 5 + +volumes: + cozo_data: + cozo_backup: + litellm-db-data: + litellm-redis-data: + temporal-db-data: \ No newline at end of file diff --git a/deploy/docker-compose.multi-tenant-gpu-managed.yml b/deploy/docker-compose.multi-tenant-gpu-managed.yml new file mode 100644 index 000000000..e9e1e9bd7 --- /dev/null +++ b/deploy/docker-compose.multi-tenant-gpu-managed.yml @@ -0,0 +1,84 @@ +version: '3.8' + +services: + memory-store: + image: julepai/memory-store:${TAG} + environment: + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_PORT: 9070 + COZO_MNT_DIR: /data + COZO_BACKUP_DIR: /backup + volumes: + - cozo_data:/data + - cozo_backup:/backup + ports: + - "9070:9070" + + gateway: + image: julepai/gateway:${TAG} + environment: + GATEWAY_PORT: 80 + JWT_SHARED_KEY: ${JWT_SHARED_KEY} + AGENTS_API_URL: http://agents-api-multi-tenant:8080 + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + TRAEFIK_LOG_LEVEL: INFO + ports: + - "80:80" + + embedding-service: + image: ghcr.io/huggingface/text-embeddings-inference:gpu-1.5 + environment: + MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + OPENAI_API_KEY: ${OPENAI_API_KEY} + ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} + GROQ_API_KEY: ${GROQ_API_KEY} + CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY} + CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID} + NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY} + GITHUB_API_KEY: ${GITHUB_API_KEY} + VOYAGE_API_KEY: ${VOYAGE_API_KEY} + GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS} + TRUNCATE_EMBED_TEXT: True + volumes: + - ~/.cache/huggingface/hub:/data + deploy: + resources: + reservations: + devices: + - capabilities: [gpu] + + agents-api-multi-tenant: + image: julepai/agents-api:${TAG} + environment: + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + AGENTS_API_HOSTNAME: gateway + AGENTS_API_PUBLIC_PORT: 80 + AGENTS_API_PROTOCOL: http + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_HOST: http://memory-store:9070 + DEBUG: False + EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + INTEGRATION_SERVICE_URL: http://integrations:8000 + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + LITELLM_URL: http://litellm:4000 + SUMMARIZATION_MODEL_NAME: gpt-4-turbo + TEMPORAL_ENDPOINT: temporal:7233 + TEMPORAL_NAMESPACE: default + TEMPORAL_TASK_QUEUE: julep-task-queue + TEMPORAL_WORKER_URL: temporal:7233 + WORKER_URL: temporal:7233 + AGENTS_API_MULTI_TENANT_MODE: true + AGENTS_API_PREFIX: "/api" + ports: + - "8080:8080" + depends_on: + memory-store: + condition: service_started + gateway: + condition: service_started + +volumes: + cozo_data: + cozo_backup: \ No newline at end of file diff --git a/deploy/docker-compose.multi-tenant-gpu-selfhosted.yml b/deploy/docker-compose.multi-tenant-gpu-selfhosted.yml new file mode 100644 index 000000000..737a21e2d --- /dev/null +++ b/deploy/docker-compose.multi-tenant-gpu-selfhosted.yml @@ -0,0 +1,149 @@ +version: '3.8' + +services: + memory-store: + image: julepai/memory-store:${TAG} + environment: + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_PORT: 9070 + COZO_MNT_DIR: /data + COZO_BACKUP_DIR: /backup + volumes: + - cozo_data:/data + - cozo_backup:/backup + ports: + - "9070:9070" + + gateway: + image: julepai/gateway:${TAG} + environment: + GATEWAY_PORT: 80 + JWT_SHARED_KEY: ${JWT_SHARED_KEY} + AGENTS_API_URL: http://agents-api-multi-tenant:8080 + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + TRAEFIK_LOG_LEVEL: INFO + ports: + - "80:80" + + embedding-service: + image: ghcr.io/huggingface/text-embeddings-inference:gpu-1.5 + environment: + MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + OPENAI_API_KEY: ${OPENAI_API_KEY} + ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} + GROQ_API_KEY: ${GROQ_API_KEY} + CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY} + CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID} + NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY} + GITHUB_API_KEY: ${GITHUB_API_KEY} + VOYAGE_API_KEY: ${VOYAGE_API_KEY} + GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS} + TRUNCATE_EMBED_TEXT: True + volumes: + - ~/.cache/huggingface/hub:/data + deploy: + resources: + reservations: + devices: + - capabilities: [gpu] + + agents-api-multi-tenant: + image: julepai/agents-api:${TAG} + environment: + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + AGENTS_API_HOSTNAME: gateway + AGENTS_API_PUBLIC_PORT: 80 + AGENTS_API_PROTOCOL: http + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_HOST: http://memory-store:9070 + DEBUG: False + EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + INTEGRATION_SERVICE_URL: http://integrations:8000 + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + LITELLM_URL: http://litellm:4000 + SUMMARIZATION_MODEL_NAME: gpt-4-turbo + TEMPORAL_ENDPOINT: temporal:7233 + TEMPORAL_NAMESPACE: default + TEMPORAL_TASK_QUEUE: julep-task-queue + TEMPORAL_WORKER_URL: temporal:7233 + WORKER_URL: temporal:7233 + AGENTS_API_MULTI_TENANT_MODE: true + AGENTS_API_PREFIX: "/api" + ports: + - "8080:8080" + depends_on: + memory-store: + condition: service_started + gateway: + condition: service_started + + litellm: + image: ghcr.io/berriai/litellm-database:main-v1.46.6 + environment: + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + DATABASE_URL: postgresql://${LITELLM_POSTGRES_USER:-llmproxy}:${LITELLM_POSTGRES_PASSWORD}@litellm-db:5432/${LITELLM_POSTGRES_DB:-litellm}?sslmode=prefer + REDIS_URL: redis://default:${LITELLM_REDIS_PASSWORD}@litellm-redis:6379 + volumes: + - ./litellm-config.yaml:/app/config.yaml + - .keys:/app/.keys:ro + ports: + - "4000:4000" + depends_on: + litellm-db: + condition: service_healthy + litellm-redis: + condition: service_started + + litellm-db: + image: postgres:16 + environment: + POSTGRES_DB: ${LITELLM_POSTGRES_DB:-litellm} + POSTGRES_USER: ${LITELLM_POSTGRES_USER:-llmproxy} + POSTGRES_PASSWORD: ${LITELLM_POSTGRES_PASSWORD} + volumes: + - litellm-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${LITELLM_POSTGRES_USER:-llmproxy}"] + interval: 5s + timeout: 5s + retries: 5 + + litellm-redis: + image: redis:6 + command: redis-server --requirepass ${LITELLM_REDIS_PASSWORD} + volumes: + - litellm-redis-data:/data + + temporal: + image: temporalio/auto-setup:1.25 + environment: + - DB=postgresql + - DB_PORT=5432 + - POSTGRES_USER=${TEMPORAL_POSTGRES_USER:-temporal} + - POSTGRES_PWD=${TEMPORAL_POSTGRES_PASSWORD} + - POSTGRES_SEEDS=temporal-db + depends_on: + temporal-db: + condition: service_healthy + + temporal-db: + image: postgres:16 + environment: + POSTGRES_PASSWORD: ${TEMPORAL_POSTGRES_PASSWORD} + POSTGRES_USER: ${TEMPORAL_POSTGRES_USER:-temporal} + volumes: + - temporal-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${TEMPORAL_POSTGRES_USER:-temporal}"] + interval: 5s + timeout: 5s + retries: 5 + +volumes: + cozo_data: + cozo_backup: + litellm-db-data: + litellm-redis-data: + temporal-db-data: \ No newline at end of file diff --git a/deploy/docker-compose.single-tenant-cpu-managed.yml b/deploy/docker-compose.single-tenant-cpu-managed.yml new file mode 100644 index 000000000..cdcf2bc59 --- /dev/null +++ b/deploy/docker-compose.single-tenant-cpu-managed.yml @@ -0,0 +1,75 @@ +version: '3.8' + +services: + memory-store: + image: julepai/memory-store:${TAG} + environment: + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_PORT: 9070 + COZO_MNT_DIR: /data + COZO_BACKUP_DIR: /backup + volumes: + - cozo_data:/data + - cozo_backup:/backup + ports: + - "9070:9070" + + gateway: + image: julepai/gateway:${TAG} + environment: + GATEWAY_PORT: 80 + JWT_SHARED_KEY: ${JWT_SHARED_KEY} + AGENTS_API_URL: http://agents-api:8080 + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + TRAEFIK_LOG_LEVEL: INFO + ports: + - "80:80" + + embedding-service: + image: ghcr.io/huggingface/text-embeddings-inference:cpu-1.5 + environment: + MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + OPENAI_API_KEY: ${OPENAI_API_KEY} + ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} + GROQ_API_KEY: ${GROQ_API_KEY} + CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY} + CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID} + NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY} + GITHUB_API_KEY: ${GITHUB_API_KEY} + VOYAGE_API_KEY: ${VOYAGE_API_KEY} + GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS} + TRUNCATE_EMBED_TEXT: True + volumes: + - ~/.cache/huggingface/hub:/data + + agents-api: + image: julepai/agents-api:${TAG} + environment: + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + AGENTS_API_HOSTNAME: localhost + AGENTS_API_PUBLIC_PORT: 80 + AGENTS_API_PROTOCOL: http + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_HOST: http://memory-store:9070 + DEBUG: False + EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + INTEGRATION_SERVICE_URL: http://integrations:8000 + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + LITELLM_URL: http://litellm:4000 + SUMMARIZATION_MODEL_NAME: gpt-4-turbo + TEMPORAL_ENDPOINT: temporal:7233 + TEMPORAL_NAMESPACE: default + TEMPORAL_TASK_QUEUE: julep-task-queue + TEMPORAL_WORKER_URL: temporal:7233 + WORKER_URL: temporal:7233 + ports: + - "8080:8080" + depends_on: + memory-store: + condition: service_started + +volumes: + cozo_data: + cozo_backup: \ No newline at end of file diff --git a/deploy/docker-compose.single-tenant-cpu-selfhosted.yml b/deploy/docker-compose.single-tenant-cpu-selfhosted.yml new file mode 100644 index 000000000..9cd63e64e --- /dev/null +++ b/deploy/docker-compose.single-tenant-cpu-selfhosted.yml @@ -0,0 +1,140 @@ +version: '3.8' + +services: + memory-store: + image: julepai/memory-store:${TAG} + environment: + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_PORT: 9070 + COZO_MNT_DIR: /data + COZO_BACKUP_DIR: /backup + volumes: + - cozo_data:/data + - cozo_backup:/backup + ports: + - "9070:9070" + + gateway: + image: julepai/gateway:${TAG} + environment: + GATEWAY_PORT: 80 + JWT_SHARED_KEY: ${JWT_SHARED_KEY} + AGENTS_API_URL: http://agents-api:8080 + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + TRAEFIK_LOG_LEVEL: INFO + ports: + - "80:80" + + embedding-service: + image: ghcr.io/huggingface/text-embeddings-inference:cpu-1.5 + environment: + MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + OPENAI_API_KEY: ${OPENAI_API_KEY} + ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} + GROQ_API_KEY: ${GROQ_API_KEY} + CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY} + CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID} + NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY} + GITHUB_API_KEY: ${GITHUB_API_KEY} + VOYAGE_API_KEY: ${VOYAGE_API_KEY} + GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS} + TRUNCATE_EMBED_TEXT: True + volumes: + - ~/.cache/huggingface/hub:/data + + agents-api: + image: julepai/agents-api:${TAG} + environment: + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + AGENTS_API_HOSTNAME: localhost + AGENTS_API_PUBLIC_PORT: 80 + AGENTS_API_PROTOCOL: http + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_HOST: http://memory-store:9070 + DEBUG: False + EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + INTEGRATION_SERVICE_URL: http://integrations:8000 + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + LITELLM_URL: http://litellm:4000 + SUMMARIZATION_MODEL_NAME: gpt-4-turbo + TEMPORAL_ENDPOINT: temporal:7233 + TEMPORAL_NAMESPACE: default + TEMPORAL_TASK_QUEUE: julep-task-queue + TEMPORAL_WORKER_URL: temporal:7233 + WORKER_URL: temporal:7233 + ports: + - "8080:8080" + depends_on: + memory-store: + condition: service_started + + litellm: + image: ghcr.io/berriai/litellm-database:main-v1.46.6 + environment: + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + DATABASE_URL: postgresql://${LITELLM_POSTGRES_USER:-llmproxy}:${LITELLM_POSTGRES_PASSWORD}@litellm-db:5432/${LITELLM_POSTGRES_DB:-litellm}?sslmode=prefer + REDIS_URL: redis://default:${LITELLM_REDIS_PASSWORD}@litellm-redis:6379 + volumes: + - ./litellm-config.yaml:/app/config.yaml + - .keys:/app/.keys:ro + ports: + - "4000:4000" + depends_on: + litellm-db: + condition: service_healthy + litellm-redis: + condition: service_started + + litellm-db: + image: postgres:16 + environment: + POSTGRES_DB: ${LITELLM_POSTGRES_DB:-litellm} + POSTGRES_USER: ${LITELLM_POSTGRES_USER:-llmproxy} + POSTGRES_PASSWORD: ${LITELLM_POSTGRES_PASSWORD} + volumes: + - litellm-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${LITELLM_POSTGRES_USER:-llmproxy}"] + interval: 5s + timeout: 5s + retries: 5 + + litellm-redis: + image: redis:6 + command: redis-server --requirepass ${LITELLM_REDIS_PASSWORD} + volumes: + - litellm-redis-data:/data + + temporal: + image: temporalio/auto-setup:1.25 + environment: + - DB=postgresql + - DB_PORT=5432 + - POSTGRES_USER=${TEMPORAL_POSTGRES_USER:-temporal} + - POSTGRES_PWD=${TEMPORAL_POSTGRES_PASSWORD} + - POSTGRES_SEEDS=temporal-db + depends_on: + temporal-db: + condition: service_healthy + + temporal-db: + image: postgres:16 + environment: + POSTGRES_PASSWORD: ${TEMPORAL_POSTGRES_PASSWORD} + POSTGRES_USER: ${TEMPORAL_POSTGRES_USER:-temporal} + volumes: + - temporal-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${TEMPORAL_POSTGRES_USER:-temporal}"] + interval: 5s + timeout: 5s + retries: 5 + +volumes: + cozo_data: + cozo_backup: + litellm-db-data: + litellm-redis-data: + temporal-db-data: \ No newline at end of file diff --git a/deploy/docker-compose.single-tenant-gpu-managed.yml b/deploy/docker-compose.single-tenant-gpu-managed.yml new file mode 100644 index 000000000..eda0f371d --- /dev/null +++ b/deploy/docker-compose.single-tenant-gpu-managed.yml @@ -0,0 +1,80 @@ +version: '3.8' + +services: + memory-store: + image: julepai/memory-store:${TAG} + environment: + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_PORT: 9070 + COZO_MNT_DIR: /data + COZO_BACKUP_DIR: /backup + volumes: + - cozo_data:/data + - cozo_backup:/backup + ports: + - "9070:9070" + + gateway: + image: julepai/gateway:${TAG} + environment: + GATEWAY_PORT: 80 + JWT_SHARED_KEY: ${JWT_SHARED_KEY} + AGENTS_API_URL: http://agents-api:8080 + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + TRAEFIK_LOG_LEVEL: INFO + ports: + - "80:80" + + embedding-service: + image: ghcr.io/huggingface/text-embeddings-inference:gpu-1.5 + environment: + MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + OPENAI_API_KEY: ${OPENAI_API_KEY} + ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} + GROQ_API_KEY: ${GROQ_API_KEY} + CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY} + CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID} + NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY} + GITHUB_API_KEY: ${GITHUB_API_KEY} + VOYAGE_API_KEY: ${VOYAGE_API_KEY} + GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS} + TRUNCATE_EMBED_TEXT: True + volumes: + - ~/.cache/huggingface/hub:/data + deploy: + resources: + reservations: + devices: + - capabilities: [gpu] + + agents-api: + image: julepai/agents-api:${TAG} + environment: + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + AGENTS_API_HOSTNAME: localhost + AGENTS_API_PUBLIC_PORT: 80 + AGENTS_API_PROTOCOL: http + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_HOST: http://memory-store:9070 + DEBUG: False + EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + INTEGRATION_SERVICE_URL: http://integrations:8000 + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + LITELLM_URL: http://litellm:4000 + SUMMARIZATION_MODEL_NAME: gpt-4-turbo + TEMPORAL_ENDPOINT: temporal:7233 + TEMPORAL_NAMESPACE: default + TEMPORAL_TASK_QUEUE: julep-task-queue + TEMPORAL_WORKER_URL: temporal:7233 + WORKER_URL: temporal:7233 + ports: + - "8080:8080" + depends_on: + memory-store: + condition: service_started + +volumes: + cozo_data: + cozo_backup: \ No newline at end of file diff --git a/deploy/docker-compose.single-tenant-gpu-selfhosted.yml b/deploy/docker-compose.single-tenant-gpu-selfhosted.yml new file mode 100644 index 000000000..c6f42fa98 --- /dev/null +++ b/deploy/docker-compose.single-tenant-gpu-selfhosted.yml @@ -0,0 +1,145 @@ +version: '3.8' + +services: + memory-store: + image: julepai/memory-store:${TAG} + environment: + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_PORT: 9070 + COZO_MNT_DIR: /data + COZO_BACKUP_DIR: /backup + volumes: + - cozo_data:/data + - cozo_backup:/backup + ports: + - "9070:9070" + + gateway: + image: julepai/gateway:${TAG} + environment: + GATEWAY_PORT: 80 + JWT_SHARED_KEY: ${JWT_SHARED_KEY} + AGENTS_API_URL: http://agents-api:8080 + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + TRAEFIK_LOG_LEVEL: INFO + ports: + - "80:80" + + embedding-service: + image: ghcr.io/huggingface/text-embeddings-inference:gpu-1.5 + environment: + MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + OPENAI_API_KEY: ${OPENAI_API_KEY} + ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} + GROQ_API_KEY: ${GROQ_API_KEY} + CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY} + CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID} + NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY} + GITHUB_API_KEY: ${GITHUB_API_KEY} + VOYAGE_API_KEY: ${VOYAGE_API_KEY} + GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS} + TRUNCATE_EMBED_TEXT: True + volumes: + - ~/.cache/huggingface/hub:/data + deploy: + resources: + reservations: + devices: + - capabilities: [gpu] + + agents-api: + image: julepai/agents-api:${TAG} + environment: + AGENTS_API_KEY: ${AGENTS_API_KEY} + AGENTS_API_KEY_HEADER_NAME: Authorization + AGENTS_API_HOSTNAME: localhost + AGENTS_API_PUBLIC_PORT: 80 + AGENTS_API_PROTOCOL: http + COZO_AUTH_TOKEN: ${COZO_AUTH_TOKEN} + COZO_HOST: http://memory-store:9070 + DEBUG: False + EMBEDDING_MODEL_ID: Alibaba-NLP/gte-large-en-v1.5 + INTEGRATION_SERVICE_URL: http://integrations:8000 + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + LITELLM_URL: http://litellm:4000 + SUMMARIZATION_MODEL_NAME: gpt-4-turbo + TEMPORAL_ENDPOINT: temporal:7233 + TEMPORAL_NAMESPACE: default + TEMPORAL_TASK_QUEUE: julep-task-queue + TEMPORAL_WORKER_URL: temporal:7233 + WORKER_URL: temporal:7233 + ports: + - "8080:8080" + depends_on: + memory-store: + condition: service_started + + litellm: + image: ghcr.io/berriai/litellm-database:main-v1.46.6 + environment: + LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} + DATABASE_URL: postgresql://${LITELLM_POSTGRES_USER:-llmproxy}:${LITELLM_POSTGRES_PASSWORD}@litellm-db:5432/${LITELLM_POSTGRES_DB:-litellm}?sslmode=prefer + REDIS_URL: redis://default:${LITELLM_REDIS_PASSWORD}@litellm-redis:6379 + volumes: + - ./litellm-config.yaml:/app/config.yaml + - .keys:/app/.keys:ro + ports: + - "4000:4000" + depends_on: + litellm-db: + condition: service_healthy + litellm-redis: + condition: service_started + + litellm-db: + image: postgres:16 + environment: + POSTGRES_DB: ${LITELLM_POSTGRES_DB:-litellm} + POSTGRES_USER: ${LITELLM_POSTGRES_USER:-llmproxy} + POSTGRES_PASSWORD: ${LITELLM_POSTGRES_PASSWORD} + volumes: + - litellm-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${LITELLM_POSTGRES_USER:-llmproxy}"] + interval: 5s + timeout: 5s + retries: 5 + + litellm-redis: + image: redis:6 + command: redis-server --requirepass ${LITELLM_REDIS_PASSWORD} + volumes: + - litellm-redis-data:/data + + temporal: + image: temporalio/auto-setup:1.25 + environment: + - DB=postgresql + - DB_PORT=5432 + - POSTGRES_USER=${TEMPORAL_POSTGRES_USER:-temporal} + - POSTGRES_PWD=${TEMPORAL_POSTGRES_PASSWORD} + - POSTGRES_SEEDS=temporal-db + depends_on: + temporal-db: + condition: service_healthy + + temporal-db: + image: postgres:16 + environment: + POSTGRES_PASSWORD: ${TEMPORAL_POSTGRES_PASSWORD} + POSTGRES_USER: ${TEMPORAL_POSTGRES_USER:-temporal} + volumes: + - temporal-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${TEMPORAL_POSTGRES_USER:-temporal}"] + interval: 5s + timeout: 5s + retries: 5 + +volumes: + cozo_data: + cozo_backup: + litellm-db-data: + litellm-redis-data: + temporal-db-data: \ No newline at end of file