mirror of
https://github.com/smkrv/ha-text-ai.git
synced 2026-07-21 22:54:00 +08:00
Features: - disable_thinking toggle (issue #11) with per-provider semantics: OpenAI classic gets /no_think soft-switch, OpenAI reasoning gets reasoning_effort=low, DeepSeek gets both, Anthropic no-op (thinking opt-in), Gemini 2.5+ gets thinking_budget=0 - OpenAI reasoning model support (o1/o3/o4-mini/gpt-5 family): max_completion_tokens, developer role, reasoning_effort - Per-request disable_thinking override in ask_question service - Provider-specific temperature clip (Anthropic 0-1, others 0-2) Security: - Require API key re-entry on provider change (OptionsFlow) - Validate Anthropic json_schema before system-prompt concatenation - Symlink protection in history file operations - Hardened secret redaction regexes (sk-*, AIza*, x-api-key) - get_history service: hard cap on limit (default 10, max 100) Reliability: - Retry on 502/503/504 in addition to 429/timeout - Honor Retry-After header on 429 - Exception chaining (raise ... from err) - _strip_think_blocks handles nested/dangling tags - normalize_name sha256 fallback for empty-collapse inputs UI/housekeeping: - api_key uses TextSelector(type=PASSWORD) - DeviceInfo entry_type=SERVICE - Services unregister on last entry unload - Dependabot for GitHub Actions - persist-credentials=false in checkout steps - manifest requirements pinned with upper bounds - Ignore docs/plans/ (working artifacts) License: PolyForm Noncommercial 1.0.0 -> MIT No breaking changes: service response shape, sensor attributes, entity IDs and on-disk formats unchanged.
319 lines
20 KiB
JSON
319 lines
20 KiB
JSON
{
|
|
"config": {
|
|
"step": {
|
|
"provider": {
|
|
"title": "प्रदाता सेटिंग्स",
|
|
"description": "आपके द्वारा चुने गए एआई प्रदाता के लिए कनेक्शन विवरण प्रदान करें।",
|
|
"data": {
|
|
"name": "उदाहरण का नाम (जैसे, 'जीपीटी सहायक', 'क्लॉड सहायक')",
|
|
"api_key": "प्रमाणीकरण के लिए एपीआई कुंजी",
|
|
"model": "उपयोग करने के लिए एआई मॉडल",
|
|
"api_endpoint": "कस्टम एपीआई एंडपॉइंट यूआरएल (वैकल्पिक)",
|
|
"temperature": "प्रतिक्रिया की रचनात्मकता (0-2, कम = अधिक केंद्रित)",
|
|
"max_tokens": "प्रतिक्रिया की अधिकतम लंबाई (1-100000 टोकन)",
|
|
"request_interval": "अनुरोधों के बीच न्यूनतम समय (0.1-60 सेकंड)",
|
|
"api_timeout": "एपीआई अनुरोध टाइमआउट सेकंड में (5-600)",
|
|
"context_messages": "रखने के लिए संदर्भ संदेशों की संख्या (1-20)",
|
|
"max_history_size": "अधिकतम बातचीत इतिहास आकार (1-100)",
|
|
"allow_local_network": "स्थानीय नेटवर्क एंडपॉइंट की अनुमति दें (सेल्फ-होस्टेड प्रॉक्सी के लिए)",
|
|
"disable_thinking": "thinking/reasoning मोड बंद करें (Qwen /no_think, <think> ब्लॉक हटाता है, Gemini 2.5 thinking_budget=0)"
|
|
}
|
|
},
|
|
"user": {
|
|
"title": "एचए टेक्स्ट एआई उदाहरण कॉन्फ़िगर करें",
|
|
"description": "अपने चुने हुए प्रदाता के साथ एक नया एआई सहायक उदाहरण सेट करें।",
|
|
"data": {
|
|
"name": "उदाहरण का नाम (जैसे, 'जीपीटी सहायक', 'क्लॉड सहायक')",
|
|
"api_key": "प्रमाणीकरण के लिए एपीआई कुंजी",
|
|
"model": "उपयोग करने के लिए एआई मॉडल",
|
|
"temperature": "प्रतिक्रिया की रचनात्मकता (0-2, कम = अधिक केंद्रित)",
|
|
"max_tokens": "प्रतिक्रिया की अधिकतम लंबाई (1-100000 टोकन)",
|
|
"api_endpoint": "कस्टम एपीआई एंडपॉइंट यूआरएल (वैकल्पिक)",
|
|
"api_provider": "एपीआई प्रदाता",
|
|
"request_interval": "अनुरोधों के बीच न्यूनतम समय (0.1-60 सेकंड)",
|
|
"api_timeout": "एपीआई अनुरोध टाइमआउट सेकंड में (5-600)",
|
|
"context_messages": "रखने के लिए संदर्भ संदेशों की संख्या (1-20)",
|
|
"max_history_size": "अधिकतम बातचीत इतिहास आकार (1-100)",
|
|
"allow_local_network": "स्थानीय नेटवर्क एंडपॉइंट की अनुमति दें (सेल्फ-होस्टेड प्रॉक्सी के लिए)",
|
|
"disable_thinking": "thinking/reasoning मोड बंद करें (Qwen /no_think, <think> ब्लॉक हटाता है, Gemini 2.5 thinking_budget=0)"
|
|
}
|
|
}
|
|
},
|
|
"error": {
|
|
"history_storage_error": "इतिहास भंडारण प्रारंभ करने में विफल। अनुमतियों की जांच करें।",
|
|
"history_rotation_error": "इतिहास फ़ाइल घुमाने के दौरान त्रुटि।",
|
|
"history_file_access_error": "इतिहास भंडारण निर्देशिका तक पहुंच नहीं है।",
|
|
"name_exists": "इस नाम के साथ एक उदाहरण पहले से मौजूद है",
|
|
"invalid_name": "अमान्य उदाहरण नाम",
|
|
"invalid_auth": "प्रमाणीकरण विफल - अपनी एपीआई कुंजी की जांच करें",
|
|
"invalid_api_key": "अमान्य एपीआई कुंजी - कृपया अपनी क्रेडेंशियल्स की पुष्टि करें",
|
|
"cannot_connect": "एपीआई सेवा से कनेक्ट करने में विफल",
|
|
"invalid_model": "चुना हुआ मॉडल उपलब्ध नहीं है",
|
|
"rate_limit": "रेट सीमा पार",
|
|
"context_length": "संदर्भ लंबाई पार",
|
|
"rate_limit_exceeded": "एपीआई रेट सीमा पार",
|
|
"maintenance": "सेवा रखरखाव में है",
|
|
"invalid_response": "अमान्य एपीआई प्रतिक्रिया प्राप्त हुई",
|
|
"api_error": "एपीआई सेवा में त्रुटि हुई",
|
|
"timeout": "अनुरोध समय सीमा समाप्त",
|
|
"invalid_instance": "अमान्य उदाहरण निर्दिष्ट किया गया",
|
|
"unknown": "अप्रत्याशित त्रुटि हुई",
|
|
"empty": "नाम खाली नहीं हो सकता",
|
|
"invalid_characters": "नाम में केवल अक्षर, अंक, रिक्त स्थान, अंडरस्कोर और हाइफन हो सकते हैं",
|
|
"name_too_long": "नाम 50 अक्षरों या उससे कम होना चाहिए"
|
|
},
|
|
"abort": {
|
|
"already_configured": "उदाहरण पहले से कॉन्फ़िगर किया गया है"
|
|
}
|
|
},
|
|
"options": {
|
|
"step": {
|
|
"init": {
|
|
"title": "प्रदाता चुनें",
|
|
"description": "इस उदाहरण के लिए एआई प्रदाता चुनें। परिवर्तन सहेजने के बाद एकीकरण पुनः लोड होगा।",
|
|
"data": {
|
|
"api_provider": "एपीआई प्रदाता"
|
|
}
|
|
},
|
|
"settings": {
|
|
"title": "कनेक्शन और मॉडल सेटिंग्स",
|
|
"description": "एपीआई क्रेडेंशियल और मॉडल पैरामीटर कॉन्फ़िगर करें। एकीकरण पुनः लोड होने के बाद परिवर्तन प्रभावी होंगे।",
|
|
"data": {
|
|
"api_key": "एपीआई कुंजी",
|
|
"api_endpoint": "एपीआई एंडपॉइंट यूआरएल",
|
|
"model": "एआई मॉडल",
|
|
"temperature": "प्रतिक्रिया की रचनात्मकता (0-2)",
|
|
"max_tokens": "प्रतिक्रिया की अधिकतम लंबाई (1-100000)",
|
|
"request_interval": "न्यूनतम अनुरोध अंतराल (0.1-60 सेकंड)",
|
|
"api_timeout": "एपीआई अनुरोध टाइमआउट सेकंड में (5-600)",
|
|
"context_messages": "संदर्भ में शामिल करने के लिए पिछले संदेशों की संख्या (1-20)",
|
|
"max_history_size": "अधिकतम बातचीत इतिहास आकार (1-100)",
|
|
"allow_local_network": "स्थानीय नेटवर्क एंडपॉइंट की अनुमति दें (सेल्फ-होस्टेड प्रॉक्सी के लिए)",
|
|
"disable_thinking": "thinking/reasoning मोड बंद करें (Qwen /no_think, <think> ब्लॉक हटाता है, Gemini 2.5 thinking_budget=0)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"selector": {
|
|
"api_provider": {
|
|
"options": {
|
|
"openai": "OpenAI (अनुकूलित)",
|
|
"anthropic": "Anthropic (अनुकूलित)",
|
|
"deepseek": "DeepSeek",
|
|
"gemini": "Google Gemini"
|
|
}
|
|
}
|
|
},
|
|
"services": {
|
|
"ask_question": {
|
|
"name": "प्रश्न पूछें (HA Text AI)",
|
|
"description": "AI मॉडल को प्रश्न भेजें और विस्तृत उत्तर प्राप्त करें। यह सेवा अब प्रत्यक्ष रूप से प्रतिक्रिया डेटा वापस करती है, अलग टेक्स्ट सेंसर की आवश्यकता और 255 वर्ण की सीमा को समाप्त करती है। प्रतिक्रिया को बातचीत के इतिहास में भी संग्रहीत किया जाएगा।",
|
|
"fields": {
|
|
"instance": {
|
|
"name": "उदाहरण",
|
|
"description": "उपयोग करने के लिए एचए टेक्स्ट एआई उदाहरण का नाम"
|
|
},
|
|
"question": {
|
|
"name": "प्रश्न",
|
|
"description": "आपका प्रश्न या एआई सहायक के लिए प्रॉम्प्ट"
|
|
},
|
|
"context_messages": {
|
|
"name": "संदर्भ संदेश",
|
|
"description": "संदर्भ में शामिल करने के लिए पिछले संदेशों की संख्या (1-20)"
|
|
},
|
|
"system_prompt": {
|
|
"name": "सिस्टम प्रॉम्प्ट",
|
|
"description": "इस विशेष प्रश्न के लिए संदर्भ सेट करने के लिए वैकल्पिक सिस्टम प्रॉम्प्ट"
|
|
},
|
|
"model": {
|
|
"name": "मॉडल",
|
|
"description": "उपयोग करने के लिए एआई मॉडल का चयन करें (वैकल्पिक, डिफ़ॉल्ट सेटिंग को ओवरराइड करता है)"
|
|
},
|
|
"temperature": {
|
|
"name": "तापमान",
|
|
"description": "प्रतिक्रिया की रचनात्मकता को नियंत्रित करता है (0.0-2.0)"
|
|
},
|
|
"max_tokens": {
|
|
"name": "अधिकतम टोकन",
|
|
"description": "प्रतिक्रिया की अधिकतम लंबाई (1-100000 टोकन)"
|
|
},
|
|
"structured_output": {
|
|
"name": "संरचित आउटपुट",
|
|
"description": "JSON संरचित आउटपुट मोड सक्षम करें। सक्षम होने पर, AI प्रदान किए गए स्कीमा से मेल खाने वाले वैध JSON के साथ प्रतिक्रिया देगा।"
|
|
},
|
|
"json_schema": {
|
|
"name": "JSON स्कीमा",
|
|
"description": "अपेक्षित प्रतिक्रिया की संरचना को परिभाषित करने वाला JSON स्कीमा। structured_output सक्षम होने पर आवश्यक।"
|
|
},
|
|
"disable_thinking": {
|
|
"name": "Thinking बंद करें",
|
|
"description": "इस अनुरोध के लिए thinking/reasoning मोड बंद करें। एकीकरण सेटिंग को ओवरराइड करता है।"
|
|
}
|
|
}
|
|
},
|
|
"clear_history": {
|
|
"name": "इतिहास साफ करें",
|
|
"description": "बातचीत के इतिहास से सभी संग्रहीत प्रश्नों और प्रतिक्रियाओं को हटाएं",
|
|
"fields": {
|
|
"instance": {
|
|
"name": "उदाहरण",
|
|
"description": "इतिहास साफ़ करने के लिए एचए टेक्स्ट एआई उदाहरण का नाम"
|
|
}
|
|
}
|
|
},
|
|
"get_history": {
|
|
"name": "इतिहास प्राप्त करें",
|
|
"description": "वैकल्पिक फ़िल्टरिंग और छंटाई के साथ बातचीत का इतिहास प्राप्त करें",
|
|
"fields": {
|
|
"instance": {
|
|
"name": "उदाहरण",
|
|
"description": "इतिहास प्राप्त करने के लिए एचए टेक्स्ट एआई उदाहरण का नाम"
|
|
},
|
|
"limit": {
|
|
"name": "सीमा",
|
|
"description": "वापस करने के लिए बातचीत की संख्या (1-100)"
|
|
},
|
|
"filter_model": {
|
|
"name": "फिल्टर मॉडल",
|
|
"description": "विशिष्ट एआई मॉडल द्वारा बातचीत को फ़िल्टर करें"
|
|
},
|
|
"start_date": {
|
|
"name": "शुरुआत की तारीख",
|
|
"description": "इस दिन/समय से शुरू होने वाली बातचीत को फ़िल्टर करें"
|
|
},
|
|
"include_metadata": {
|
|
"name": "मेटाडेटा शामिल करें",
|
|
"description": "उपयोग किए गए टोकन, प्रतिक्रिया समय आदि जैसी अतिरिक्त जानकारी शामिल करें।"
|
|
},
|
|
"sort_order": {
|
|
"name": "छंटाई क्रम",
|
|
"description": "परिणामों के लिए छंटाई क्रम (नवीनतम या सबसे पुराना पहले)"
|
|
}
|
|
}
|
|
},
|
|
"set_system_prompt": {
|
|
"name": "सिस्टम प्रॉम्प्ट सेट करें",
|
|
"description": "सभी भविष्य की बातचीत के लिए डिफ़ॉल्ट सिस्टम व्यवहार निर्देश सेट करें",
|
|
"fields": {
|
|
"instance": {
|
|
"name": "उदाहरण",
|
|
"description": "सिस्टम प्रॉम्प्ट सेट करने के लिए एचए टेक्स्ट एआई उदाहरण का नाम"
|
|
},
|
|
"prompt": {
|
|
"name": "सिस्टम प्रॉम्प्ट",
|
|
"description": "निर्देश जो यह परिभाषित करते हैं कि एआई को कैसे व्यवहार करना चाहिए और प्रतिक्रिया देनी चाहिए"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"entity": {
|
|
"sensor": {
|
|
"ha_text_ai": {
|
|
"name": "{name}",
|
|
"state": {
|
|
"ready": "तैयार",
|
|
"processing": "प्रसंस्करण",
|
|
"error": "त्रुटि",
|
|
"disconnected": "असंयुक्त",
|
|
"rate_limited": "रेट सीमित",
|
|
"maintenance": "रखरखाव",
|
|
"initializing": "प्रारंभिककरण",
|
|
"retrying": "पुनः प्रयास कर रहा है",
|
|
"queued": "क्यू में"
|
|
},
|
|
"state_attributes": {
|
|
"question": {
|
|
"name": "अंतिम प्रश्न"
|
|
},
|
|
"response": {
|
|
"name": "अंतिम प्रतिक्रिया"
|
|
},
|
|
"model": {
|
|
"name": "वर्तमान मॉडल"
|
|
},
|
|
"temperature": {
|
|
"name": "तापमान"
|
|
},
|
|
"max_tokens": {
|
|
"name": "अधिकतम टोकन"
|
|
},
|
|
"system_prompt": {
|
|
"name": "सिस्टम प्रॉम्प्ट"
|
|
},
|
|
"response_time": {
|
|
"name": "अंतिम प्रतिक्रिया का समय"
|
|
},
|
|
"total_responses": {
|
|
"name": "कुल प्रतिक्रियाएं"
|
|
},
|
|
"error_count": {
|
|
"name": "त्रुटियों की संख्या"
|
|
},
|
|
"last_error": {
|
|
"name": "अंतिम त्रुटि"
|
|
},
|
|
"api_status": {
|
|
"name": "एपीआई स्थिति"
|
|
},
|
|
"tokens_used": {
|
|
"name": "कुल उपयोग किए गए टोकन"
|
|
},
|
|
"average_response_time": {
|
|
"name": "औसत प्रतिक्रिया समय"
|
|
},
|
|
"last_request_time": {
|
|
"name": "अंतिम अनुरोध का समय"
|
|
},
|
|
"is_processing": {
|
|
"name": "प्रसंस्करण स्थिति"
|
|
},
|
|
"is_rate_limited": {
|
|
"name": "रेट सीमित स्थिति"
|
|
},
|
|
"is_maintenance": {
|
|
"name": "रखरखाव स्थिति"
|
|
},
|
|
"api_version": {
|
|
"name": "एपीआई संस्करण"
|
|
},
|
|
"endpoint_status": {
|
|
"name": "एंडपॉइंट स्थिति"
|
|
},
|
|
"performance_metrics": {
|
|
"name": "प्रदर्शन मैट्रिक्स"
|
|
},
|
|
"history_size": {
|
|
"name": "इतिहास का आकार"
|
|
},
|
|
"uptime": {
|
|
"name": "अपटाइम"
|
|
},
|
|
"total_tokens": {
|
|
"name": "कुल टोकन"
|
|
},
|
|
"prompt_tokens": {
|
|
"name": "प्रॉम्प्ट टोकन"
|
|
},
|
|
"completion_tokens": {
|
|
"name": "पूर्णता टोकन"
|
|
},
|
|
"successful_requests": {
|
|
"name": "सफल अनुरोध"
|
|
},
|
|
"failed_requests": {
|
|
"name": "विफल अनुरोध"
|
|
},
|
|
"average_latency": {
|
|
"name": "औसत विलंबता"
|
|
},
|
|
"max_latency": {
|
|
"name": "अधिकतम विलंबता"
|
|
},
|
|
"min_latency": {
|
|
"name": "न्यूनतम विलंबता"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |