teknolis / config /services.php
Codex
Deploy latest assistant, DeepSeek defaults, and automation updates
74acf19
Raw
History Blame Contribute Delete
7.2 kB
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
| as Mailgun, Postmark, AWS and more. This file provides the de facto
| location for this type of information, allowing packages to have
| a conventional file to locate the various service credentials.
|
*/
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
'scheme' => 'https',
],
'postmark' => [
'token' => env('POSTMARK_TOKEN'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT_URI'),
],
'openai' => [
'api_key' => env('OPENAI_API_KEY'),
'base_url' => env('OPENAI_BASE_URL', 'https://api.openai.com/v1'),
'model' => env('OPENAI_MODEL', 'gpt-4o'),
'video_model' => env('OPENAI_VIDEO_MODEL', 'sora-2'),
'video_poll_interval' => env('OPENAI_VIDEO_POLL_INTERVAL', 5),
'chat_api_key' => env('OPENAI_CHAT_API_KEY'),
'chat_base_url' => env('OPENAI_CHAT_BASE_URL'),
'chat_model' => env('OPENAI_CHAT_MODEL'),
'chat_fallback_model' => env('OPENAI_CHAT_FALLBACK_MODEL'),
'assistant_provider' => env('OPENAI_ASSISTANT_PROVIDER', 'deepseek'),
'assistant_api_key' => env('OPENAI_ASSISTANT_API_KEY'),
'assistant_base_url' => env('OPENAI_ASSISTANT_BASE_URL'),
'assistant_id' => env('OPENAI_ASSISTANT_ID'),
'assistant_use_hosted_threads' => env('OPENAI_ASSISTANT_USE_HOSTED_THREADS', false),
'assistant_model' => env('OPENAI_ASSISTANT_MODEL', 'deepseek-chat'),
'assistant_system_prompt' => env('OPENAI_ASSISTANT_SYSTEM_PROMPT', 'Kamu adalah assistant premium untuk Medilis. Jawaban harus spesifik, tajam, tidak generik, dan langsung bisa dipakai.'),
'assistant_timeout' => env('OPENAI_ASSISTANT_TIMEOUT', 18),
'assistant_run_timeout' => env('OPENAI_ASSISTANT_RUN_TIMEOUT', 90),
'assistant_poll_interval_ms' => env('OPENAI_ASSISTANT_POLL_INTERVAL_MS', 350),
'image_model' => env('OPENAI_IMAGE_MODEL', 'gpt-image-1.5'),
'system_prompt' => env('OPENAI_SYSTEM_PROMPT', 'Kamu adalah asisten AI yang membantu, jelas, dan singkat.'),
'history_limit' => env('OPENAI_HISTORY_LIMIT', 6),
'max_tokens' => env('OPENAI_MAX_TOKENS', 180),
'timeout' => env('OPENAI_TIMEOUT', 40),
'image_timeout' => env('OPENAI_IMAGE_TIMEOUT', 120),
'svg_max_tokens' => env('OPENAI_SVG_MAX_TOKENS', 900),
'daily_message_limit' => env('OPENAI_DAILY_MESSAGE_LIMIT', 40),
],
'pollinations' => [
'api_key' => env('POLLINATIONS_API_KEY'),
'base_url' => env('POLLINATIONS_BASE_URL', 'https://image.pollinations.ai/prompt'),
'model' => env('POLLINATIONS_MODEL', 'flux'),
'timeout' => env('POLLINATIONS_TIMEOUT', 45),
],
'freepik' => [
'api_key' => env('FREEPIK_API_KEY'),
'base_url' => env('FREEPIK_BASE_URL', 'https://api.freepik.com/v1/ai/text-to-image'),
'timeout' => env('FREEPIK_TIMEOUT', 90),
'music_generate_endpoint' => env('FREEPIK_MUSIC_GENERATE_ENDPOINT', 'https://api.freepik.com/v1/ai/music-generation/generate'),
'music_status_endpoint' => env('FREEPIK_MUSIC_STATUS_ENDPOINT', 'https://api.freepik.com/v1/ai/music-generation'),
],
'huggingface' => [
'api_token' => env('HF_TOKEN', env('HF_API_TOKEN')),
'model' => env('HF_MODEL', 'black-forest-labs/FLUX.1-schnell'),
'base_url' => env('HF_BASE_URL', 'https://router.huggingface.co/hf-inference/models'),
'timeout' => env('HF_TIMEOUT', 60),
'media_enabled' => env('HF_MEDIA_ENABLED', false),
'media_driver' => env('HF_MEDIA_DRIVER', 'repo'),
'media_repo_id' => env('HF_MEDIA_REPO_ID', 'adwandw/teknolis-media'),
'media_repo_type' => env('HF_MEDIA_REPO_TYPE', 'dataset'),
'media_bucket_id' => env('HF_MEDIA_BUCKET_ID', env('HF_BUCKET', '')),
'media_path_prefix' => env('HF_MEDIA_PATH_PREFIX', 'laravel-media'),
'media_delete_local' => env('HF_MEDIA_DELETE_LOCAL', true),
'cli_binary' => env('HF_CLI_BINARY', '/usr/local/bin/hf'),
'media_owner_email' => env('HF_MEDIA_OWNER_EMAIL', 'admin@dev.local'),
// Enable HF‑only mode (disable Freepik stock integration). Reads from TOOLS_HF_ONLY env variable.
'hf_only' => env('TOOLS_HF_ONLY', false),
],
'edge_tts' => [
'binary' => env('EDGE_TTS_BINARY', ''),
'voice' => env('EDGE_TTS_VOICE', 'id-ID-GadisNeural'),
'timeout' => env('EDGE_TTS_TIMEOUT', 120),
],
'replicate' => [
'api_key' => env('REPLICATE_API_KEY'),
'base_url' => 'https://api.replicate.com/v1',
'i2v_model' => env('REPLICATE_I2V_MODEL', 'wavespeedai/wan-2.1-i2v-480p'),
'tryon_model' => env('REPLICATE_TRYON_MODEL', 'cedoysch/flux-fill-redux-try-on'),
'tryon_version' => env('REPLICATE_TRYON_VERSION', 'cf5cb07a25e726fe2fac166a8c5ab52ddccd48657741670fb09d9954d4d8446f'),
'timeout' => env('REPLICATE_TIMEOUT', 180),
'poll_interval' => 4, // seconds between status polls
],
'fal' => [
'api_key' => env('FAL_KEY'),
'base_url' => env('FAL_BASE_URL', 'https://queue.fal.run'),
'model' => env('FAL_MODEL', 'fal-ai/flux/schnell'),
'tryon_model' => env('FAL_TRYON_MODEL', 'fal-ai/image-apps-v2/virtual-try-on'),
'timeout' => env('FAL_TIMEOUT', 180),
'poll_interval_ms' => env('FAL_POLL_INTERVAL_MS', 1500),
],
'gemini' => [
'api_key' => env('GEMINI_API_KEY', env('GOOGLE_API_KEY')),
'base_url' => env('GEMINI_BASE_URL', 'https://generativelanguage.googleapis.com/v1beta'),
'veo_model' => env('GEMINI_VEO_MODEL', 'veo-3.1-generate-preview'),
'veo_fast_model' => env('GEMINI_VEO_FAST_MODEL', 'veo-3.1-fast-generate-preview'),
'timeout' => env('GEMINI_TIMEOUT', 180),
'poll_interval' => env('GEMINI_POLL_INTERVAL', 10),
],
'ollama' => [
'base_url' => env('OLLAMA_BASE_URL', 'http://127.0.0.1:11434'),
'model' => env('OLLAMA_MODEL', 'llama3.2'),
'system_prompt' => env('OLLAMA_SYSTEM_PROMPT', 'Kamu adalah asisten AI yang membantu, jelas, dan singkat.'),
'history_limit' => env('OLLAMA_HISTORY_LIMIT', 12),
'num_predict' => env('OLLAMA_NUM_PREDICT', 256),
'timeout' => env('OLLAMA_TIMEOUT', 90),
],
'deepseek' => [
'api_key' => env('DEEPSEEK_API_KEY'),
'base_url' => env('DEEPSEEK_BASE_URL', 'https://api.deepseek.com'),
'model' => env('DEEPSEEK_MODEL', 'deepseek-chat'),
],
];