Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c41b33c9c0 | ||
|
|
7131ac24a7 | ||
|
|
501cd2071c | ||
|
|
85a1233733 | ||
|
|
670fa83e2c | ||
|
|
d03a53e755 | ||
|
|
2ec416bd6b | ||
|
|
b1a391ca5d | ||
|
|
c0ca447041 | ||
|
|
5d3db15eca | ||
|
|
eead69068c | ||
|
|
edae1ca4c7 | ||
|
|
0c9cc2baa3 | ||
|
|
326ac41422 | ||
|
|
dd2941bb43 | ||
|
|
a691ee08d8 | ||
|
|
e8fc522eba | ||
|
|
482a41e49b | ||
|
|
ae3d8ce0c0 | ||
|
|
a2e30ace02 | ||
|
|
cde9672a09 | ||
|
|
db6ca856de | ||
|
|
bb5e615841 | ||
|
|
48ac4d9f2a | ||
|
|
eb7bba81fe | ||
|
|
a43cb1eb25 | ||
|
|
e2d8872060 | ||
|
|
ede584320f | ||
|
|
bc458d3ee0 | ||
|
|
0d1f7265c4 | ||
|
|
539201a032 | ||
|
|
50ad2aa215 | ||
|
|
5cd28c04b8 | ||
|
|
c3ce4d7f6a | ||
|
|
9bd054490f | ||
|
|
2be14d57bf | ||
|
|
61e0a85aed | ||
|
|
e483c6b598 | ||
|
|
db3b075796 | ||
|
|
0bb26ae504 | ||
|
|
9d16dd997a | ||
|
|
e4fe1fff97 | ||
|
|
37ed31b0e2 | ||
|
|
dc82e681dd | ||
|
|
4944824544 | ||
|
|
67cd9b76ae | ||
|
|
8a86f32700 | ||
|
|
f62b15d8da | ||
|
|
d709038b5b | ||
|
|
a2631ed38e | ||
|
|
8ffd8c3505 | ||
|
|
f74df0433b | ||
|
|
93fa98245b | ||
|
|
e7727aea9e | ||
|
|
884eb9f7ee | ||
|
|
912b75f8ac | ||
|
|
3bec60b80c | ||
|
|
07b08ef67e | ||
|
|
83f9475584 | ||
|
|
1ad5456fe0 | ||
|
|
bf1936de34 | ||
|
|
827dd1b044 | ||
|
|
b2028d187d | ||
|
|
1e1b372d07 | ||
|
|
bd5a8567ef | ||
|
|
fc46532955 | ||
|
|
5f29a9edf4 | ||
|
|
91bc65c7da | ||
|
|
a91db7f7a6 | ||
|
|
e6fe3ada57 | ||
|
|
354683296b | ||
|
|
5237439e29 | ||
|
|
049b3136e8 | ||
|
|
3d6f5f418d | ||
|
|
a27175d672 | ||
|
|
ff1cd306d8 | ||
|
|
aa7d25600f | ||
|
|
0bae7ca615 | ||
|
|
3578b5e337 | ||
|
|
8464b30485 | ||
|
|
c961964647 | ||
|
|
dd7ac4c53a | ||
|
|
4601a0246f | ||
|
|
25c0eca414 | ||
|
|
ca8be1ee4a | ||
|
|
1611a3aa70 | ||
|
|
b434ebf3ad | ||
|
|
d2ed99e201 | ||
|
|
06976c4551 | ||
|
|
626643104e | ||
|
|
c5683dd24c | ||
|
|
6589464ddf | ||
|
|
e27c264081 | ||
|
|
3a96e1f109 | ||
|
|
c4629c8c2d | ||
|
|
adea3af8d7 | ||
|
|
ec516e95fa | ||
|
|
481fd9f88a | ||
|
|
2bbaf1234c | ||
|
|
690c25215d | ||
|
|
b72243c166 | ||
|
|
8f2e799615 | ||
|
|
8ecf262457 | ||
|
|
7fb785901e | ||
|
|
5dc9b93916 | ||
|
|
1241bc3e89 | ||
|
|
c5ed3452d2 | ||
|
|
c2e6e44714 | ||
|
|
6e7e575a18 | ||
|
|
f43b545bdd | ||
|
|
12a04b118f | ||
|
|
8b1e2ce279 | ||
|
|
fb0f106afe | ||
|
|
dd423f43de | ||
|
|
f2bd3fdf19 | ||
|
|
8ad52f0fcc | ||
|
|
5a3736f1ee | ||
|
|
54bbfa5e89 | ||
|
|
3933db2c91 | ||
|
|
dc8f0987e1 | ||
|
|
644f0fe6c3 | ||
|
|
87b04b0fc3 | ||
|
|
455403a4a4 | ||
|
|
547b990041 | ||
|
|
fcf8f2a704 | ||
|
|
496e798cc7 | ||
|
|
e01b3569d5 | ||
|
|
a75b68c19c | ||
|
|
34f04c53fc | ||
|
|
2b87ab32ff | ||
|
|
d20f6cb45b | ||
|
|
48c9fb0ddf | ||
|
|
c609cc23eb | ||
|
|
3566002b0b | ||
|
|
140d7ff721 | ||
|
|
7349e1d8c8 | ||
|
|
bf5a62298c | ||
|
|
2972774d87 | ||
|
|
75d455ac8f | ||
|
|
64b6a8c5db | ||
|
|
8947da57af | ||
|
|
16f09fff63 | ||
|
|
14eb667fc8 | ||
|
|
79bf8d6dd3 | ||
|
|
14d33f0fcc | ||
|
|
4dcec4855e | ||
|
|
efb4a710c8 | ||
|
|
8e9e429a91 |
@@ -5,6 +5,40 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [0.3.3] - 2024-06-12
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- **🛠️ Native Python Function Calling**: Introducing native Python function calling within Open WebUI. We’ve also included a built-in code editor to seamlessly develop and integrate function code within the 'Tools' workspace. With this, you can significantly enhance your LLM’s capabilities by creating custom RAG pipelines, web search tools, and even agent-like features such as sending Discord messages.
|
||||||
|
- **🌐 DuckDuckGo Integration**: Added DuckDuckGo as a web search provider, giving you more search options.
|
||||||
|
- **🌏 Enhanced Translations**: Improved translations for Vietnamese and Chinese languages, making the interface more accessible.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **🔗 Web Search URL Error Handling**: Fixed the issue where a single URL error would disrupt the data loading process in Web Search mode. Now, such errors will be handled gracefully to ensure uninterrupted data loading.
|
||||||
|
- **🖥️ Frontend Responsiveness**: Resolved the problem where the frontend would stop responding if the backend encounters an error while downloading a model. Improved error handling to maintain frontend stability.
|
||||||
|
- **🔧 Dependency Issues in pip**: Fixed issues related to pip installations, ensuring all dependencies are correctly managed to prevent installation errors.
|
||||||
|
|
||||||
|
## [0.3.2] - 2024-06-10
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- **🔍 Web Search Query Status**: The web search query will now persist in the results section to aid in easier debugging and tracking of search queries.
|
||||||
|
- **🌐 New Web Search Provider**: We have added Serply as a new option for web search providers, giving you more choices for your search needs.
|
||||||
|
- **🌏 Improved Translations**: We've enhanced translations for Chinese and Portuguese.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **🎤 Audio File Upload Issue**: The bug that prevented audio files from being uploaded in chat input has been fixed, ensuring smooth communication.
|
||||||
|
- **💬 Message Input Handling**: Improved the handling of message inputs by instantly clearing images and text after sending, along with immediate visual indications when a response message is loading, enhancing user feedback.
|
||||||
|
- **⚙️ Parameter Registration and Validation**: Fixed the issue where parameters were not registering in certain cases and addressed the problem where users were unable to save due to invalid input errors.
|
||||||
|
|
||||||
|
## [0.3.1] - 2024-06-09
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **💬 Chat Functionality**: Resolved the issue where chat functionality was not working for specific models.
|
||||||
|
|
||||||
## [0.3.0] - 2024-06-09
|
## [0.3.0] - 2024-06-09
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -29,11 +29,15 @@ Open WebUI is an [extensible](https://github.com/open-webui/pipelines), feature-
|
|||||||
|
|
||||||
- ✒️🔢 **Full Markdown and LaTeX Support**: Elevate your LLM experience with comprehensive Markdown and LaTeX capabilities for enriched interaction.
|
- ✒️🔢 **Full Markdown and LaTeX Support**: Elevate your LLM experience with comprehensive Markdown and LaTeX capabilities for enriched interaction.
|
||||||
|
|
||||||
|
- 🎤📹 **Hands-Free Voice/Video Call**: Experience seamless communication with integrated hands-free voice and video call features, allowing for a more dynamic and interactive chat environment.
|
||||||
|
|
||||||
- 🛠️ **Model Builder**: Easily create Ollama models via the Web UI. Create and add custom characters/agents, customize chat elements, and import models effortlessly through [Open WebUI Community](https://openwebui.com/) integration.
|
- 🛠️ **Model Builder**: Easily create Ollama models via the Web UI. Create and add custom characters/agents, customize chat elements, and import models effortlessly through [Open WebUI Community](https://openwebui.com/) integration.
|
||||||
|
|
||||||
|
- 🐍 **Native Python Function Calling Tool**: Enhance your LLMs with built-in code editor support in the tools workspace. Bring Your Own Function (BYOF) by simply adding your pure Python functions, enabling seamless integration with LLMs.
|
||||||
|
|
||||||
- 📚 **Local RAG Integration**: Dive into the future of chat interactions with groundbreaking Retrieval Augmented Generation (RAG) support. This feature seamlessly integrates document interactions into your chat experience. You can load documents directly into the chat or add files to your document library, effortlessly accessing them using the `#` command before a query.
|
- 📚 **Local RAG Integration**: Dive into the future of chat interactions with groundbreaking Retrieval Augmented Generation (RAG) support. This feature seamlessly integrates document interactions into your chat experience. You can load documents directly into the chat or add files to your document library, effortlessly accessing them using the `#` command before a query.
|
||||||
|
|
||||||
- 🔍 **Web Search for RAG**: Perform web searches using providers like `SearXNG`, `Google PSE`, `Brave Search`, `serpstack`, and `serper`, and inject the results directly into your chat experience.
|
- 🔍 **Web Search for RAG**: Perform web searches using providers like `SearXNG`, `Google PSE`, `Brave Search`, `serpstack`, `serper`, and `Serply` and inject the results directly into your chat experience.
|
||||||
|
|
||||||
- 🌐 **Web Browsing Capability**: Seamlessly integrate websites into your chat experience using the `#` command followed by a URL. This feature allows you to incorporate web content directly into your conversations, enhancing the richness and depth of your interactions.
|
- 🌐 **Web Browsing Capability**: Seamlessly integrate websites into your chat experience using the `#` command followed by a URL. This feature allows you to incorporate web content directly into your conversations, enhancing the richness and depth of your interactions.
|
||||||
|
|
||||||
|
|||||||
+60
-25
@@ -8,13 +8,15 @@ from fastapi import (
|
|||||||
Form,
|
Form,
|
||||||
)
|
)
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
import requests
|
||||||
import os, shutil, logging, re
|
import os, shutil, logging, re
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import List, Union, Sequence
|
from typing import List, Union, Sequence, Iterator, Any
|
||||||
|
|
||||||
from chromadb.utils.batch_utils import create_batches
|
from chromadb.utils.batch_utils import create_batches
|
||||||
|
from langchain_core.documents import Document
|
||||||
|
|
||||||
from langchain_community.document_loaders import (
|
from langchain_community.document_loaders import (
|
||||||
WebBaseLoader,
|
WebBaseLoader,
|
||||||
@@ -69,7 +71,8 @@ from apps.rag.search.main import SearchResult
|
|||||||
from apps.rag.search.searxng import search_searxng
|
from apps.rag.search.searxng import search_searxng
|
||||||
from apps.rag.search.serper import search_serper
|
from apps.rag.search.serper import search_serper
|
||||||
from apps.rag.search.serpstack import search_serpstack
|
from apps.rag.search.serpstack import search_serpstack
|
||||||
|
from apps.rag.search.serply import search_serply
|
||||||
|
from apps.rag.search.duckduckgo import search_duckduckgo
|
||||||
|
|
||||||
from utils.misc import (
|
from utils.misc import (
|
||||||
calculate_sha256,
|
calculate_sha256,
|
||||||
@@ -115,6 +118,7 @@ from config import (
|
|||||||
SERPSTACK_API_KEY,
|
SERPSTACK_API_KEY,
|
||||||
SERPSTACK_HTTPS,
|
SERPSTACK_HTTPS,
|
||||||
SERPER_API_KEY,
|
SERPER_API_KEY,
|
||||||
|
SERPLY_API_KEY,
|
||||||
RAG_WEB_SEARCH_RESULT_COUNT,
|
RAG_WEB_SEARCH_RESULT_COUNT,
|
||||||
RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
||||||
RAG_EMBEDDING_OPENAI_BATCH_SIZE,
|
RAG_EMBEDDING_OPENAI_BATCH_SIZE,
|
||||||
@@ -167,6 +171,7 @@ app.state.config.BRAVE_SEARCH_API_KEY = BRAVE_SEARCH_API_KEY
|
|||||||
app.state.config.SERPSTACK_API_KEY = SERPSTACK_API_KEY
|
app.state.config.SERPSTACK_API_KEY = SERPSTACK_API_KEY
|
||||||
app.state.config.SERPSTACK_HTTPS = SERPSTACK_HTTPS
|
app.state.config.SERPSTACK_HTTPS = SERPSTACK_HTTPS
|
||||||
app.state.config.SERPER_API_KEY = SERPER_API_KEY
|
app.state.config.SERPER_API_KEY = SERPER_API_KEY
|
||||||
|
app.state.config.SERPLY_API_KEY = SERPLY_API_KEY
|
||||||
app.state.config.RAG_WEB_SEARCH_RESULT_COUNT = RAG_WEB_SEARCH_RESULT_COUNT
|
app.state.config.RAG_WEB_SEARCH_RESULT_COUNT = RAG_WEB_SEARCH_RESULT_COUNT
|
||||||
app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = RAG_WEB_SEARCH_CONCURRENT_REQUESTS
|
app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = RAG_WEB_SEARCH_CONCURRENT_REQUESTS
|
||||||
|
|
||||||
@@ -394,6 +399,7 @@ async def get_rag_config(user=Depends(get_admin_user)):
|
|||||||
"serpstack_api_key": app.state.config.SERPSTACK_API_KEY,
|
"serpstack_api_key": app.state.config.SERPSTACK_API_KEY,
|
||||||
"serpstack_https": app.state.config.SERPSTACK_HTTPS,
|
"serpstack_https": app.state.config.SERPSTACK_HTTPS,
|
||||||
"serper_api_key": app.state.config.SERPER_API_KEY,
|
"serper_api_key": app.state.config.SERPER_API_KEY,
|
||||||
|
"serply_api_key": app.state.config.SERPLY_API_KEY,
|
||||||
"result_count": app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
|
"result_count": app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
|
||||||
"concurrent_requests": app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
"concurrent_requests": app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
||||||
},
|
},
|
||||||
@@ -421,6 +427,7 @@ class WebSearchConfig(BaseModel):
|
|||||||
serpstack_api_key: Optional[str] = None
|
serpstack_api_key: Optional[str] = None
|
||||||
serpstack_https: Optional[bool] = None
|
serpstack_https: Optional[bool] = None
|
||||||
serper_api_key: Optional[str] = None
|
serper_api_key: Optional[str] = None
|
||||||
|
serply_api_key: Optional[str] = None
|
||||||
result_count: Optional[int] = None
|
result_count: Optional[int] = None
|
||||||
concurrent_requests: Optional[int] = None
|
concurrent_requests: Optional[int] = None
|
||||||
|
|
||||||
@@ -471,6 +478,7 @@ async def update_rag_config(form_data: ConfigUpdateForm, user=Depends(get_admin_
|
|||||||
app.state.config.SERPSTACK_API_KEY = form_data.web.search.serpstack_api_key
|
app.state.config.SERPSTACK_API_KEY = form_data.web.search.serpstack_api_key
|
||||||
app.state.config.SERPSTACK_HTTPS = form_data.web.search.serpstack_https
|
app.state.config.SERPSTACK_HTTPS = form_data.web.search.serpstack_https
|
||||||
app.state.config.SERPER_API_KEY = form_data.web.search.serper_api_key
|
app.state.config.SERPER_API_KEY = form_data.web.search.serper_api_key
|
||||||
|
app.state.config.SERPLY_API_KEY = form_data.web.search.serply_api_key
|
||||||
app.state.config.RAG_WEB_SEARCH_RESULT_COUNT = form_data.web.search.result_count
|
app.state.config.RAG_WEB_SEARCH_RESULT_COUNT = form_data.web.search.result_count
|
||||||
app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = (
|
app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = (
|
||||||
form_data.web.search.concurrent_requests
|
form_data.web.search.concurrent_requests
|
||||||
@@ -499,6 +507,7 @@ async def update_rag_config(form_data: ConfigUpdateForm, user=Depends(get_admin_
|
|||||||
"serpstack_api_key": app.state.config.SERPSTACK_API_KEY,
|
"serpstack_api_key": app.state.config.SERPSTACK_API_KEY,
|
||||||
"serpstack_https": app.state.config.SERPSTACK_HTTPS,
|
"serpstack_https": app.state.config.SERPSTACK_HTTPS,
|
||||||
"serper_api_key": app.state.config.SERPER_API_KEY,
|
"serper_api_key": app.state.config.SERPER_API_KEY,
|
||||||
|
"serply_api_key": app.state.config.SERPLY_API_KEY,
|
||||||
"result_count": app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
|
"result_count": app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
|
||||||
"concurrent_requests": app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
"concurrent_requests": app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
||||||
},
|
},
|
||||||
@@ -695,7 +704,7 @@ def get_web_loader(url: Union[str, Sequence[str]], verify_ssl: bool = True):
|
|||||||
# Check if the URL is valid
|
# Check if the URL is valid
|
||||||
if not validate_url(url):
|
if not validate_url(url):
|
||||||
raise ValueError(ERROR_MESSAGES.INVALID_URL)
|
raise ValueError(ERROR_MESSAGES.INVALID_URL)
|
||||||
return WebBaseLoader(
|
return SafeWebBaseLoader(
|
||||||
url,
|
url,
|
||||||
verify_ssl=verify_ssl,
|
verify_ssl=verify_ssl,
|
||||||
requests_per_second=RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
requests_per_second=RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
||||||
@@ -708,18 +717,13 @@ def validate_url(url: Union[str, Sequence[str]]):
|
|||||||
if isinstance(validators.url(url), validators.ValidationError):
|
if isinstance(validators.url(url), validators.ValidationError):
|
||||||
raise ValueError(ERROR_MESSAGES.INVALID_URL)
|
raise ValueError(ERROR_MESSAGES.INVALID_URL)
|
||||||
if not ENABLE_RAG_LOCAL_WEB_FETCH:
|
if not ENABLE_RAG_LOCAL_WEB_FETCH:
|
||||||
# Local web fetch is disabled, filter out any URLs that resolve to private IP addresses
|
# Check if the URL exists by making a HEAD request
|
||||||
parsed_url = urllib.parse.urlparse(url)
|
try:
|
||||||
# Get IPv4 and IPv6 addresses
|
response = requests.head(url, allow_redirects=True)
|
||||||
ipv4_addresses, ipv6_addresses = resolve_hostname(parsed_url.hostname)
|
if response.status_code != 200:
|
||||||
# Check if any of the resolved addresses are private
|
|
||||||
# This is technically still vulnerable to DNS rebinding attacks, as we don't control WebBaseLoader
|
|
||||||
for ip in ipv4_addresses:
|
|
||||||
if validators.ipv4(ip, private=True):
|
|
||||||
raise ValueError(ERROR_MESSAGES.INVALID_URL)
|
|
||||||
for ip in ipv6_addresses:
|
|
||||||
if validators.ipv6(ip, private=True):
|
|
||||||
raise ValueError(ERROR_MESSAGES.INVALID_URL)
|
raise ValueError(ERROR_MESSAGES.INVALID_URL)
|
||||||
|
except requests.exceptions.RequestException:
|
||||||
|
raise ValueError(ERROR_MESSAGES.INVALID_URL)
|
||||||
return True
|
return True
|
||||||
elif isinstance(url, Sequence):
|
elif isinstance(url, Sequence):
|
||||||
return all(validate_url(u) for u in url)
|
return all(validate_url(u) for u in url)
|
||||||
@@ -727,17 +731,6 @@ def validate_url(url: Union[str, Sequence[str]]):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def resolve_hostname(hostname):
|
|
||||||
# Get address information
|
|
||||||
addr_info = socket.getaddrinfo(hostname, None)
|
|
||||||
|
|
||||||
# Extract IP addresses from address information
|
|
||||||
ipv4_addresses = [info[4][0] for info in addr_info if info[0] == socket.AF_INET]
|
|
||||||
ipv6_addresses = [info[4][0] for info in addr_info if info[0] == socket.AF_INET6]
|
|
||||||
|
|
||||||
return ipv4_addresses, ipv6_addresses
|
|
||||||
|
|
||||||
|
|
||||||
def search_web(engine: str, query: str) -> list[SearchResult]:
|
def search_web(engine: str, query: str) -> list[SearchResult]:
|
||||||
"""Search the web using a search engine and return the results as a list of SearchResult objects.
|
"""Search the web using a search engine and return the results as a list of SearchResult objects.
|
||||||
Will look for a search engine API key in environment variables in the following order:
|
Will look for a search engine API key in environment variables in the following order:
|
||||||
@@ -746,6 +739,7 @@ def search_web(engine: str, query: str) -> list[SearchResult]:
|
|||||||
- BRAVE_SEARCH_API_KEY
|
- BRAVE_SEARCH_API_KEY
|
||||||
- SERPSTACK_API_KEY
|
- SERPSTACK_API_KEY
|
||||||
- SERPER_API_KEY
|
- SERPER_API_KEY
|
||||||
|
- SERPLY_API_KEY
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
query (str): The query to search for
|
query (str): The query to search for
|
||||||
@@ -804,6 +798,17 @@ def search_web(engine: str, query: str) -> list[SearchResult]:
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise Exception("No SERPER_API_KEY found in environment variables")
|
raise Exception("No SERPER_API_KEY found in environment variables")
|
||||||
|
elif engine == "serply":
|
||||||
|
if app.state.config.SERPLY_API_KEY:
|
||||||
|
return search_serply(
|
||||||
|
app.state.config.SERPLY_API_KEY,
|
||||||
|
query,
|
||||||
|
app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
raise Exception("No SERPLY_API_KEY found in environment variables")
|
||||||
|
elif engine == "duckduckgo":
|
||||||
|
return search_duckduckgo(query, app.state.config.RAG_WEB_SEARCH_RESULT_COUNT)
|
||||||
else:
|
else:
|
||||||
raise Exception("No search engine API key found in environment variables")
|
raise Exception("No search engine API key found in environment variables")
|
||||||
|
|
||||||
@@ -811,6 +816,9 @@ def search_web(engine: str, query: str) -> list[SearchResult]:
|
|||||||
@app.post("/web/search")
|
@app.post("/web/search")
|
||||||
def store_web_search(form_data: SearchForm, user=Depends(get_current_user)):
|
def store_web_search(form_data: SearchForm, user=Depends(get_current_user)):
|
||||||
try:
|
try:
|
||||||
|
logging.info(
|
||||||
|
f"trying to web search with {app.state.config.RAG_WEB_SEARCH_ENGINE, form_data.query}"
|
||||||
|
)
|
||||||
web_results = search_web(
|
web_results = search_web(
|
||||||
app.state.config.RAG_WEB_SEARCH_ENGINE, form_data.query
|
app.state.config.RAG_WEB_SEARCH_ENGINE, form_data.query
|
||||||
)
|
)
|
||||||
@@ -1221,6 +1229,33 @@ def reset(user=Depends(get_admin_user)) -> bool:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
class SafeWebBaseLoader(WebBaseLoader):
|
||||||
|
"""WebBaseLoader with enhanced error handling for URLs."""
|
||||||
|
|
||||||
|
def lazy_load(self) -> Iterator[Document]:
|
||||||
|
"""Lazy load text from the url(s) in web_path with error handling."""
|
||||||
|
for path in self.web_paths:
|
||||||
|
try:
|
||||||
|
soup = self._scrape(path, bs_kwargs=self.bs_kwargs)
|
||||||
|
text = soup.get_text(**self.bs_get_text_kwargs)
|
||||||
|
|
||||||
|
# Build metadata
|
||||||
|
metadata = {"source": path}
|
||||||
|
if title := soup.find("title"):
|
||||||
|
metadata["title"] = title.get_text()
|
||||||
|
if description := soup.find("meta", attrs={"name": "description"}):
|
||||||
|
metadata["description"] = description.get(
|
||||||
|
"content", "No description found."
|
||||||
|
)
|
||||||
|
if html := soup.find("html"):
|
||||||
|
metadata["language"] = html.get("lang", "No language found.")
|
||||||
|
|
||||||
|
yield Document(page_content=text, metadata=metadata)
|
||||||
|
except Exception as e:
|
||||||
|
# Log the error and continue with the next URL
|
||||||
|
log.error(f"Error loading {path}: {e}")
|
||||||
|
|
||||||
|
|
||||||
if ENV == "dev":
|
if ENV == "dev":
|
||||||
|
|
||||||
@app.get("/ef")
|
@app.get("/ef")
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import logging
|
||||||
|
|
||||||
|
from apps.rag.search.main import SearchResult
|
||||||
|
from duckduckgo_search import DDGS
|
||||||
|
from config import SRC_LOG_LEVELS
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
log.setLevel(SRC_LOG_LEVELS["RAG"])
|
||||||
|
|
||||||
|
|
||||||
|
def search_duckduckgo(query: str, count: int) -> list[SearchResult]:
|
||||||
|
"""
|
||||||
|
Search using DuckDuckGo's Search API and return the results as a list of SearchResult objects.
|
||||||
|
Args:
|
||||||
|
query (str): The query to search for
|
||||||
|
count (int): The number of results to return
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
List[SearchResult]: A list of search results
|
||||||
|
"""
|
||||||
|
# Use the DDGS context manager to create a DDGS object
|
||||||
|
with DDGS() as ddgs:
|
||||||
|
# Use the ddgs.text() method to perform the search
|
||||||
|
ddgs_gen = ddgs.text(
|
||||||
|
query, safesearch="moderate", max_results=count, backend="api"
|
||||||
|
)
|
||||||
|
# Check if there are search results
|
||||||
|
if ddgs_gen:
|
||||||
|
# Convert the search results into a list
|
||||||
|
search_results = [r for r in ddgs_gen]
|
||||||
|
|
||||||
|
# Create an empty list to store the SearchResult objects
|
||||||
|
results = []
|
||||||
|
# Iterate over each search result
|
||||||
|
for result in search_results:
|
||||||
|
# Create a SearchResult object and append it to the results list
|
||||||
|
results.append(
|
||||||
|
SearchResult(
|
||||||
|
link=result["href"],
|
||||||
|
title=result.get("title"),
|
||||||
|
snippet=result.get("body"),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
print(results)
|
||||||
|
# Return the list of search results
|
||||||
|
return results
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
import json
|
||||||
|
import logging
|
||||||
|
|
||||||
|
import requests
|
||||||
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
|
from apps.rag.search.main import SearchResult
|
||||||
|
from config import SRC_LOG_LEVELS
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
log.setLevel(SRC_LOG_LEVELS["RAG"])
|
||||||
|
|
||||||
|
|
||||||
|
def search_serply(
|
||||||
|
api_key: str,
|
||||||
|
query: str,
|
||||||
|
count: int,
|
||||||
|
hl: str = "us",
|
||||||
|
limit: int = 10,
|
||||||
|
device_type: str = "desktop",
|
||||||
|
proxy_location: str = "US",
|
||||||
|
) -> list[SearchResult]:
|
||||||
|
"""Search using serper.dev's API and return the results as a list of SearchResult objects.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
api_key (str): A serply.io API key
|
||||||
|
query (str): The query to search for
|
||||||
|
hl (str): Host Language code to display results in (reference https://developers.google.com/custom-search/docs/xml_results?hl=en#wsInterfaceLanguages)
|
||||||
|
limit (int): The maximum number of results to return [10-100, defaults to 10]
|
||||||
|
"""
|
||||||
|
log.info("Searching with Serply")
|
||||||
|
|
||||||
|
url = "https://api.serply.io/v1/search/"
|
||||||
|
|
||||||
|
query_payload = {
|
||||||
|
"q": query,
|
||||||
|
"language": "en",
|
||||||
|
"num": limit,
|
||||||
|
"gl": proxy_location.upper(),
|
||||||
|
"hl": hl.lower(),
|
||||||
|
}
|
||||||
|
|
||||||
|
url = f"{url}{urlencode(query_payload)}"
|
||||||
|
headers = {
|
||||||
|
"X-API-KEY": api_key,
|
||||||
|
"X-User-Agent": device_type,
|
||||||
|
"User-Agent": "open-webui",
|
||||||
|
"X-Proxy-Location": proxy_location,
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.request("GET", url, headers=headers)
|
||||||
|
response.raise_for_status()
|
||||||
|
|
||||||
|
json_response = response.json()
|
||||||
|
log.info(f"results from serply search: {json_response}")
|
||||||
|
|
||||||
|
results = sorted(
|
||||||
|
json_response.get("results", []), key=lambda x: x.get("realPosition", 0)
|
||||||
|
)
|
||||||
|
|
||||||
|
return [
|
||||||
|
SearchResult(
|
||||||
|
link=result["link"],
|
||||||
|
title=result.get("title"),
|
||||||
|
snippet=result.get("description"),
|
||||||
|
)
|
||||||
|
for result in results[:count]
|
||||||
|
]
|
||||||
+206
@@ -0,0 +1,206 @@
|
|||||||
|
{
|
||||||
|
"ads": [],
|
||||||
|
"ads_count": 0,
|
||||||
|
"answers": [],
|
||||||
|
"results": [
|
||||||
|
{
|
||||||
|
"title": "Apple",
|
||||||
|
"link": "https://www.apple.com/",
|
||||||
|
"description": "Discover the innovative world of Apple and shop everything iPhone, iPad, Apple Watch, Mac, and Apple TV, plus explore accessories, entertainment, ...",
|
||||||
|
"additional_links": [
|
||||||
|
{
|
||||||
|
"text": "AppleApplehttps://www.apple.com",
|
||||||
|
"href": "https://www.apple.com/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cite": {},
|
||||||
|
"subdomains": [
|
||||||
|
{
|
||||||
|
"title": "Support",
|
||||||
|
"link": "https://support.apple.com/",
|
||||||
|
"description": "SupportContact - iPhone Support - Billing and Subscriptions - Apple Repair"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Store",
|
||||||
|
"link": "https://www.apple.com/store",
|
||||||
|
"description": "StoreShop iPhone - Shop iPad - App Store - Shop Mac - ..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Mac",
|
||||||
|
"link": "https://www.apple.com/mac/",
|
||||||
|
"description": "MacMacBook Air - MacBook Pro - iMac - Compare Mac models - Mac mini"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "iPad",
|
||||||
|
"link": "https://www.apple.com/ipad/",
|
||||||
|
"description": "iPadShop iPad - iPad Pro - iPad Air - Compare iPad models - ..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Watch",
|
||||||
|
"link": "https://www.apple.com/watch/",
|
||||||
|
"description": "WatchShop Apple Watch - Series 9 - SE - Ultra 2 - Nike - Hermès - ..."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"realPosition": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Apple",
|
||||||
|
"link": "https://www.apple.com/",
|
||||||
|
"description": "Discover the innovative world of Apple and shop everything iPhone, iPad, Apple Watch, Mac, and Apple TV, plus explore accessories, entertainment, ...",
|
||||||
|
"additional_links": [
|
||||||
|
{
|
||||||
|
"text": "AppleApplehttps://www.apple.com",
|
||||||
|
"href": "https://www.apple.com/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cite": {},
|
||||||
|
"realPosition": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Apple Inc.",
|
||||||
|
"link": "https://en.wikipedia.org/wiki/Apple_Inc.",
|
||||||
|
"description": "Apple Inc. (formerly Apple Computer, Inc.) is an American multinational corporation and technology company headquartered in Cupertino, California, ...",
|
||||||
|
"additional_links": [
|
||||||
|
{
|
||||||
|
"text": "Apple Inc.Wikipediahttps://en.wikipedia.org › wiki › Apple_Inc",
|
||||||
|
"href": "https://en.wikipedia.org/wiki/Apple_Inc."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "",
|
||||||
|
"href": "https://en.wikipedia.org/wiki/Apple_Inc."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "History",
|
||||||
|
"href": "https://en.wikipedia.org/wiki/History_of_Apple_Inc."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "List of Apple products",
|
||||||
|
"href": "https://en.wikipedia.org/wiki/List_of_Apple_products"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Litigation involving Apple Inc.",
|
||||||
|
"href": "https://en.wikipedia.org/wiki/Litigation_involving_Apple_Inc."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Apple Park",
|
||||||
|
"href": "https://en.wikipedia.org/wiki/Apple_Park"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cite": {
|
||||||
|
"domain": "https://en.wikipedia.org › wiki › Apple_Inc",
|
||||||
|
"span": " › wiki › Apple_Inc"
|
||||||
|
},
|
||||||
|
"realPosition": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Apple Inc. (AAPL) Company Profile & Facts",
|
||||||
|
"link": "https://finance.yahoo.com/quote/AAPL/profile/",
|
||||||
|
"description": "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide. The company offers iPhone, a line ...",
|
||||||
|
"additional_links": [
|
||||||
|
{
|
||||||
|
"text": "Apple Inc. (AAPL) Company Profile & FactsYahoo Financehttps://finance.yahoo.com › quote › AAPL › profile",
|
||||||
|
"href": "https://finance.yahoo.com/quote/AAPL/profile/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cite": {
|
||||||
|
"domain": "https://finance.yahoo.com › quote › AAPL › profile",
|
||||||
|
"span": " › quote › AAPL › profile"
|
||||||
|
},
|
||||||
|
"realPosition": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Apple Inc - Company Profile and News",
|
||||||
|
"link": "https://www.bloomberg.com/profile/company/AAPL:US",
|
||||||
|
"description": "Apple Inc. Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables and accessories, and sells a variety of related ...",
|
||||||
|
"additional_links": [
|
||||||
|
{
|
||||||
|
"text": "Apple Inc - Company Profile and NewsBloomberghttps://www.bloomberg.com › company › AAPL:US",
|
||||||
|
"href": "https://www.bloomberg.com/profile/company/AAPL:US"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "",
|
||||||
|
"href": "https://www.bloomberg.com/profile/company/AAPL:US"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cite": {
|
||||||
|
"domain": "https://www.bloomberg.com › company › AAPL:US",
|
||||||
|
"span": " › company › AAPL:US"
|
||||||
|
},
|
||||||
|
"realPosition": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Apple Inc. | History, Products, Headquarters, & Facts",
|
||||||
|
"link": "https://www.britannica.com/money/Apple-Inc",
|
||||||
|
"description": "May 22, 2024 — Apple Inc. is an American multinational technology company that revolutionized the technology sector through its innovation of computer ...",
|
||||||
|
"additional_links": [
|
||||||
|
{
|
||||||
|
"text": "Apple Inc. | History, Products, Headquarters, & FactsBritannicahttps://www.britannica.com › money › Apple-Inc",
|
||||||
|
"href": "https://www.britannica.com/money/Apple-Inc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "",
|
||||||
|
"href": "https://www.britannica.com/money/Apple-Inc"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cite": {
|
||||||
|
"domain": "https://www.britannica.com › money › Apple-Inc",
|
||||||
|
"span": " › money › Apple-Inc"
|
||||||
|
},
|
||||||
|
"realPosition": 6
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"shopping_ads": [],
|
||||||
|
"places": [
|
||||||
|
{
|
||||||
|
"title": "Apple Inc."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Apple Inc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Apple Inc"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"related_searches": {
|
||||||
|
"images": [],
|
||||||
|
"text": [
|
||||||
|
{
|
||||||
|
"title": "apple inc full form",
|
||||||
|
"link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+Inc+full+form&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhPEAE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "apple company history",
|
||||||
|
"link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+company+history&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhOEAE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "apple store",
|
||||||
|
"link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+Store&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhQEAE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "apple id",
|
||||||
|
"link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+id&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhSEAE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "apple inc industry",
|
||||||
|
"link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+Inc+industry&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhREAE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "apple login",
|
||||||
|
"link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+login&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhTEAE"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"image_results": [],
|
||||||
|
"carousel": [],
|
||||||
|
"total": 2450000000,
|
||||||
|
"knowledge_graph": "",
|
||||||
|
"related_questions": [
|
||||||
|
"What does the Apple Inc do?",
|
||||||
|
"Why did Apple change to Apple Inc?",
|
||||||
|
"Who owns Apple Inc.?",
|
||||||
|
"What is Apple Inc best known for?"
|
||||||
|
],
|
||||||
|
"carousel_count": 0,
|
||||||
|
"ts": 2.491065263748169,
|
||||||
|
"device_type": null
|
||||||
|
}
|
||||||
@@ -236,10 +236,9 @@ def get_embedding_function(
|
|||||||
return lambda query: generate_multiple(query, func)
|
return lambda query: generate_multiple(query, func)
|
||||||
|
|
||||||
|
|
||||||
def rag_messages(
|
def get_rag_context(
|
||||||
docs,
|
docs,
|
||||||
messages,
|
messages,
|
||||||
template,
|
|
||||||
embedding_function,
|
embedding_function,
|
||||||
k,
|
k,
|
||||||
reranking_function,
|
reranking_function,
|
||||||
@@ -318,16 +317,7 @@ def rag_messages(
|
|||||||
|
|
||||||
context_string = context_string.strip()
|
context_string = context_string.strip()
|
||||||
|
|
||||||
ra_content = rag_template(
|
return context_string, citations
|
||||||
template=template,
|
|
||||||
context=context_string,
|
|
||||||
query=query,
|
|
||||||
)
|
|
||||||
|
|
||||||
log.debug(f"ra_content: {ra_content}")
|
|
||||||
messages = add_or_update_system_message(ra_content, messages)
|
|
||||||
|
|
||||||
return messages, citations
|
|
||||||
|
|
||||||
|
|
||||||
def get_model_path(model: str, update_model: bool = False):
|
def get_model_path(model: str, update_model: bool = False):
|
||||||
|
|||||||
@@ -19,8 +19,6 @@ TIMEOUT_DURATION = 3
|
|||||||
|
|
||||||
@sio.event
|
@sio.event
|
||||||
async def connect(sid, environ, auth):
|
async def connect(sid, environ, auth):
|
||||||
print("connect ", sid)
|
|
||||||
|
|
||||||
user = None
|
user = None
|
||||||
if auth and "token" in auth:
|
if auth and "token" in auth:
|
||||||
data = decode_token(auth["token"])
|
data = decode_token(auth["token"])
|
||||||
@@ -37,7 +35,6 @@ async def connect(sid, environ, auth):
|
|||||||
|
|
||||||
print(f"user {user.name}({user.id}) connected with session ID {sid}")
|
print(f"user {user.name}({user.id}) connected with session ID {sid}")
|
||||||
|
|
||||||
print(len(set(USER_POOL)))
|
|
||||||
await sio.emit("user-count", {"count": len(set(USER_POOL))})
|
await sio.emit("user-count", {"count": len(set(USER_POOL))})
|
||||||
await sio.emit("usage", {"models": get_models_in_use()})
|
await sio.emit("usage", {"models": get_models_in_use()})
|
||||||
|
|
||||||
@@ -64,13 +61,11 @@ async def user_join(sid, data):
|
|||||||
|
|
||||||
print(f"user {user.name}({user.id}) connected with session ID {sid}")
|
print(f"user {user.name}({user.id}) connected with session ID {sid}")
|
||||||
|
|
||||||
print(len(set(USER_POOL)))
|
|
||||||
await sio.emit("user-count", {"count": len(set(USER_POOL))})
|
await sio.emit("user-count", {"count": len(set(USER_POOL))})
|
||||||
|
|
||||||
|
|
||||||
@sio.on("user-count")
|
@sio.on("user-count")
|
||||||
async def user_count(sid):
|
async def user_count(sid):
|
||||||
print("user-count", sid)
|
|
||||||
await sio.emit("user-count", {"count": len(set(USER_POOL))})
|
await sio.emit("user-count", {"count": len(set(USER_POOL))})
|
||||||
|
|
||||||
|
|
||||||
@@ -79,14 +74,12 @@ def get_models_in_use():
|
|||||||
models_in_use = []
|
models_in_use = []
|
||||||
for model_id, data in USAGE_POOL.items():
|
for model_id, data in USAGE_POOL.items():
|
||||||
models_in_use.append(model_id)
|
models_in_use.append(model_id)
|
||||||
print(f"Models in use: {models_in_use}")
|
|
||||||
|
|
||||||
return models_in_use
|
return models_in_use
|
||||||
|
|
||||||
|
|
||||||
@sio.on("usage")
|
@sio.on("usage")
|
||||||
async def usage(sid, data):
|
async def usage(sid, data):
|
||||||
print(f'Received "usage" event from {sid}: {data}')
|
|
||||||
|
|
||||||
model_id = data["model"]
|
model_id = data["model"]
|
||||||
|
|
||||||
@@ -114,7 +107,6 @@ async def usage(sid, data):
|
|||||||
|
|
||||||
async def remove_after_timeout(sid, model_id):
|
async def remove_after_timeout(sid, model_id):
|
||||||
try:
|
try:
|
||||||
print("remove_after_timeout", sid, model_id)
|
|
||||||
await asyncio.sleep(TIMEOUT_DURATION)
|
await asyncio.sleep(TIMEOUT_DURATION)
|
||||||
if model_id in USAGE_POOL:
|
if model_id in USAGE_POOL:
|
||||||
print(USAGE_POOL[model_id]["sids"])
|
print(USAGE_POOL[model_id]["sids"])
|
||||||
@@ -124,7 +116,6 @@ async def remove_after_timeout(sid, model_id):
|
|||||||
if len(USAGE_POOL[model_id]["sids"]) == 0:
|
if len(USAGE_POOL[model_id]["sids"]) == 0:
|
||||||
del USAGE_POOL[model_id]
|
del USAGE_POOL[model_id]
|
||||||
|
|
||||||
print(f"Removed usage data for {model_id} due to timeout")
|
|
||||||
# Broadcast the usage data to all clients
|
# Broadcast the usage data to all clients
|
||||||
await sio.emit("usage", {"models": get_models_in_use()})
|
await sio.emit("usage", {"models": get_models_in_use()})
|
||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
@@ -143,9 +134,6 @@ async def disconnect(sid):
|
|||||||
if len(USER_POOL[user_id]) == 0:
|
if len(USER_POOL[user_id]) == 0:
|
||||||
del USER_POOL[user_id]
|
del USER_POOL[user_id]
|
||||||
|
|
||||||
print(f"user {user_id} disconnected with session ID {sid}")
|
|
||||||
print(USER_POOL)
|
|
||||||
|
|
||||||
await sio.emit("user-count", {"count": len(USER_POOL)})
|
await sio.emit("user-count", {"count": len(USER_POOL)})
|
||||||
else:
|
else:
|
||||||
print(f"Unknown session ID {sid} disconnected")
|
print(f"Unknown session ID {sid} disconnected")
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
"""Peewee migrations -- 009_add_models.py.
|
||||||
|
|
||||||
|
Some examples (model - class or model name)::
|
||||||
|
|
||||||
|
> Model = migrator.orm['table_name'] # Return model in current state by name
|
||||||
|
> Model = migrator.ModelClass # Return model in current state by name
|
||||||
|
|
||||||
|
> migrator.sql(sql) # Run custom SQL
|
||||||
|
> migrator.run(func, *args, **kwargs) # Run python function with the given args
|
||||||
|
> migrator.create_model(Model) # Create a model (could be used as decorator)
|
||||||
|
> migrator.remove_model(model, cascade=True) # Remove a model
|
||||||
|
> migrator.add_fields(model, **fields) # Add fields to a model
|
||||||
|
> migrator.change_fields(model, **fields) # Change fields
|
||||||
|
> migrator.remove_fields(model, *field_names, cascade=True)
|
||||||
|
> migrator.rename_field(model, old_field_name, new_field_name)
|
||||||
|
> migrator.rename_table(model, new_table_name)
|
||||||
|
> migrator.add_index(model, *col_names, unique=False)
|
||||||
|
> migrator.add_not_null(model, *field_names)
|
||||||
|
> migrator.add_default(model, field_name, default)
|
||||||
|
> migrator.add_constraint(model, name, sql)
|
||||||
|
> migrator.drop_index(model, *col_names)
|
||||||
|
> migrator.drop_not_null(model, *field_names)
|
||||||
|
> migrator.drop_constraints(model, *constraints)
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from contextlib import suppress
|
||||||
|
|
||||||
|
import peewee as pw
|
||||||
|
from peewee_migrate import Migrator
|
||||||
|
|
||||||
|
|
||||||
|
with suppress(ImportError):
|
||||||
|
import playhouse.postgres_ext as pw_pext
|
||||||
|
|
||||||
|
|
||||||
|
def migrate(migrator: Migrator, database: pw.Database, *, fake=False):
|
||||||
|
"""Write your migrations here."""
|
||||||
|
|
||||||
|
@migrator.create_model
|
||||||
|
class Tool(pw.Model):
|
||||||
|
id = pw.TextField(unique=True)
|
||||||
|
user_id = pw.TextField()
|
||||||
|
|
||||||
|
name = pw.TextField()
|
||||||
|
content = pw.TextField()
|
||||||
|
specs = pw.TextField()
|
||||||
|
|
||||||
|
meta = pw.TextField()
|
||||||
|
|
||||||
|
created_at = pw.BigIntegerField(null=False)
|
||||||
|
updated_at = pw.BigIntegerField(null=False)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
table_name = "tool"
|
||||||
|
|
||||||
|
|
||||||
|
def rollback(migrator: Migrator, database: pw.Database, *, fake=False):
|
||||||
|
"""Write your rollback migrations here."""
|
||||||
|
|
||||||
|
migrator.remove_model("tool")
|
||||||
@@ -6,6 +6,7 @@ from apps.webui.routers import (
|
|||||||
users,
|
users,
|
||||||
chats,
|
chats,
|
||||||
documents,
|
documents,
|
||||||
|
tools,
|
||||||
models,
|
models,
|
||||||
prompts,
|
prompts,
|
||||||
configs,
|
configs,
|
||||||
@@ -26,8 +27,8 @@ from config import (
|
|||||||
WEBUI_AUTH_TRUSTED_EMAIL_HEADER,
|
WEBUI_AUTH_TRUSTED_EMAIL_HEADER,
|
||||||
JWT_EXPIRES_IN,
|
JWT_EXPIRES_IN,
|
||||||
WEBUI_BANNERS,
|
WEBUI_BANNERS,
|
||||||
AppConfig,
|
|
||||||
ENABLE_COMMUNITY_SHARING,
|
ENABLE_COMMUNITY_SHARING,
|
||||||
|
AppConfig,
|
||||||
)
|
)
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
@@ -38,6 +39,7 @@ app.state.config = AppConfig()
|
|||||||
|
|
||||||
app.state.config.ENABLE_SIGNUP = ENABLE_SIGNUP
|
app.state.config.ENABLE_SIGNUP = ENABLE_SIGNUP
|
||||||
app.state.config.JWT_EXPIRES_IN = JWT_EXPIRES_IN
|
app.state.config.JWT_EXPIRES_IN = JWT_EXPIRES_IN
|
||||||
|
app.state.AUTH_TRUSTED_EMAIL_HEADER = WEBUI_AUTH_TRUSTED_EMAIL_HEADER
|
||||||
|
|
||||||
|
|
||||||
app.state.config.SHOW_ADMIN_DETAILS = SHOW_ADMIN_DETAILS
|
app.state.config.SHOW_ADMIN_DETAILS = SHOW_ADMIN_DETAILS
|
||||||
@@ -54,7 +56,7 @@ app.state.config.BANNERS = WEBUI_BANNERS
|
|||||||
app.state.config.ENABLE_COMMUNITY_SHARING = ENABLE_COMMUNITY_SHARING
|
app.state.config.ENABLE_COMMUNITY_SHARING = ENABLE_COMMUNITY_SHARING
|
||||||
|
|
||||||
app.state.MODELS = {}
|
app.state.MODELS = {}
|
||||||
app.state.AUTH_TRUSTED_EMAIL_HEADER = WEBUI_AUTH_TRUSTED_EMAIL_HEADER
|
app.state.TOOLS = {}
|
||||||
|
|
||||||
|
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
@@ -70,6 +72,7 @@ app.include_router(users.router, prefix="/users", tags=["users"])
|
|||||||
app.include_router(chats.router, prefix="/chats", tags=["chats"])
|
app.include_router(chats.router, prefix="/chats", tags=["chats"])
|
||||||
|
|
||||||
app.include_router(documents.router, prefix="/documents", tags=["documents"])
|
app.include_router(documents.router, prefix="/documents", tags=["documents"])
|
||||||
|
app.include_router(tools.router, prefix="/tools", tags=["tools"])
|
||||||
app.include_router(models.router, prefix="/models", tags=["models"])
|
app.include_router(models.router, prefix="/models", tags=["models"])
|
||||||
app.include_router(prompts.router, prefix="/prompts", tags=["prompts"])
|
app.include_router(prompts.router, prefix="/prompts", tags=["prompts"])
|
||||||
app.include_router(memories.router, prefix="/memories", tags=["memories"])
|
app.include_router(memories.router, prefix="/memories", tags=["memories"])
|
||||||
|
|||||||
@@ -0,0 +1,132 @@
|
|||||||
|
from pydantic import BaseModel
|
||||||
|
from peewee import *
|
||||||
|
from playhouse.shortcuts import model_to_dict
|
||||||
|
from typing import List, Union, Optional
|
||||||
|
import time
|
||||||
|
import logging
|
||||||
|
from apps.webui.internal.db import DB, JSONField
|
||||||
|
|
||||||
|
import json
|
||||||
|
|
||||||
|
from config import SRC_LOG_LEVELS
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
log.setLevel(SRC_LOG_LEVELS["MODELS"])
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Tools DB Schema
|
||||||
|
####################
|
||||||
|
|
||||||
|
|
||||||
|
class Tool(Model):
|
||||||
|
id = CharField(unique=True)
|
||||||
|
user_id = CharField()
|
||||||
|
name = TextField()
|
||||||
|
content = TextField()
|
||||||
|
specs = JSONField()
|
||||||
|
meta = JSONField()
|
||||||
|
updated_at = BigIntegerField()
|
||||||
|
created_at = BigIntegerField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
database = DB
|
||||||
|
|
||||||
|
|
||||||
|
class ToolMeta(BaseModel):
|
||||||
|
description: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
|
class ToolModel(BaseModel):
|
||||||
|
id: str
|
||||||
|
user_id: str
|
||||||
|
name: str
|
||||||
|
content: str
|
||||||
|
specs: List[dict]
|
||||||
|
meta: ToolMeta
|
||||||
|
updated_at: int # timestamp in epoch
|
||||||
|
created_at: int # timestamp in epoch
|
||||||
|
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Forms
|
||||||
|
####################
|
||||||
|
|
||||||
|
|
||||||
|
class ToolResponse(BaseModel):
|
||||||
|
id: str
|
||||||
|
user_id: str
|
||||||
|
name: str
|
||||||
|
meta: ToolMeta
|
||||||
|
updated_at: int # timestamp in epoch
|
||||||
|
created_at: int # timestamp in epoch
|
||||||
|
|
||||||
|
|
||||||
|
class ToolForm(BaseModel):
|
||||||
|
id: str
|
||||||
|
name: str
|
||||||
|
content: str
|
||||||
|
meta: ToolMeta
|
||||||
|
|
||||||
|
|
||||||
|
class ToolsTable:
|
||||||
|
def __init__(self, db):
|
||||||
|
self.db = db
|
||||||
|
self.db.create_tables([Tool])
|
||||||
|
|
||||||
|
def insert_new_tool(
|
||||||
|
self, user_id: str, form_data: ToolForm, specs: List[dict]
|
||||||
|
) -> Optional[ToolModel]:
|
||||||
|
tool = ToolModel(
|
||||||
|
**{
|
||||||
|
**form_data.model_dump(),
|
||||||
|
"specs": specs,
|
||||||
|
"user_id": user_id,
|
||||||
|
"updated_at": int(time.time()),
|
||||||
|
"created_at": int(time.time()),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
result = Tool.create(**tool.model_dump())
|
||||||
|
if result:
|
||||||
|
return tool
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error creating tool: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_tool_by_id(self, id: str) -> Optional[ToolModel]:
|
||||||
|
try:
|
||||||
|
tool = Tool.get(Tool.id == id)
|
||||||
|
return ToolModel(**model_to_dict(tool))
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_tools(self) -> List[ToolModel]:
|
||||||
|
return [ToolModel(**model_to_dict(tool)) for tool in Tool.select()]
|
||||||
|
|
||||||
|
def update_tool_by_id(self, id: str, updated: dict) -> Optional[ToolModel]:
|
||||||
|
try:
|
||||||
|
query = Tool.update(
|
||||||
|
**updated,
|
||||||
|
updated_at=int(time.time()),
|
||||||
|
).where(Tool.id == id)
|
||||||
|
query.execute()
|
||||||
|
|
||||||
|
tool = Tool.get(Tool.id == id)
|
||||||
|
return ToolModel(**model_to_dict(tool))
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def delete_tool_by_id(self, id: str) -> bool:
|
||||||
|
try:
|
||||||
|
query = Tool.delete().where((Tool.id == id))
|
||||||
|
query.execute() # Remove the rows, return number of rows removed.
|
||||||
|
|
||||||
|
return True
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
Tools = ToolsTable(DB)
|
||||||
@@ -161,7 +161,7 @@ async def get_archived_session_user_chat_list(
|
|||||||
############################
|
############################
|
||||||
|
|
||||||
|
|
||||||
@router.post("/archive/all", response_model=List[ChatTitleIdResponse])
|
@router.post("/archive/all", response_model=bool)
|
||||||
async def archive_all_chats(user=Depends(get_current_user)):
|
async def archive_all_chats(user=Depends(get_current_user)):
|
||||||
return Chats.archive_all_chats_by_user_id(user.id)
|
return Chats.archive_all_chats_by_user_id(user.id)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,183 @@
|
|||||||
|
from fastapi import Depends, FastAPI, HTTPException, status, Request
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
from typing import List, Union, Optional
|
||||||
|
|
||||||
|
from fastapi import APIRouter
|
||||||
|
from pydantic import BaseModel
|
||||||
|
import json
|
||||||
|
|
||||||
|
from apps.webui.models.tools import Tools, ToolForm, ToolModel, ToolResponse
|
||||||
|
from apps.webui.utils import load_toolkit_module_by_id
|
||||||
|
|
||||||
|
from utils.utils import get_current_user, get_admin_user
|
||||||
|
from utils.tools import get_tools_specs
|
||||||
|
from constants import ERROR_MESSAGES
|
||||||
|
|
||||||
|
from importlib import util
|
||||||
|
import os
|
||||||
|
|
||||||
|
from config import DATA_DIR
|
||||||
|
|
||||||
|
|
||||||
|
TOOLS_DIR = f"{DATA_DIR}/tools"
|
||||||
|
os.makedirs(TOOLS_DIR, exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
|
router = APIRouter()
|
||||||
|
|
||||||
|
############################
|
||||||
|
# GetToolkits
|
||||||
|
############################
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/", response_model=List[ToolResponse])
|
||||||
|
async def get_toolkits(user=Depends(get_current_user)):
|
||||||
|
toolkits = [toolkit for toolkit in Tools.get_tools()]
|
||||||
|
return toolkits
|
||||||
|
|
||||||
|
|
||||||
|
############################
|
||||||
|
# ExportToolKits
|
||||||
|
############################
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/export", response_model=List[ToolModel])
|
||||||
|
async def get_toolkits(user=Depends(get_admin_user)):
|
||||||
|
toolkits = [toolkit for toolkit in Tools.get_tools()]
|
||||||
|
return toolkits
|
||||||
|
|
||||||
|
|
||||||
|
############################
|
||||||
|
# CreateNewToolKit
|
||||||
|
############################
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/create", response_model=Optional[ToolResponse])
|
||||||
|
async def create_new_toolkit(
|
||||||
|
request: Request, form_data: ToolForm, user=Depends(get_admin_user)
|
||||||
|
):
|
||||||
|
if not form_data.id.isidentifier():
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail="Only alphanumeric characters and underscores are allowed in the id",
|
||||||
|
)
|
||||||
|
|
||||||
|
form_data.id = form_data.id.lower()
|
||||||
|
|
||||||
|
toolkit = Tools.get_tool_by_id(form_data.id)
|
||||||
|
if toolkit == None:
|
||||||
|
toolkit_path = os.path.join(TOOLS_DIR, f"{form_data.id}.py")
|
||||||
|
try:
|
||||||
|
with open(toolkit_path, "w") as tool_file:
|
||||||
|
tool_file.write(form_data.content)
|
||||||
|
|
||||||
|
toolkit_module = load_toolkit_module_by_id(form_data.id)
|
||||||
|
|
||||||
|
TOOLS = request.app.state.TOOLS
|
||||||
|
TOOLS[form_data.id] = toolkit_module
|
||||||
|
|
||||||
|
specs = get_tools_specs(TOOLS[form_data.id])
|
||||||
|
toolkit = Tools.insert_new_tool(user.id, form_data, specs)
|
||||||
|
|
||||||
|
if toolkit:
|
||||||
|
return toolkit
|
||||||
|
else:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail=ERROR_MESSAGES.DEFAULT("Error creating toolkit"),
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail=ERROR_MESSAGES.DEFAULT(e),
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail=ERROR_MESSAGES.ID_TAKEN,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
############################
|
||||||
|
# GetToolkitById
|
||||||
|
############################
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/id/{id}", response_model=Optional[ToolModel])
|
||||||
|
async def get_toolkit_by_id(id: str, user=Depends(get_admin_user)):
|
||||||
|
toolkit = Tools.get_tool_by_id(id)
|
||||||
|
|
||||||
|
if toolkit:
|
||||||
|
return toolkit
|
||||||
|
else:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||||
|
detail=ERROR_MESSAGES.NOT_FOUND,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
############################
|
||||||
|
# UpdateToolkitById
|
||||||
|
############################
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/id/{id}/update", response_model=Optional[ToolModel])
|
||||||
|
async def update_toolkit_by_id(
|
||||||
|
request: Request, id: str, form_data: ToolForm, user=Depends(get_admin_user)
|
||||||
|
):
|
||||||
|
toolkit_path = os.path.join(TOOLS_DIR, f"{id}.py")
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(toolkit_path, "w") as tool_file:
|
||||||
|
tool_file.write(form_data.content)
|
||||||
|
|
||||||
|
toolkit_module = load_toolkit_module_by_id(id)
|
||||||
|
|
||||||
|
TOOLS = request.app.state.TOOLS
|
||||||
|
TOOLS[id] = toolkit_module
|
||||||
|
|
||||||
|
specs = get_tools_specs(TOOLS[id])
|
||||||
|
|
||||||
|
updated = {
|
||||||
|
**form_data.model_dump(exclude={"id"}),
|
||||||
|
"specs": specs,
|
||||||
|
}
|
||||||
|
|
||||||
|
print(updated)
|
||||||
|
toolkit = Tools.update_tool_by_id(id, updated)
|
||||||
|
|
||||||
|
if toolkit:
|
||||||
|
return toolkit
|
||||||
|
else:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail=ERROR_MESSAGES.DEFAULT("Error updating toolkit"),
|
||||||
|
)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail=ERROR_MESSAGES.DEFAULT(e),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
############################
|
||||||
|
# DeleteToolkitById
|
||||||
|
############################
|
||||||
|
|
||||||
|
|
||||||
|
@router.delete("/id/{id}/delete", response_model=bool)
|
||||||
|
async def delete_toolkit_by_id(request: Request, id: str, user=Depends(get_admin_user)):
|
||||||
|
result = Tools.delete_tool_by_id(id)
|
||||||
|
|
||||||
|
if result:
|
||||||
|
TOOLS = request.app.state.TOOLS
|
||||||
|
if id in TOOLS:
|
||||||
|
del TOOLS[id]
|
||||||
|
|
||||||
|
# delete the toolkit file
|
||||||
|
toolkit_path = os.path.join(TOOLS_DIR, f"{id}.py")
|
||||||
|
os.remove(toolkit_path)
|
||||||
|
|
||||||
|
return result
|
||||||
@@ -7,6 +7,8 @@ from pydantic import BaseModel
|
|||||||
|
|
||||||
from fpdf import FPDF
|
from fpdf import FPDF
|
||||||
import markdown
|
import markdown
|
||||||
|
import black
|
||||||
|
|
||||||
|
|
||||||
from apps.webui.internal.db import DB
|
from apps.webui.internal.db import DB
|
||||||
from utils.utils import get_admin_user
|
from utils.utils import get_admin_user
|
||||||
@@ -26,6 +28,21 @@ async def get_gravatar(
|
|||||||
return get_gravatar_url(email)
|
return get_gravatar_url(email)
|
||||||
|
|
||||||
|
|
||||||
|
class CodeFormatRequest(BaseModel):
|
||||||
|
code: str
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/code/format")
|
||||||
|
async def format_code(request: CodeFormatRequest):
|
||||||
|
try:
|
||||||
|
formatted_code = black.format_str(request.code, mode=black.Mode())
|
||||||
|
return {"code": formatted_code}
|
||||||
|
except black.NothingChanged:
|
||||||
|
return {"code": request.code}
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(status_code=400, detail=str(e))
|
||||||
|
|
||||||
|
|
||||||
class MarkdownForm(BaseModel):
|
class MarkdownForm(BaseModel):
|
||||||
md: str
|
md: str
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
from importlib import util
|
||||||
|
import os
|
||||||
|
|
||||||
|
from config import TOOLS_DIR
|
||||||
|
|
||||||
|
|
||||||
|
def load_toolkit_module_by_id(toolkit_id):
|
||||||
|
toolkit_path = os.path.join(TOOLS_DIR, f"{toolkit_id}.py")
|
||||||
|
spec = util.spec_from_file_location(toolkit_id, toolkit_path)
|
||||||
|
module = util.module_from_spec(spec)
|
||||||
|
|
||||||
|
try:
|
||||||
|
spec.loader.exec_module(module)
|
||||||
|
print(f"Loaded module: {module.__name__}")
|
||||||
|
if hasattr(module, "Tools"):
|
||||||
|
return module.Tools()
|
||||||
|
else:
|
||||||
|
raise Exception("No Tools class found")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error loading module: {toolkit_id}")
|
||||||
|
# Move the file to the error folder
|
||||||
|
os.rename(toolkit_path, f"{toolkit_path}.error")
|
||||||
|
raise e
|
||||||
+33
-6
@@ -308,8 +308,9 @@ frontend_favicon = FRONTEND_BUILD_DIR / "favicon.png"
|
|||||||
if frontend_favicon.exists():
|
if frontend_favicon.exists():
|
||||||
try:
|
try:
|
||||||
shutil.copyfile(frontend_favicon, STATIC_DIR / "favicon.png")
|
shutil.copyfile(frontend_favicon, STATIC_DIR / "favicon.png")
|
||||||
except PermissionError:
|
except Exception as e:
|
||||||
logging.error(f"No write permission to {STATIC_DIR / 'favicon.png'}")
|
logging.error(f"An error occurred: {e}")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
logging.warning(f"Frontend favicon not found at {frontend_favicon}")
|
logging.warning(f"Frontend favicon not found at {frontend_favicon}")
|
||||||
|
|
||||||
@@ -367,6 +368,14 @@ DOCS_DIR = os.getenv("DOCS_DIR", f"{DATA_DIR}/docs")
|
|||||||
Path(DOCS_DIR).mkdir(parents=True, exist_ok=True)
|
Path(DOCS_DIR).mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
|
####################################
|
||||||
|
# Tools DIR
|
||||||
|
####################################
|
||||||
|
|
||||||
|
TOOLS_DIR = os.getenv("TOOLS_DIR", f"{DATA_DIR}/tools")
|
||||||
|
Path(TOOLS_DIR).mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
####################################
|
####################################
|
||||||
# LITELLM_CONFIG
|
# LITELLM_CONFIG
|
||||||
####################################
|
####################################
|
||||||
@@ -668,16 +677,28 @@ Question:
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD = PersistentConfig(
|
SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD = PersistentConfig(
|
||||||
"SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD",
|
"SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD",
|
||||||
"task.search.prompt_length_threshold",
|
"task.search.prompt_length_threshold",
|
||||||
os.environ.get(
|
int(
|
||||||
"SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD",
|
os.environ.get(
|
||||||
100,
|
"SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD",
|
||||||
|
100,
|
||||||
|
)
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE = PersistentConfig(
|
||||||
|
"TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE",
|
||||||
|
"task.tools.prompt_template",
|
||||||
|
os.environ.get(
|
||||||
|
"TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE",
|
||||||
|
"""Tools: {{TOOLS}}
|
||||||
|
If a function tool doesn't match the query, return an empty string. Else, pick a function tool, fill in the parameters from the function tool's schema, and return it in the format { "name": \"functionName\", "parameters": { "key": "value" } }. Only pick a function if the user asks. Only return the object. Do not return any other text.""",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
####################################
|
####################################
|
||||||
# WEBUI_SECRET_KEY
|
# WEBUI_SECRET_KEY
|
||||||
####################################
|
####################################
|
||||||
@@ -915,6 +936,12 @@ SERPER_API_KEY = PersistentConfig(
|
|||||||
os.getenv("SERPER_API_KEY", ""),
|
os.getenv("SERPER_API_KEY", ""),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
SERPLY_API_KEY = PersistentConfig(
|
||||||
|
"SERPLY_API_KEY",
|
||||||
|
"rag.web.search.serply_api_key",
|
||||||
|
os.getenv("SERPLY_API_KEY", ""),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
RAG_WEB_SEARCH_RESULT_COUNT = PersistentConfig(
|
RAG_WEB_SEARCH_RESULT_COUNT = PersistentConfig(
|
||||||
"RAG_WEB_SEARCH_RESULT_COUNT",
|
"RAG_WEB_SEARCH_RESULT_COUNT",
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ class ERROR_MESSAGES(str, Enum):
|
|||||||
COMMAND_TAKEN = "Uh-oh! This command is already registered. Please choose another command string."
|
COMMAND_TAKEN = "Uh-oh! This command is already registered. Please choose another command string."
|
||||||
FILE_EXISTS = "Uh-oh! This file is already registered. Please choose another file."
|
FILE_EXISTS = "Uh-oh! This file is already registered. Please choose another file."
|
||||||
|
|
||||||
|
ID_TAKEN = "Uh-oh! This id is already registered. Please choose another id string."
|
||||||
MODEL_ID_TAKEN = "Uh-oh! This model id is already registered. Please choose another model id string."
|
MODEL_ID_TAKEN = "Uh-oh! This model id is already registered. Please choose another model id string."
|
||||||
|
|
||||||
NAME_TAG_TAKEN = "Uh-oh! This name tag is already registered. Please choose another name tag string."
|
NAME_TAG_TAKEN = "Uh-oh! This name tag is already registered. Please choose another name tag string."
|
||||||
|
|||||||
+223
-21
@@ -11,6 +11,7 @@ import requests
|
|||||||
import mimetypes
|
import mimetypes
|
||||||
import shutil
|
import shutil
|
||||||
import os
|
import os
|
||||||
|
import inspect
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
from fastapi import FastAPI, Request, Depends, status, UploadFile, File, Form
|
from fastapi import FastAPI, Request, Depends, status, UploadFile, File, Form
|
||||||
@@ -47,15 +48,24 @@ from pydantic import BaseModel
|
|||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
|
|
||||||
from apps.webui.models.models import Models, ModelModel
|
from apps.webui.models.models import Models, ModelModel
|
||||||
|
from apps.webui.models.tools import Tools
|
||||||
|
from apps.webui.utils import load_toolkit_module_by_id
|
||||||
|
|
||||||
|
|
||||||
from utils.utils import (
|
from utils.utils import (
|
||||||
get_admin_user,
|
get_admin_user,
|
||||||
get_verified_user,
|
get_verified_user,
|
||||||
get_current_user,
|
get_current_user,
|
||||||
get_http_authorization_cred,
|
get_http_authorization_cred,
|
||||||
)
|
)
|
||||||
from utils.task import title_generation_template, search_query_generation_template
|
from utils.task import (
|
||||||
|
title_generation_template,
|
||||||
|
search_query_generation_template,
|
||||||
|
tools_function_calling_generation_template,
|
||||||
|
)
|
||||||
|
from utils.misc import get_last_user_message, add_or_update_system_message
|
||||||
|
|
||||||
from apps.rag.utils import rag_messages
|
from apps.rag.utils import get_rag_context, rag_template
|
||||||
|
|
||||||
from config import (
|
from config import (
|
||||||
CONFIG_DATA,
|
CONFIG_DATA,
|
||||||
@@ -82,6 +92,7 @@ from config import (
|
|||||||
TITLE_GENERATION_PROMPT_TEMPLATE,
|
TITLE_GENERATION_PROMPT_TEMPLATE,
|
||||||
SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE,
|
SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE,
|
||||||
SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD,
|
SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD,
|
||||||
|
TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE,
|
||||||
AppConfig,
|
AppConfig,
|
||||||
)
|
)
|
||||||
from constants import ERROR_MESSAGES
|
from constants import ERROR_MESSAGES
|
||||||
@@ -148,24 +159,117 @@ app.state.config.SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE = (
|
|||||||
app.state.config.SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD = (
|
app.state.config.SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD = (
|
||||||
SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD
|
SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD
|
||||||
)
|
)
|
||||||
|
app.state.config.TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE = (
|
||||||
|
TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE
|
||||||
|
)
|
||||||
|
|
||||||
app.state.MODELS = {}
|
app.state.MODELS = {}
|
||||||
|
|
||||||
origins = ["*"]
|
origins = ["*"]
|
||||||
|
|
||||||
# Custom middleware to add security headers
|
|
||||||
# class SecurityHeadersMiddleware(BaseHTTPMiddleware):
|
async def get_function_call_response(messages, tool_id, template, task_model_id, user):
|
||||||
# async def dispatch(self, request: Request, call_next):
|
tool = Tools.get_tool_by_id(tool_id)
|
||||||
# response: Response = await call_next(request)
|
tools_specs = json.dumps(tool.specs, indent=2)
|
||||||
# response.headers["Cross-Origin-Opener-Policy"] = "same-origin"
|
content = tools_function_calling_generation_template(template, tools_specs)
|
||||||
# response.headers["Cross-Origin-Embedder-Policy"] = "require-corp"
|
|
||||||
# return response
|
user_message = get_last_user_message(messages)
|
||||||
|
prompt = (
|
||||||
|
"History:\n"
|
||||||
|
+ "\n".join(
|
||||||
|
[
|
||||||
|
f"{message['role'].upper()}: \"\"\"{message['content']}\"\"\""
|
||||||
|
for message in messages[::-1][:4]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
+ f"\nQuery: {user_message}"
|
||||||
|
)
|
||||||
|
|
||||||
|
print(prompt)
|
||||||
|
|
||||||
|
payload = {
|
||||||
|
"model": task_model_id,
|
||||||
|
"messages": [
|
||||||
|
{"role": "system", "content": content},
|
||||||
|
{"role": "user", "content": f"Query: {prompt}"},
|
||||||
|
],
|
||||||
|
"stream": False,
|
||||||
|
}
|
||||||
|
|
||||||
|
payload = filter_pipeline(payload, user)
|
||||||
|
model = app.state.MODELS[task_model_id]
|
||||||
|
|
||||||
|
response = None
|
||||||
|
try:
|
||||||
|
if model["owned_by"] == "ollama":
|
||||||
|
response = await generate_ollama_chat_completion(
|
||||||
|
OpenAIChatCompletionForm(**payload), user=user
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
response = await generate_openai_chat_completion(payload, user=user)
|
||||||
|
|
||||||
|
content = None
|
||||||
|
|
||||||
|
if hasattr(response, "body_iterator"):
|
||||||
|
async for chunk in response.body_iterator:
|
||||||
|
data = json.loads(chunk.decode("utf-8"))
|
||||||
|
content = data["choices"][0]["message"]["content"]
|
||||||
|
|
||||||
|
# Cleanup any remaining background tasks if necessary
|
||||||
|
if response.background is not None:
|
||||||
|
await response.background()
|
||||||
|
else:
|
||||||
|
content = response["choices"][0]["message"]["content"]
|
||||||
|
|
||||||
|
# Parse the function response
|
||||||
|
if content is not None:
|
||||||
|
print(f"content: {content}")
|
||||||
|
result = json.loads(content)
|
||||||
|
print(result)
|
||||||
|
|
||||||
|
# Call the function
|
||||||
|
if "name" in result:
|
||||||
|
if tool_id in webui_app.state.TOOLS:
|
||||||
|
toolkit_module = webui_app.state.TOOLS[tool_id]
|
||||||
|
else:
|
||||||
|
toolkit_module = load_toolkit_module_by_id(tool_id)
|
||||||
|
webui_app.state.TOOLS[tool_id] = toolkit_module
|
||||||
|
|
||||||
|
function = getattr(toolkit_module, result["name"])
|
||||||
|
function_result = None
|
||||||
|
try:
|
||||||
|
# Get the signature of the function
|
||||||
|
sig = inspect.signature(function)
|
||||||
|
# Check if '__user__' is a parameter of the function
|
||||||
|
if "__user__" in sig.parameters:
|
||||||
|
# Call the function with the '__user__' parameter included
|
||||||
|
function_result = function(
|
||||||
|
**{
|
||||||
|
**result["parameters"],
|
||||||
|
"__user__": {
|
||||||
|
"id": user.id,
|
||||||
|
"email": user.email,
|
||||||
|
"name": user.name,
|
||||||
|
"role": user.role,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
# Call the function without modifying the parameters
|
||||||
|
function_result = function(**result["parameters"])
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
# Add the function result to the system prompt
|
||||||
|
if function_result:
|
||||||
|
return function_result
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error: {e}")
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
# app.add_middleware(SecurityHeadersMiddleware)
|
class ChatCompletionMiddleware(BaseHTTPMiddleware):
|
||||||
|
|
||||||
|
|
||||||
class RAGMiddleware(BaseHTTPMiddleware):
|
|
||||||
async def dispatch(self, request: Request, call_next):
|
async def dispatch(self, request: Request, call_next):
|
||||||
return_citations = False
|
return_citations = False
|
||||||
|
|
||||||
@@ -182,35 +286,95 @@ class RAGMiddleware(BaseHTTPMiddleware):
|
|||||||
# Parse string to JSON
|
# Parse string to JSON
|
||||||
data = json.loads(body_str) if body_str else {}
|
data = json.loads(body_str) if body_str else {}
|
||||||
|
|
||||||
|
user = get_current_user(
|
||||||
|
get_http_authorization_cred(request.headers.get("Authorization"))
|
||||||
|
)
|
||||||
|
|
||||||
|
# Remove the citations from the body
|
||||||
return_citations = data.get("citations", False)
|
return_citations = data.get("citations", False)
|
||||||
if "citations" in data:
|
if "citations" in data:
|
||||||
del data["citations"]
|
del data["citations"]
|
||||||
|
|
||||||
# Example: Add a new key-value pair or modify existing ones
|
# Set the task model
|
||||||
# data["modified"] = True # Example modification
|
task_model_id = data["model"]
|
||||||
|
if task_model_id not in app.state.MODELS:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail="Model not found",
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check if the user has a custom task model
|
||||||
|
# If the user has a custom task model, use that model
|
||||||
|
if app.state.MODELS[task_model_id]["owned_by"] == "ollama":
|
||||||
|
if (
|
||||||
|
app.state.config.TASK_MODEL
|
||||||
|
and app.state.config.TASK_MODEL in app.state.MODELS
|
||||||
|
):
|
||||||
|
task_model_id = app.state.config.TASK_MODEL
|
||||||
|
else:
|
||||||
|
if (
|
||||||
|
app.state.config.TASK_MODEL_EXTERNAL
|
||||||
|
and app.state.config.TASK_MODEL_EXTERNAL in app.state.MODELS
|
||||||
|
):
|
||||||
|
task_model_id = app.state.config.TASK_MODEL_EXTERNAL
|
||||||
|
|
||||||
|
prompt = get_last_user_message(data["messages"])
|
||||||
|
context = ""
|
||||||
|
|
||||||
|
# If tool_ids field is present, call the functions
|
||||||
|
if "tool_ids" in data:
|
||||||
|
print(data["tool_ids"])
|
||||||
|
for tool_id in data["tool_ids"]:
|
||||||
|
print(tool_id)
|
||||||
|
response = await get_function_call_response(
|
||||||
|
messages=data["messages"],
|
||||||
|
tool_id=tool_id,
|
||||||
|
template=app.state.config.TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE,
|
||||||
|
task_model_id=task_model_id,
|
||||||
|
user=user,
|
||||||
|
)
|
||||||
|
|
||||||
|
if response:
|
||||||
|
context += ("\n" if context != "" else "") + response
|
||||||
|
del data["tool_ids"]
|
||||||
|
|
||||||
|
print(f"tool_context: {context}")
|
||||||
|
|
||||||
|
# If docs field is present, generate RAG completions
|
||||||
if "docs" in data:
|
if "docs" in data:
|
||||||
data = {**data}
|
data = {**data}
|
||||||
data["messages"], citations = rag_messages(
|
rag_context, citations = get_rag_context(
|
||||||
docs=data["docs"],
|
docs=data["docs"],
|
||||||
messages=data["messages"],
|
messages=data["messages"],
|
||||||
template=rag_app.state.config.RAG_TEMPLATE,
|
|
||||||
embedding_function=rag_app.state.EMBEDDING_FUNCTION,
|
embedding_function=rag_app.state.EMBEDDING_FUNCTION,
|
||||||
k=rag_app.state.config.TOP_K,
|
k=rag_app.state.config.TOP_K,
|
||||||
reranking_function=rag_app.state.sentence_transformer_rf,
|
reranking_function=rag_app.state.sentence_transformer_rf,
|
||||||
r=rag_app.state.config.RELEVANCE_THRESHOLD,
|
r=rag_app.state.config.RELEVANCE_THRESHOLD,
|
||||||
hybrid_search=rag_app.state.config.ENABLE_RAG_HYBRID_SEARCH,
|
hybrid_search=rag_app.state.config.ENABLE_RAG_HYBRID_SEARCH,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if rag_context:
|
||||||
|
context += ("\n" if context != "" else "") + rag_context
|
||||||
|
|
||||||
del data["docs"]
|
del data["docs"]
|
||||||
|
|
||||||
log.debug(
|
log.debug(f"rag_context: {rag_context}, citations: {citations}")
|
||||||
f"data['messages']: {data['messages']}, citations: {citations}"
|
|
||||||
|
if context != "":
|
||||||
|
system_prompt = rag_template(
|
||||||
|
rag_app.state.config.RAG_TEMPLATE, context, prompt
|
||||||
|
)
|
||||||
|
|
||||||
|
print(system_prompt)
|
||||||
|
|
||||||
|
data["messages"] = add_or_update_system_message(
|
||||||
|
f"\n{system_prompt}", data["messages"]
|
||||||
)
|
)
|
||||||
|
|
||||||
modified_body_bytes = json.dumps(data).encode("utf-8")
|
modified_body_bytes = json.dumps(data).encode("utf-8")
|
||||||
|
|
||||||
# Replace the request body with the modified one
|
# Replace the request body with the modified one
|
||||||
request._body = modified_body_bytes
|
request._body = modified_body_bytes
|
||||||
|
|
||||||
# Set custom header to ensure content-length matches new body length
|
# Set custom header to ensure content-length matches new body length
|
||||||
request.headers.__dict__["_list"] = [
|
request.headers.__dict__["_list"] = [
|
||||||
(b"content-length", str(len(modified_body_bytes)).encode("utf-8")),
|
(b"content-length", str(len(modified_body_bytes)).encode("utf-8")),
|
||||||
@@ -253,7 +417,7 @@ class RAGMiddleware(BaseHTTPMiddleware):
|
|||||||
yield data
|
yield data
|
||||||
|
|
||||||
|
|
||||||
app.add_middleware(RAGMiddleware)
|
app.add_middleware(ChatCompletionMiddleware)
|
||||||
|
|
||||||
|
|
||||||
def filter_pipeline(payload, user):
|
def filter_pipeline(payload, user):
|
||||||
@@ -515,6 +679,7 @@ async def get_task_config(user=Depends(get_verified_user)):
|
|||||||
"TITLE_GENERATION_PROMPT_TEMPLATE": app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE,
|
"TITLE_GENERATION_PROMPT_TEMPLATE": app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE,
|
||||||
"SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE": app.state.config.SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE,
|
"SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE": app.state.config.SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE,
|
||||||
"SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD": app.state.config.SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD,
|
"SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD": app.state.config.SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD,
|
||||||
|
"TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE": app.state.config.TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -524,6 +689,7 @@ class TaskConfigForm(BaseModel):
|
|||||||
TITLE_GENERATION_PROMPT_TEMPLATE: str
|
TITLE_GENERATION_PROMPT_TEMPLATE: str
|
||||||
SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE: str
|
SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE: str
|
||||||
SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD: int
|
SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD: int
|
||||||
|
TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE: str
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/task/config/update")
|
@app.post("/api/task/config/update")
|
||||||
@@ -539,6 +705,9 @@ async def update_task_config(form_data: TaskConfigForm, user=Depends(get_admin_u
|
|||||||
app.state.config.SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD = (
|
app.state.config.SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD = (
|
||||||
form_data.SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD
|
form_data.SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD
|
||||||
)
|
)
|
||||||
|
app.state.config.TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE = (
|
||||||
|
form_data.TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"TASK_MODEL": app.state.config.TASK_MODEL,
|
"TASK_MODEL": app.state.config.TASK_MODEL,
|
||||||
@@ -546,6 +715,7 @@ async def update_task_config(form_data: TaskConfigForm, user=Depends(get_admin_u
|
|||||||
"TITLE_GENERATION_PROMPT_TEMPLATE": app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE,
|
"TITLE_GENERATION_PROMPT_TEMPLATE": app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE,
|
||||||
"SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE": app.state.config.SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE,
|
"SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE": app.state.config.SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE,
|
||||||
"SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD": app.state.config.SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD,
|
"SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD": app.state.config.SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD,
|
||||||
|
"TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE": app.state.config.TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -659,6 +829,38 @@ async def generate_search_query(form_data: dict, user=Depends(get_verified_user)
|
|||||||
return await generate_openai_chat_completion(payload, user=user)
|
return await generate_openai_chat_completion(payload, user=user)
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/api/task/tools/completions")
|
||||||
|
async def get_tools_function_calling(form_data: dict, user=Depends(get_verified_user)):
|
||||||
|
print("get_tools_function_calling")
|
||||||
|
|
||||||
|
model_id = form_data["model"]
|
||||||
|
if model_id not in app.state.MODELS:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail="Model not found",
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check if the user has a custom task model
|
||||||
|
# If the user has a custom task model, use that model
|
||||||
|
if app.state.MODELS[model_id]["owned_by"] == "ollama":
|
||||||
|
if app.state.config.TASK_MODEL:
|
||||||
|
task_model_id = app.state.config.TASK_MODEL
|
||||||
|
if task_model_id in app.state.MODELS:
|
||||||
|
model_id = task_model_id
|
||||||
|
else:
|
||||||
|
if app.state.config.TASK_MODEL_EXTERNAL:
|
||||||
|
task_model_id = app.state.config.TASK_MODEL_EXTERNAL
|
||||||
|
if task_model_id in app.state.MODELS:
|
||||||
|
model_id = task_model_id
|
||||||
|
|
||||||
|
print(model_id)
|
||||||
|
template = app.state.config.TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE
|
||||||
|
|
||||||
|
return await get_function_call_response(
|
||||||
|
form_data["messages"], form_data["tool_id"], template, model_id, user
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/chat/completions")
|
@app.post("/api/chat/completions")
|
||||||
async def generate_chat_completions(form_data: dict, user=Depends(get_verified_user)):
|
async def generate_chat_completions(form_data: dict, user=Depends(get_verified_user)):
|
||||||
model_id = form_data["model"]
|
model_id = form_data["model"]
|
||||||
|
|||||||
@@ -59,4 +59,5 @@ youtube-transcript-api==0.6.2
|
|||||||
pytube==15.0.0
|
pytube==15.0.0
|
||||||
|
|
||||||
extract_msg
|
extract_msg
|
||||||
pydub
|
pydub
|
||||||
|
duckduckgo-search~=6.1.5
|
||||||
@@ -8,6 +8,7 @@ cd /d "%SCRIPT_DIR%" || exit /b
|
|||||||
|
|
||||||
SET "KEY_FILE=.webui_secret_key"
|
SET "KEY_FILE=.webui_secret_key"
|
||||||
IF "%PORT%"=="" SET PORT=8080
|
IF "%PORT%"=="" SET PORT=8080
|
||||||
|
IF "%HOST%"=="" SET HOST=0.0.0.0
|
||||||
SET "WEBUI_SECRET_KEY=%WEBUI_SECRET_KEY%"
|
SET "WEBUI_SECRET_KEY=%WEBUI_SECRET_KEY%"
|
||||||
SET "WEBUI_JWT_SECRET_KEY=%WEBUI_JWT_SECRET_KEY%"
|
SET "WEBUI_JWT_SECRET_KEY=%WEBUI_JWT_SECRET_KEY%"
|
||||||
|
|
||||||
@@ -29,4 +30,4 @@ IF "%WEBUI_SECRET_KEY%%WEBUI_JWT_SECRET_KEY%" == " " (
|
|||||||
|
|
||||||
:: Execute uvicorn
|
:: Execute uvicorn
|
||||||
SET "WEBUI_SECRET_KEY=%WEBUI_SECRET_KEY%"
|
SET "WEBUI_SECRET_KEY=%WEBUI_SECRET_KEY%"
|
||||||
uvicorn main:app --host 0.0.0.0 --port "%PORT%" --forwarded-allow-ips '*'
|
uvicorn main:app --host "%HOST%" --port "%PORT%" --forwarded-allow-ips '*'
|
||||||
|
|||||||
@@ -110,3 +110,8 @@ def search_query_generation_template(
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
return template
|
return template
|
||||||
|
|
||||||
|
|
||||||
|
def tools_function_calling_generation_template(template: str, tools_specs: str) -> str:
|
||||||
|
template = template.replace("{{TOOLS}}", tools_specs)
|
||||||
|
return template
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
import inspect
|
||||||
|
from typing import get_type_hints, List, Dict, Any
|
||||||
|
|
||||||
|
|
||||||
|
def doc_to_dict(docstring):
|
||||||
|
lines = docstring.split("\n")
|
||||||
|
description = lines[1].strip()
|
||||||
|
param_dict = {}
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
if ":param" in line:
|
||||||
|
line = line.replace(":param", "").strip()
|
||||||
|
param, desc = line.split(":", 1)
|
||||||
|
param_dict[param.strip()] = desc.strip()
|
||||||
|
ret_dict = {"description": description, "params": param_dict}
|
||||||
|
return ret_dict
|
||||||
|
|
||||||
|
|
||||||
|
def get_tools_specs(tools) -> List[dict]:
|
||||||
|
function_list = [
|
||||||
|
{"name": func, "function": getattr(tools, func)}
|
||||||
|
for func in dir(tools)
|
||||||
|
if callable(getattr(tools, func)) and not func.startswith("__")
|
||||||
|
]
|
||||||
|
|
||||||
|
specs = []
|
||||||
|
for function_item in function_list:
|
||||||
|
function_name = function_item["name"]
|
||||||
|
function = function_item["function"]
|
||||||
|
|
||||||
|
function_doc = doc_to_dict(function.__doc__ or function_name)
|
||||||
|
specs.append(
|
||||||
|
{
|
||||||
|
"name": function_name,
|
||||||
|
# TODO: multi-line desc?
|
||||||
|
"description": function_doc.get("description", function_name),
|
||||||
|
"parameters": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
param_name: {
|
||||||
|
"type": param_annotation.__name__.lower(),
|
||||||
|
**(
|
||||||
|
{
|
||||||
|
"enum": (
|
||||||
|
str(param_annotation.__args__)
|
||||||
|
if hasattr(param_annotation, "__args__")
|
||||||
|
else None
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if hasattr(param_annotation, "__args__")
|
||||||
|
else {}
|
||||||
|
),
|
||||||
|
"description": function_doc.get("params", {}).get(
|
||||||
|
param_name, param_name
|
||||||
|
),
|
||||||
|
}
|
||||||
|
for param_name, param_annotation in get_type_hints(
|
||||||
|
function
|
||||||
|
).items()
|
||||||
|
if param_name != "return" and param_name != "__user__"
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
name
|
||||||
|
for name, param in inspect.signature(
|
||||||
|
function
|
||||||
|
).parameters.items()
|
||||||
|
if param.default is param.empty
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return specs
|
||||||
@@ -28,19 +28,6 @@ describe('Settings', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
context('Connections', () => {
|
|
||||||
it('user can open the Connections modal and hit save', () => {
|
|
||||||
cy.get('button').contains('Connections').click();
|
|
||||||
cy.get('button').contains('Save').click();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
context('Models', () => {
|
|
||||||
it('user can open the Models modal', () => {
|
|
||||||
cy.get('button').contains('Models').click();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
context('Interface', () => {
|
context('Interface', () => {
|
||||||
it('user can open the Interface modal and hit save', () => {
|
it('user can open the Interface modal and hit save', () => {
|
||||||
cy.get('button').contains('Interface').click();
|
cy.get('button').contains('Interface').click();
|
||||||
@@ -55,14 +42,6 @@ describe('Settings', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
context('Images', () => {
|
|
||||||
it('user can open the Images modal and hit save', () => {
|
|
||||||
cy.get('button').contains('Images').click();
|
|
||||||
// Currently fails because the backend requires a valid URL
|
|
||||||
// cy.get('button').contains('Save').click();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
context('Chats', () => {
|
context('Chats', () => {
|
||||||
it('user can open the Chats modal', () => {
|
it('user can open the Chats modal', () => {
|
||||||
cy.get('button').contains('Chats').click();
|
cy.get('button').contains('Chats').click();
|
||||||
|
|||||||
Generated
+196
-9
@@ -1,17 +1,21 @@
|
|||||||
{
|
{
|
||||||
"name": "open-webui",
|
"name": "open-webui",
|
||||||
"version": "0.3.0",
|
"version": "0.3.3",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "open-webui",
|
"name": "open-webui",
|
||||||
"version": "0.3.0",
|
"version": "0.3.3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@codemirror/lang-javascript": "^6.2.2",
|
||||||
|
"@codemirror/lang-python": "^6.1.6",
|
||||||
|
"@codemirror/theme-one-dark": "^6.1.2",
|
||||||
"@pyscript/core": "^0.4.32",
|
"@pyscript/core": "^0.4.32",
|
||||||
"@sveltejs/adapter-node": "^1.3.1",
|
"@sveltejs/adapter-node": "^1.3.1",
|
||||||
"async": "^3.2.5",
|
"async": "^3.2.5",
|
||||||
"bits-ui": "^0.19.7",
|
"bits-ui": "^0.19.7",
|
||||||
|
"codemirror": "^6.0.1",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
"eventsource-parser": "^1.1.2",
|
"eventsource-parser": "^1.1.2",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
@@ -108,6 +112,119 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz",
|
||||||
"integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A=="
|
"integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A=="
|
||||||
},
|
},
|
||||||
|
"node_modules/@codemirror/autocomplete": {
|
||||||
|
"version": "6.16.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.16.2.tgz",
|
||||||
|
"integrity": "sha512-MjfDrHy0gHKlPWsvSsikhO1+BOh+eBHNgfH1OXs1+DAf30IonQldgMM3kxLDTG9ktE7kDLaA1j/l7KMPA4KNfw==",
|
||||||
|
"dependencies": {
|
||||||
|
"@codemirror/language": "^6.0.0",
|
||||||
|
"@codemirror/state": "^6.0.0",
|
||||||
|
"@codemirror/view": "^6.17.0",
|
||||||
|
"@lezer/common": "^1.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@codemirror/language": "^6.0.0",
|
||||||
|
"@codemirror/state": "^6.0.0",
|
||||||
|
"@codemirror/view": "^6.0.0",
|
||||||
|
"@lezer/common": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@codemirror/commands": {
|
||||||
|
"version": "6.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.6.0.tgz",
|
||||||
|
"integrity": "sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==",
|
||||||
|
"dependencies": {
|
||||||
|
"@codemirror/language": "^6.0.0",
|
||||||
|
"@codemirror/state": "^6.4.0",
|
||||||
|
"@codemirror/view": "^6.27.0",
|
||||||
|
"@lezer/common": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@codemirror/lang-javascript": {
|
||||||
|
"version": "6.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz",
|
||||||
|
"integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==",
|
||||||
|
"dependencies": {
|
||||||
|
"@codemirror/autocomplete": "^6.0.0",
|
||||||
|
"@codemirror/language": "^6.6.0",
|
||||||
|
"@codemirror/lint": "^6.0.0",
|
||||||
|
"@codemirror/state": "^6.0.0",
|
||||||
|
"@codemirror/view": "^6.17.0",
|
||||||
|
"@lezer/common": "^1.0.0",
|
||||||
|
"@lezer/javascript": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@codemirror/lang-python": {
|
||||||
|
"version": "6.1.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.1.6.tgz",
|
||||||
|
"integrity": "sha512-ai+01WfZhWqM92UqjnvorkxosZ2aq2u28kHvr+N3gu012XqY2CThD67JPMHnGceRfXPDBmn1HnyqowdpF57bNg==",
|
||||||
|
"dependencies": {
|
||||||
|
"@codemirror/autocomplete": "^6.3.2",
|
||||||
|
"@codemirror/language": "^6.8.0",
|
||||||
|
"@codemirror/state": "^6.0.0",
|
||||||
|
"@lezer/common": "^1.2.1",
|
||||||
|
"@lezer/python": "^1.1.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@codemirror/language": {
|
||||||
|
"version": "6.10.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.2.tgz",
|
||||||
|
"integrity": "sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@codemirror/state": "^6.0.0",
|
||||||
|
"@codemirror/view": "^6.23.0",
|
||||||
|
"@lezer/common": "^1.1.0",
|
||||||
|
"@lezer/highlight": "^1.0.0",
|
||||||
|
"@lezer/lr": "^1.0.0",
|
||||||
|
"style-mod": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@codemirror/lint": {
|
||||||
|
"version": "6.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.0.tgz",
|
||||||
|
"integrity": "sha512-lsFofvaw0lnPRJlQylNsC4IRt/1lI4OD/yYslrSGVndOJfStc58v+8p9dgGiD90ktOfL7OhBWns1ZETYgz0EJA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@codemirror/state": "^6.0.0",
|
||||||
|
"@codemirror/view": "^6.0.0",
|
||||||
|
"crelt": "^1.0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@codemirror/search": {
|
||||||
|
"version": "6.5.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz",
|
||||||
|
"integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"@codemirror/state": "^6.0.0",
|
||||||
|
"@codemirror/view": "^6.0.0",
|
||||||
|
"crelt": "^1.0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@codemirror/state": {
|
||||||
|
"version": "6.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz",
|
||||||
|
"integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A=="
|
||||||
|
},
|
||||||
|
"node_modules/@codemirror/theme-one-dark": {
|
||||||
|
"version": "6.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz",
|
||||||
|
"integrity": "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@codemirror/language": "^6.0.0",
|
||||||
|
"@codemirror/state": "^6.0.0",
|
||||||
|
"@codemirror/view": "^6.0.0",
|
||||||
|
"@lezer/highlight": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@codemirror/view": {
|
||||||
|
"version": "6.28.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.28.0.tgz",
|
||||||
|
"integrity": "sha512-fo7CelaUDKWIyemw4b+J57cWuRkOu4SWCCPfNDkPvfWkGjM9D5racHQXr4EQeYCD6zEBIBxGCeaKkQo+ysl0gA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@codemirror/state": "^6.4.0",
|
||||||
|
"style-mod": "^4.1.0",
|
||||||
|
"w3c-keyname": "^2.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@colors/colors": {
|
"node_modules/@colors/colors": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
|
||||||
@@ -825,6 +942,47 @@
|
|||||||
"@jridgewell/sourcemap-codec": "^1.4.14"
|
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@lezer/common": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz",
|
||||||
|
"integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ=="
|
||||||
|
},
|
||||||
|
"node_modules/@lezer/highlight": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@lezer/common": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@lezer/javascript": {
|
||||||
|
"version": "1.4.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.16.tgz",
|
||||||
|
"integrity": "sha512-84UXR3N7s11MPQHWgMnjb9571fr19MmXnr5zTv2XX0gHXXUvW3uPJ8GCjKrfTXmSdfktjRK0ayKklw+A13rk4g==",
|
||||||
|
"dependencies": {
|
||||||
|
"@lezer/common": "^1.2.0",
|
||||||
|
"@lezer/highlight": "^1.1.3",
|
||||||
|
"@lezer/lr": "^1.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@lezer/lr": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.1.tgz",
|
||||||
|
"integrity": "sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw==",
|
||||||
|
"dependencies": {
|
||||||
|
"@lezer/common": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@lezer/python": {
|
||||||
|
"version": "1.1.14",
|
||||||
|
"resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.1.14.tgz",
|
||||||
|
"integrity": "sha512-ykDOb2Ti24n76PJsSa4ZoDF0zH12BSw1LGfQXCYJhJyOGiFTfGaX0Du66Ze72R+u/P35U+O6I9m8TFXov1JzsA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@lezer/common": "^1.2.0",
|
||||||
|
"@lezer/highlight": "^1.0.0",
|
||||||
|
"@lezer/lr": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@melt-ui/svelte": {
|
"node_modules/@melt-ui/svelte": {
|
||||||
"version": "0.76.0",
|
"version": "0.76.0",
|
||||||
"resolved": "https://registry.npmjs.org/@melt-ui/svelte/-/svelte-0.76.0.tgz",
|
"resolved": "https://registry.npmjs.org/@melt-ui/svelte/-/svelte-0.76.0.tgz",
|
||||||
@@ -2224,12 +2382,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/braces": {
|
"node_modules/braces": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
|
||||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fill-range": "^7.0.1"
|
"fill-range": "^7.1.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
@@ -2769,6 +2927,20 @@
|
|||||||
"plain-tag": "^0.1.3"
|
"plain-tag": "^0.1.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/codemirror": {
|
||||||
|
"version": "6.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz",
|
||||||
|
"integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",
|
||||||
|
"dependencies": {
|
||||||
|
"@codemirror/autocomplete": "^6.0.0",
|
||||||
|
"@codemirror/commands": "^6.0.0",
|
||||||
|
"@codemirror/language": "^6.0.0",
|
||||||
|
"@codemirror/lint": "^6.0.0",
|
||||||
|
"@codemirror/search": "^6.0.0",
|
||||||
|
"@codemirror/state": "^6.0.0",
|
||||||
|
"@codemirror/view": "^6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/coincident": {
|
"node_modules/coincident": {
|
||||||
"version": "1.2.3",
|
"version": "1.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/coincident/-/coincident-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/coincident/-/coincident-1.2.3.tgz",
|
||||||
@@ -2891,6 +3063,11 @@
|
|||||||
"layout-base": "^1.0.0"
|
"layout-base": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/crelt": {
|
||||||
|
"version": "1.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
|
||||||
|
"integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="
|
||||||
|
},
|
||||||
"node_modules/cross-spawn": {
|
"node_modules/cross-spawn": {
|
||||||
"version": "7.0.3",
|
"version": "7.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||||
@@ -4429,9 +4606,9 @@
|
|||||||
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
|
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
|
||||||
},
|
},
|
||||||
"node_modules/fill-range": {
|
"node_modules/fill-range": {
|
||||||
"version": "7.0.1",
|
"version": "7.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
|
||||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"to-regex-range": "^5.0.1"
|
"to-regex-range": "^5.0.1"
|
||||||
@@ -8278,6 +8455,11 @@
|
|||||||
"url": "https://github.com/sponsors/antfu"
|
"url": "https://github.com/sponsors/antfu"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/style-mod": {
|
||||||
|
"version": "4.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz",
|
||||||
|
"integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw=="
|
||||||
|
},
|
||||||
"node_modules/stylis": {
|
"node_modules/stylis": {
|
||||||
"version": "4.3.2",
|
"version": "4.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz",
|
||||||
@@ -10022,6 +10204,11 @@
|
|||||||
"he": "^1.2.0"
|
"he": "^1.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/w3c-keyname": {
|
||||||
|
"version": "2.2.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
|
||||||
|
"integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
|
||||||
|
},
|
||||||
"node_modules/walk-sync": {
|
"node_modules/walk-sync": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
|
||||||
|
|||||||
+6
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "open-webui",
|
"name": "open-webui",
|
||||||
"version": "0.3.0",
|
"version": "0.3.3",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "npm run pyodide:fetch && vite dev --host",
|
"dev": "npm run pyodide:fetch && vite dev --host",
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
"format:backend": "black . --exclude \".venv/|/venv/\"",
|
"format:backend": "black . --exclude \".venv/|/venv/\"",
|
||||||
"i18n:parse": "i18next --config i18next-parser.config.ts && prettier --write \"src/lib/i18n/**/*.{js,json}\"",
|
"i18n:parse": "i18next --config i18next-parser.config.ts && prettier --write \"src/lib/i18n/**/*.{js,json}\"",
|
||||||
"cy:open": "cypress open",
|
"cy:open": "cypress open",
|
||||||
"test:frontend": "vitest",
|
"test:frontend": "vitest --passWithNoTests",
|
||||||
"pyodide:fetch": "node scripts/prepare-pyodide.js"
|
"pyodide:fetch": "node scripts/prepare-pyodide.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -48,10 +48,14 @@
|
|||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@codemirror/lang-javascript": "^6.2.2",
|
||||||
|
"@codemirror/lang-python": "^6.1.6",
|
||||||
|
"@codemirror/theme-one-dark": "^6.1.2",
|
||||||
"@pyscript/core": "^0.4.32",
|
"@pyscript/core": "^0.4.32",
|
||||||
"@sveltejs/adapter-node": "^1.3.1",
|
"@sveltejs/adapter-node": "^1.3.1",
|
||||||
"async": "^3.2.5",
|
"async": "^3.2.5",
|
||||||
"bits-ui": "^0.19.7",
|
"bits-ui": "^0.19.7",
|
||||||
|
"codemirror": "^6.0.1",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
"eventsource-parser": "^1.1.2",
|
"eventsource-parser": "^1.1.2",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
|
|||||||
+4
-2
@@ -26,8 +26,6 @@ dependencies = [
|
|||||||
"PyMySQL==1.1.0",
|
"PyMySQL==1.1.0",
|
||||||
"bcrypt==4.1.3",
|
"bcrypt==4.1.3",
|
||||||
|
|
||||||
"litellm[proxy]==1.37.20",
|
|
||||||
|
|
||||||
"boto3==1.34.110",
|
"boto3==1.34.110",
|
||||||
|
|
||||||
"argon2-cffi==23.1.0",
|
"argon2-cffi==23.1.0",
|
||||||
@@ -66,6 +64,10 @@ dependencies = [
|
|||||||
"langfuse==2.33.0",
|
"langfuse==2.33.0",
|
||||||
"youtube-transcript-api==0.6.2",
|
"youtube-transcript-api==0.6.2",
|
||||||
"pytube==15.0.0",
|
"pytube==15.0.0",
|
||||||
|
"extract_msg",
|
||||||
|
"pydub",
|
||||||
|
"duckduckgo-search~=6.1.5"
|
||||||
|
|
||||||
]
|
]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">= 3.11, < 3.12.0a1"
|
requires-python = ">= 3.11, < 3.12.0a1"
|
||||||
|
|||||||
+40
-48
@@ -12,7 +12,6 @@
|
|||||||
aiohttp==3.9.5
|
aiohttp==3.9.5
|
||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-community
|
# via langchain-community
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
aiosignal==1.3.1
|
aiosignal==1.3.1
|
||||||
# via aiohttp
|
# via aiohttp
|
||||||
@@ -20,11 +19,9 @@ annotated-types==0.6.0
|
|||||||
# via pydantic
|
# via pydantic
|
||||||
anyio==4.3.0
|
anyio==4.3.0
|
||||||
# via httpx
|
# via httpx
|
||||||
# via openai
|
|
||||||
# via starlette
|
# via starlette
|
||||||
# via watchfiles
|
# via watchfiles
|
||||||
apscheduler==3.10.4
|
apscheduler==3.10.4
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
argon2-cffi==23.1.0
|
argon2-cffi==23.1.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
@@ -38,7 +35,6 @@ av==11.0.0
|
|||||||
# via faster-whisper
|
# via faster-whisper
|
||||||
backoff==2.2.1
|
backoff==2.2.1
|
||||||
# via langfuse
|
# via langfuse
|
||||||
# via litellm
|
|
||||||
# via posthog
|
# via posthog
|
||||||
# via unstructured
|
# via unstructured
|
||||||
bcrypt==4.1.3
|
bcrypt==4.1.3
|
||||||
@@ -46,6 +42,7 @@ bcrypt==4.1.3
|
|||||||
# via open-webui
|
# via open-webui
|
||||||
# via passlib
|
# via passlib
|
||||||
beautifulsoup4==4.12.3
|
beautifulsoup4==4.12.3
|
||||||
|
# via extract-msg
|
||||||
# via unstructured
|
# via unstructured
|
||||||
bidict==0.23.1
|
bidict==0.23.1
|
||||||
# via python-socketio
|
# via python-socketio
|
||||||
@@ -83,17 +80,20 @@ chromadb==0.5.0
|
|||||||
# via open-webui
|
# via open-webui
|
||||||
click==8.1.7
|
click==8.1.7
|
||||||
# via black
|
# via black
|
||||||
|
# via duckduckgo-search
|
||||||
# via flask
|
# via flask
|
||||||
# via litellm
|
|
||||||
# via nltk
|
# via nltk
|
||||||
# via peewee-migrate
|
# via peewee-migrate
|
||||||
# via rq
|
|
||||||
# via typer
|
# via typer
|
||||||
# via uvicorn
|
# via uvicorn
|
||||||
|
colorclass==2.2.2
|
||||||
|
# via oletools
|
||||||
coloredlogs==15.0.1
|
coloredlogs==15.0.1
|
||||||
# via onnxruntime
|
# via onnxruntime
|
||||||
|
compressed-rtf==1.0.6
|
||||||
|
# via extract-msg
|
||||||
cryptography==42.0.7
|
cryptography==42.0.7
|
||||||
# via litellm
|
# via msoffcrypto-tool
|
||||||
# via pyjwt
|
# via pyjwt
|
||||||
ctranslate2==4.2.1
|
ctranslate2==4.2.1
|
||||||
# via faster-whisper
|
# via faster-whisper
|
||||||
@@ -109,33 +109,34 @@ defusedxml==0.7.1
|
|||||||
deprecated==1.2.14
|
deprecated==1.2.14
|
||||||
# via opentelemetry-api
|
# via opentelemetry-api
|
||||||
# via opentelemetry-exporter-otlp-proto-grpc
|
# via opentelemetry-exporter-otlp-proto-grpc
|
||||||
distro==1.9.0
|
|
||||||
# via openai
|
|
||||||
dnspython==2.6.1
|
dnspython==2.6.1
|
||||||
# via email-validator
|
# via email-validator
|
||||||
docx2txt==0.8
|
docx2txt==0.8
|
||||||
# via open-webui
|
# via open-webui
|
||||||
|
duckduckgo-search==6.1.5
|
||||||
|
# via open-webui
|
||||||
|
easygui==0.98.3
|
||||||
|
# via oletools
|
||||||
|
ebcdic==1.1.1
|
||||||
|
# via extract-msg
|
||||||
ecdsa==0.19.0
|
ecdsa==0.19.0
|
||||||
# via python-jose
|
# via python-jose
|
||||||
email-validator==2.1.1
|
email-validator==2.1.1
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via pydantic
|
|
||||||
emoji==2.11.1
|
emoji==2.11.1
|
||||||
# via unstructured
|
# via unstructured
|
||||||
et-xmlfile==1.1.0
|
et-xmlfile==1.1.0
|
||||||
# via openpyxl
|
# via openpyxl
|
||||||
|
extract-msg==0.48.5
|
||||||
|
# via open-webui
|
||||||
fake-useragent==1.5.1
|
fake-useragent==1.5.1
|
||||||
# via open-webui
|
# via open-webui
|
||||||
fastapi==0.111.0
|
fastapi==0.111.0
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via fastapi-sso
|
|
||||||
# via langchain-chroma
|
# via langchain-chroma
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
fastapi-cli==0.0.4
|
fastapi-cli==0.0.4
|
||||||
# via fastapi
|
# via fastapi
|
||||||
fastapi-sso==0.10.0
|
|
||||||
# via litellm
|
|
||||||
faster-whisper==1.0.2
|
faster-whisper==1.0.2
|
||||||
# via open-webui
|
# via open-webui
|
||||||
filelock==3.14.0
|
filelock==3.14.0
|
||||||
@@ -191,8 +192,6 @@ grpcio==1.63.0
|
|||||||
# via opentelemetry-exporter-otlp-proto-grpc
|
# via opentelemetry-exporter-otlp-proto-grpc
|
||||||
grpcio-status==1.62.2
|
grpcio-status==1.62.2
|
||||||
# via google-api-core
|
# via google-api-core
|
||||||
gunicorn==22.0.0
|
|
||||||
# via litellm
|
|
||||||
h11==0.14.0
|
h11==0.14.0
|
||||||
# via httpcore
|
# via httpcore
|
||||||
# via uvicorn
|
# via uvicorn
|
||||||
@@ -206,9 +205,7 @@ httptools==0.6.1
|
|||||||
# via uvicorn
|
# via uvicorn
|
||||||
httpx==0.27.0
|
httpx==0.27.0
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via fastapi-sso
|
|
||||||
# via langfuse
|
# via langfuse
|
||||||
# via openai
|
|
||||||
huggingface-hub==0.23.0
|
huggingface-hub==0.23.0
|
||||||
# via faster-whisper
|
# via faster-whisper
|
||||||
# via sentence-transformers
|
# via sentence-transformers
|
||||||
@@ -225,7 +222,6 @@ idna==3.7
|
|||||||
# via unstructured-client
|
# via unstructured-client
|
||||||
# via yarl
|
# via yarl
|
||||||
importlib-metadata==7.0.0
|
importlib-metadata==7.0.0
|
||||||
# via litellm
|
|
||||||
# via opentelemetry-api
|
# via opentelemetry-api
|
||||||
importlib-resources==6.4.0
|
importlib-resources==6.4.0
|
||||||
# via chromadb
|
# via chromadb
|
||||||
@@ -234,7 +230,6 @@ itsdangerous==2.2.0
|
|||||||
jinja2==3.1.4
|
jinja2==3.1.4
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via flask
|
# via flask
|
||||||
# via litellm
|
|
||||||
# via torch
|
# via torch
|
||||||
jmespath==1.0.1
|
jmespath==1.0.1
|
||||||
# via boto3
|
# via boto3
|
||||||
@@ -272,8 +267,8 @@ langsmith==0.1.57
|
|||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-community
|
# via langchain-community
|
||||||
# via langchain-core
|
# via langchain-core
|
||||||
litellm==1.37.20
|
lark==1.1.8
|
||||||
# via open-webui
|
# via rtfde
|
||||||
lxml==5.2.2
|
lxml==5.2.2
|
||||||
# via unstructured
|
# via unstructured
|
||||||
markdown==3.6
|
markdown==3.6
|
||||||
@@ -294,6 +289,8 @@ monotonic==1.6
|
|||||||
# via posthog
|
# via posthog
|
||||||
mpmath==1.3.0
|
mpmath==1.3.0
|
||||||
# via sympy
|
# via sympy
|
||||||
|
msoffcrypto-tool==5.4.1
|
||||||
|
# via oletools
|
||||||
multidict==6.0.5
|
multidict==6.0.5
|
||||||
# via aiohttp
|
# via aiohttp
|
||||||
# via yarl
|
# via yarl
|
||||||
@@ -325,15 +322,19 @@ numpy==1.26.4
|
|||||||
# via transformers
|
# via transformers
|
||||||
# via unstructured
|
# via unstructured
|
||||||
oauthlib==3.2.2
|
oauthlib==3.2.2
|
||||||
# via fastapi-sso
|
|
||||||
# via kubernetes
|
# via kubernetes
|
||||||
# via requests-oauthlib
|
# via requests-oauthlib
|
||||||
|
olefile==0.47
|
||||||
|
# via extract-msg
|
||||||
|
# via msoffcrypto-tool
|
||||||
|
# via oletools
|
||||||
|
oletools==0.60.1
|
||||||
|
# via pcodedmp
|
||||||
|
# via rtfde
|
||||||
onnxruntime==1.17.3
|
onnxruntime==1.17.3
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via faster-whisper
|
# via faster-whisper
|
||||||
# via rapidocr-onnxruntime
|
# via rapidocr-onnxruntime
|
||||||
openai==1.28.1
|
|
||||||
# via litellm
|
|
||||||
opencv-python==4.9.0.80
|
opencv-python==4.9.0.80
|
||||||
# via rapidocr-onnxruntime
|
# via rapidocr-onnxruntime
|
||||||
opencv-python-headless==4.9.0.80
|
opencv-python-headless==4.9.0.80
|
||||||
@@ -375,15 +376,14 @@ ordered-set==4.1.0
|
|||||||
# via deepdiff
|
# via deepdiff
|
||||||
orjson==3.10.3
|
orjson==3.10.3
|
||||||
# via chromadb
|
# via chromadb
|
||||||
|
# via duckduckgo-search
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via langsmith
|
# via langsmith
|
||||||
# via litellm
|
|
||||||
overrides==7.7.0
|
overrides==7.7.0
|
||||||
# via chromadb
|
# via chromadb
|
||||||
packaging==23.2
|
packaging==23.2
|
||||||
# via black
|
# via black
|
||||||
# via build
|
# via build
|
||||||
# via gunicorn
|
|
||||||
# via huggingface-hub
|
# via huggingface-hub
|
||||||
# via langchain-core
|
# via langchain-core
|
||||||
# via langfuse
|
# via langfuse
|
||||||
@@ -397,6 +397,8 @@ passlib==1.7.4
|
|||||||
# via open-webui
|
# via open-webui
|
||||||
pathspec==0.12.1
|
pathspec==0.12.1
|
||||||
# via black
|
# via black
|
||||||
|
pcodedmp==1.2.6
|
||||||
|
# via oletools
|
||||||
peewee==3.17.5
|
peewee==3.17.5
|
||||||
# via open-webui
|
# via open-webui
|
||||||
# via peewee-migrate
|
# via peewee-migrate
|
||||||
@@ -437,27 +439,27 @@ pycparser==2.22
|
|||||||
pydantic==2.7.1
|
pydantic==2.7.1
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via fastapi-sso
|
|
||||||
# via google-generativeai
|
# via google-generativeai
|
||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-core
|
# via langchain-core
|
||||||
# via langfuse
|
# via langfuse
|
||||||
# via langsmith
|
# via langsmith
|
||||||
# via open-webui
|
# via open-webui
|
||||||
# via openai
|
|
||||||
pydantic-core==2.18.2
|
pydantic-core==2.18.2
|
||||||
# via pydantic
|
# via pydantic
|
||||||
|
pydub==0.25.1
|
||||||
|
# via open-webui
|
||||||
pygments==2.18.0
|
pygments==2.18.0
|
||||||
# via rich
|
# via rich
|
||||||
pyjwt==2.8.0
|
pyjwt==2.8.0
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
pymysql==1.1.0
|
pymysql==1.1.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
pypandoc==1.13
|
pypandoc==1.13
|
||||||
# via open-webui
|
# via open-webui
|
||||||
pyparsing==3.1.2
|
pyparsing==2.4.7
|
||||||
# via httplib2
|
# via httplib2
|
||||||
|
# via oletools
|
||||||
pypdf==4.2.0
|
pypdf==4.2.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
# via unstructured-client
|
# via unstructured-client
|
||||||
@@ -465,6 +467,8 @@ pypika==0.48.9
|
|||||||
# via chromadb
|
# via chromadb
|
||||||
pyproject-hooks==1.1.0
|
pyproject-hooks==1.1.0
|
||||||
# via build
|
# via build
|
||||||
|
pyreqwest-impersonate==0.4.7
|
||||||
|
# via duckduckgo-search
|
||||||
python-dateutil==2.9.0.post0
|
python-dateutil==2.9.0.post0
|
||||||
# via botocore
|
# via botocore
|
||||||
# via kubernetes
|
# via kubernetes
|
||||||
@@ -472,7 +476,6 @@ python-dateutil==2.9.0.post0
|
|||||||
# via posthog
|
# via posthog
|
||||||
# via unstructured-client
|
# via unstructured-client
|
||||||
python-dotenv==1.0.1
|
python-dotenv==1.0.1
|
||||||
# via litellm
|
|
||||||
# via uvicorn
|
# via uvicorn
|
||||||
python-engineio==4.9.0
|
python-engineio==4.9.0
|
||||||
# via python-socketio
|
# via python-socketio
|
||||||
@@ -484,7 +487,6 @@ python-magic==0.4.27
|
|||||||
# via unstructured
|
# via unstructured
|
||||||
python-multipart==0.0.9
|
python-multipart==0.0.9
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
python-socketio==5.11.2
|
python-socketio==5.11.2
|
||||||
# via open-webui
|
# via open-webui
|
||||||
@@ -503,7 +505,6 @@ pyyaml==6.0.1
|
|||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-community
|
# via langchain-community
|
||||||
# via langchain-core
|
# via langchain-core
|
||||||
# via litellm
|
|
||||||
# via rapidocr-onnxruntime
|
# via rapidocr-onnxruntime
|
||||||
# via transformers
|
# via transformers
|
||||||
# via uvicorn
|
# via uvicorn
|
||||||
@@ -513,11 +514,10 @@ rapidfuzz==3.9.0
|
|||||||
# via unstructured
|
# via unstructured
|
||||||
rapidocr-onnxruntime==1.3.22
|
rapidocr-onnxruntime==1.3.22
|
||||||
# via open-webui
|
# via open-webui
|
||||||
redis==5.0.4
|
red-black-tree-mod==1.20
|
||||||
# via rq
|
# via extract-msg
|
||||||
regex==2024.5.10
|
regex==2024.5.10
|
||||||
# via nltk
|
# via nltk
|
||||||
# via tiktoken
|
|
||||||
# via transformers
|
# via transformers
|
||||||
requests==2.32.2
|
requests==2.32.2
|
||||||
# via chromadb
|
# via chromadb
|
||||||
@@ -527,11 +527,9 @@ requests==2.32.2
|
|||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-community
|
# via langchain-community
|
||||||
# via langsmith
|
# via langsmith
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
# via posthog
|
# via posthog
|
||||||
# via requests-oauthlib
|
# via requests-oauthlib
|
||||||
# via tiktoken
|
|
||||||
# via transformers
|
# via transformers
|
||||||
# via unstructured
|
# via unstructured
|
||||||
# via unstructured-client
|
# via unstructured-client
|
||||||
@@ -540,11 +538,11 @@ requests-oauthlib==2.0.0
|
|||||||
# via kubernetes
|
# via kubernetes
|
||||||
rich==13.7.1
|
rich==13.7.1
|
||||||
# via typer
|
# via typer
|
||||||
rq==1.16.2
|
|
||||||
# via litellm
|
|
||||||
rsa==4.9
|
rsa==4.9
|
||||||
# via google-auth
|
# via google-auth
|
||||||
# via python-jose
|
# via python-jose
|
||||||
|
rtfde==0.1.1
|
||||||
|
# via extract-msg
|
||||||
s3transfer==0.10.1
|
s3transfer==0.10.1
|
||||||
# via boto3
|
# via boto3
|
||||||
safetensors==0.4.3
|
safetensors==0.4.3
|
||||||
@@ -577,7 +575,6 @@ six==1.16.0
|
|||||||
sniffio==1.3.1
|
sniffio==1.3.1
|
||||||
# via anyio
|
# via anyio
|
||||||
# via httpx
|
# via httpx
|
||||||
# via openai
|
|
||||||
soupsieve==2.5
|
soupsieve==2.5
|
||||||
# via beautifulsoup4
|
# via beautifulsoup4
|
||||||
sqlalchemy==2.0.30
|
sqlalchemy==2.0.30
|
||||||
@@ -597,12 +594,9 @@ tenacity==8.3.0
|
|||||||
# via langchain-core
|
# via langchain-core
|
||||||
threadpoolctl==3.5.0
|
threadpoolctl==3.5.0
|
||||||
# via scikit-learn
|
# via scikit-learn
|
||||||
tiktoken==0.6.0
|
|
||||||
# via litellm
|
|
||||||
tokenizers==0.15.2
|
tokenizers==0.15.2
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via faster-whisper
|
# via faster-whisper
|
||||||
# via litellm
|
|
||||||
# via transformers
|
# via transformers
|
||||||
torch==2.3.0
|
torch==2.3.0
|
||||||
# via sentence-transformers
|
# via sentence-transformers
|
||||||
@@ -611,7 +605,6 @@ tqdm==4.66.4
|
|||||||
# via google-generativeai
|
# via google-generativeai
|
||||||
# via huggingface-hub
|
# via huggingface-hub
|
||||||
# via nltk
|
# via nltk
|
||||||
# via openai
|
|
||||||
# via sentence-transformers
|
# via sentence-transformers
|
||||||
# via transformers
|
# via transformers
|
||||||
transformers==4.39.3
|
transformers==4.39.3
|
||||||
@@ -624,7 +617,6 @@ typing-extensions==4.11.0
|
|||||||
# via fastapi
|
# via fastapi
|
||||||
# via google-generativeai
|
# via google-generativeai
|
||||||
# via huggingface-hub
|
# via huggingface-hub
|
||||||
# via openai
|
|
||||||
# via opentelemetry-sdk
|
# via opentelemetry-sdk
|
||||||
# via pydantic
|
# via pydantic
|
||||||
# via pydantic-core
|
# via pydantic-core
|
||||||
@@ -641,6 +633,7 @@ tzdata==2024.1
|
|||||||
# via pandas
|
# via pandas
|
||||||
tzlocal==5.2
|
tzlocal==5.2
|
||||||
# via apscheduler
|
# via apscheduler
|
||||||
|
# via extract-msg
|
||||||
ujson==5.10.0
|
ujson==5.10.0
|
||||||
# via fastapi
|
# via fastapi
|
||||||
unstructured==0.14.0
|
unstructured==0.14.0
|
||||||
@@ -657,7 +650,6 @@ urllib3==2.2.1
|
|||||||
uvicorn==0.22.0
|
uvicorn==0.22.0
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
uvloop==0.19.0
|
uvloop==0.19.0
|
||||||
# via uvicorn
|
# via uvicorn
|
||||||
|
|||||||
+40
-48
@@ -12,7 +12,6 @@
|
|||||||
aiohttp==3.9.5
|
aiohttp==3.9.5
|
||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-community
|
# via langchain-community
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
aiosignal==1.3.1
|
aiosignal==1.3.1
|
||||||
# via aiohttp
|
# via aiohttp
|
||||||
@@ -20,11 +19,9 @@ annotated-types==0.6.0
|
|||||||
# via pydantic
|
# via pydantic
|
||||||
anyio==4.3.0
|
anyio==4.3.0
|
||||||
# via httpx
|
# via httpx
|
||||||
# via openai
|
|
||||||
# via starlette
|
# via starlette
|
||||||
# via watchfiles
|
# via watchfiles
|
||||||
apscheduler==3.10.4
|
apscheduler==3.10.4
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
argon2-cffi==23.1.0
|
argon2-cffi==23.1.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
@@ -38,7 +35,6 @@ av==11.0.0
|
|||||||
# via faster-whisper
|
# via faster-whisper
|
||||||
backoff==2.2.1
|
backoff==2.2.1
|
||||||
# via langfuse
|
# via langfuse
|
||||||
# via litellm
|
|
||||||
# via posthog
|
# via posthog
|
||||||
# via unstructured
|
# via unstructured
|
||||||
bcrypt==4.1.3
|
bcrypt==4.1.3
|
||||||
@@ -46,6 +42,7 @@ bcrypt==4.1.3
|
|||||||
# via open-webui
|
# via open-webui
|
||||||
# via passlib
|
# via passlib
|
||||||
beautifulsoup4==4.12.3
|
beautifulsoup4==4.12.3
|
||||||
|
# via extract-msg
|
||||||
# via unstructured
|
# via unstructured
|
||||||
bidict==0.23.1
|
bidict==0.23.1
|
||||||
# via python-socketio
|
# via python-socketio
|
||||||
@@ -83,17 +80,20 @@ chromadb==0.5.0
|
|||||||
# via open-webui
|
# via open-webui
|
||||||
click==8.1.7
|
click==8.1.7
|
||||||
# via black
|
# via black
|
||||||
|
# via duckduckgo-search
|
||||||
# via flask
|
# via flask
|
||||||
# via litellm
|
|
||||||
# via nltk
|
# via nltk
|
||||||
# via peewee-migrate
|
# via peewee-migrate
|
||||||
# via rq
|
|
||||||
# via typer
|
# via typer
|
||||||
# via uvicorn
|
# via uvicorn
|
||||||
|
colorclass==2.2.2
|
||||||
|
# via oletools
|
||||||
coloredlogs==15.0.1
|
coloredlogs==15.0.1
|
||||||
# via onnxruntime
|
# via onnxruntime
|
||||||
|
compressed-rtf==1.0.6
|
||||||
|
# via extract-msg
|
||||||
cryptography==42.0.7
|
cryptography==42.0.7
|
||||||
# via litellm
|
# via msoffcrypto-tool
|
||||||
# via pyjwt
|
# via pyjwt
|
||||||
ctranslate2==4.2.1
|
ctranslate2==4.2.1
|
||||||
# via faster-whisper
|
# via faster-whisper
|
||||||
@@ -109,33 +109,34 @@ defusedxml==0.7.1
|
|||||||
deprecated==1.2.14
|
deprecated==1.2.14
|
||||||
# via opentelemetry-api
|
# via opentelemetry-api
|
||||||
# via opentelemetry-exporter-otlp-proto-grpc
|
# via opentelemetry-exporter-otlp-proto-grpc
|
||||||
distro==1.9.0
|
|
||||||
# via openai
|
|
||||||
dnspython==2.6.1
|
dnspython==2.6.1
|
||||||
# via email-validator
|
# via email-validator
|
||||||
docx2txt==0.8
|
docx2txt==0.8
|
||||||
# via open-webui
|
# via open-webui
|
||||||
|
duckduckgo-search==6.1.5
|
||||||
|
# via open-webui
|
||||||
|
easygui==0.98.3
|
||||||
|
# via oletools
|
||||||
|
ebcdic==1.1.1
|
||||||
|
# via extract-msg
|
||||||
ecdsa==0.19.0
|
ecdsa==0.19.0
|
||||||
# via python-jose
|
# via python-jose
|
||||||
email-validator==2.1.1
|
email-validator==2.1.1
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via pydantic
|
|
||||||
emoji==2.11.1
|
emoji==2.11.1
|
||||||
# via unstructured
|
# via unstructured
|
||||||
et-xmlfile==1.1.0
|
et-xmlfile==1.1.0
|
||||||
# via openpyxl
|
# via openpyxl
|
||||||
|
extract-msg==0.48.5
|
||||||
|
# via open-webui
|
||||||
fake-useragent==1.5.1
|
fake-useragent==1.5.1
|
||||||
# via open-webui
|
# via open-webui
|
||||||
fastapi==0.111.0
|
fastapi==0.111.0
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via fastapi-sso
|
|
||||||
# via langchain-chroma
|
# via langchain-chroma
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
fastapi-cli==0.0.4
|
fastapi-cli==0.0.4
|
||||||
# via fastapi
|
# via fastapi
|
||||||
fastapi-sso==0.10.0
|
|
||||||
# via litellm
|
|
||||||
faster-whisper==1.0.2
|
faster-whisper==1.0.2
|
||||||
# via open-webui
|
# via open-webui
|
||||||
filelock==3.14.0
|
filelock==3.14.0
|
||||||
@@ -191,8 +192,6 @@ grpcio==1.63.0
|
|||||||
# via opentelemetry-exporter-otlp-proto-grpc
|
# via opentelemetry-exporter-otlp-proto-grpc
|
||||||
grpcio-status==1.62.2
|
grpcio-status==1.62.2
|
||||||
# via google-api-core
|
# via google-api-core
|
||||||
gunicorn==22.0.0
|
|
||||||
# via litellm
|
|
||||||
h11==0.14.0
|
h11==0.14.0
|
||||||
# via httpcore
|
# via httpcore
|
||||||
# via uvicorn
|
# via uvicorn
|
||||||
@@ -206,9 +205,7 @@ httptools==0.6.1
|
|||||||
# via uvicorn
|
# via uvicorn
|
||||||
httpx==0.27.0
|
httpx==0.27.0
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via fastapi-sso
|
|
||||||
# via langfuse
|
# via langfuse
|
||||||
# via openai
|
|
||||||
huggingface-hub==0.23.0
|
huggingface-hub==0.23.0
|
||||||
# via faster-whisper
|
# via faster-whisper
|
||||||
# via sentence-transformers
|
# via sentence-transformers
|
||||||
@@ -225,7 +222,6 @@ idna==3.7
|
|||||||
# via unstructured-client
|
# via unstructured-client
|
||||||
# via yarl
|
# via yarl
|
||||||
importlib-metadata==7.0.0
|
importlib-metadata==7.0.0
|
||||||
# via litellm
|
|
||||||
# via opentelemetry-api
|
# via opentelemetry-api
|
||||||
importlib-resources==6.4.0
|
importlib-resources==6.4.0
|
||||||
# via chromadb
|
# via chromadb
|
||||||
@@ -234,7 +230,6 @@ itsdangerous==2.2.0
|
|||||||
jinja2==3.1.4
|
jinja2==3.1.4
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via flask
|
# via flask
|
||||||
# via litellm
|
|
||||||
# via torch
|
# via torch
|
||||||
jmespath==1.0.1
|
jmespath==1.0.1
|
||||||
# via boto3
|
# via boto3
|
||||||
@@ -272,8 +267,8 @@ langsmith==0.1.57
|
|||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-community
|
# via langchain-community
|
||||||
# via langchain-core
|
# via langchain-core
|
||||||
litellm==1.37.20
|
lark==1.1.8
|
||||||
# via open-webui
|
# via rtfde
|
||||||
lxml==5.2.2
|
lxml==5.2.2
|
||||||
# via unstructured
|
# via unstructured
|
||||||
markdown==3.6
|
markdown==3.6
|
||||||
@@ -294,6 +289,8 @@ monotonic==1.6
|
|||||||
# via posthog
|
# via posthog
|
||||||
mpmath==1.3.0
|
mpmath==1.3.0
|
||||||
# via sympy
|
# via sympy
|
||||||
|
msoffcrypto-tool==5.4.1
|
||||||
|
# via oletools
|
||||||
multidict==6.0.5
|
multidict==6.0.5
|
||||||
# via aiohttp
|
# via aiohttp
|
||||||
# via yarl
|
# via yarl
|
||||||
@@ -325,15 +322,19 @@ numpy==1.26.4
|
|||||||
# via transformers
|
# via transformers
|
||||||
# via unstructured
|
# via unstructured
|
||||||
oauthlib==3.2.2
|
oauthlib==3.2.2
|
||||||
# via fastapi-sso
|
|
||||||
# via kubernetes
|
# via kubernetes
|
||||||
# via requests-oauthlib
|
# via requests-oauthlib
|
||||||
|
olefile==0.47
|
||||||
|
# via extract-msg
|
||||||
|
# via msoffcrypto-tool
|
||||||
|
# via oletools
|
||||||
|
oletools==0.60.1
|
||||||
|
# via pcodedmp
|
||||||
|
# via rtfde
|
||||||
onnxruntime==1.17.3
|
onnxruntime==1.17.3
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via faster-whisper
|
# via faster-whisper
|
||||||
# via rapidocr-onnxruntime
|
# via rapidocr-onnxruntime
|
||||||
openai==1.28.1
|
|
||||||
# via litellm
|
|
||||||
opencv-python==4.9.0.80
|
opencv-python==4.9.0.80
|
||||||
# via rapidocr-onnxruntime
|
# via rapidocr-onnxruntime
|
||||||
opencv-python-headless==4.9.0.80
|
opencv-python-headless==4.9.0.80
|
||||||
@@ -375,15 +376,14 @@ ordered-set==4.1.0
|
|||||||
# via deepdiff
|
# via deepdiff
|
||||||
orjson==3.10.3
|
orjson==3.10.3
|
||||||
# via chromadb
|
# via chromadb
|
||||||
|
# via duckduckgo-search
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via langsmith
|
# via langsmith
|
||||||
# via litellm
|
|
||||||
overrides==7.7.0
|
overrides==7.7.0
|
||||||
# via chromadb
|
# via chromadb
|
||||||
packaging==23.2
|
packaging==23.2
|
||||||
# via black
|
# via black
|
||||||
# via build
|
# via build
|
||||||
# via gunicorn
|
|
||||||
# via huggingface-hub
|
# via huggingface-hub
|
||||||
# via langchain-core
|
# via langchain-core
|
||||||
# via langfuse
|
# via langfuse
|
||||||
@@ -397,6 +397,8 @@ passlib==1.7.4
|
|||||||
# via open-webui
|
# via open-webui
|
||||||
pathspec==0.12.1
|
pathspec==0.12.1
|
||||||
# via black
|
# via black
|
||||||
|
pcodedmp==1.2.6
|
||||||
|
# via oletools
|
||||||
peewee==3.17.5
|
peewee==3.17.5
|
||||||
# via open-webui
|
# via open-webui
|
||||||
# via peewee-migrate
|
# via peewee-migrate
|
||||||
@@ -437,27 +439,27 @@ pycparser==2.22
|
|||||||
pydantic==2.7.1
|
pydantic==2.7.1
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via fastapi-sso
|
|
||||||
# via google-generativeai
|
# via google-generativeai
|
||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-core
|
# via langchain-core
|
||||||
# via langfuse
|
# via langfuse
|
||||||
# via langsmith
|
# via langsmith
|
||||||
# via open-webui
|
# via open-webui
|
||||||
# via openai
|
|
||||||
pydantic-core==2.18.2
|
pydantic-core==2.18.2
|
||||||
# via pydantic
|
# via pydantic
|
||||||
|
pydub==0.25.1
|
||||||
|
# via open-webui
|
||||||
pygments==2.18.0
|
pygments==2.18.0
|
||||||
# via rich
|
# via rich
|
||||||
pyjwt==2.8.0
|
pyjwt==2.8.0
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
pymysql==1.1.0
|
pymysql==1.1.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
pypandoc==1.13
|
pypandoc==1.13
|
||||||
# via open-webui
|
# via open-webui
|
||||||
pyparsing==3.1.2
|
pyparsing==2.4.7
|
||||||
# via httplib2
|
# via httplib2
|
||||||
|
# via oletools
|
||||||
pypdf==4.2.0
|
pypdf==4.2.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
# via unstructured-client
|
# via unstructured-client
|
||||||
@@ -465,6 +467,8 @@ pypika==0.48.9
|
|||||||
# via chromadb
|
# via chromadb
|
||||||
pyproject-hooks==1.1.0
|
pyproject-hooks==1.1.0
|
||||||
# via build
|
# via build
|
||||||
|
pyreqwest-impersonate==0.4.7
|
||||||
|
# via duckduckgo-search
|
||||||
python-dateutil==2.9.0.post0
|
python-dateutil==2.9.0.post0
|
||||||
# via botocore
|
# via botocore
|
||||||
# via kubernetes
|
# via kubernetes
|
||||||
@@ -472,7 +476,6 @@ python-dateutil==2.9.0.post0
|
|||||||
# via posthog
|
# via posthog
|
||||||
# via unstructured-client
|
# via unstructured-client
|
||||||
python-dotenv==1.0.1
|
python-dotenv==1.0.1
|
||||||
# via litellm
|
|
||||||
# via uvicorn
|
# via uvicorn
|
||||||
python-engineio==4.9.0
|
python-engineio==4.9.0
|
||||||
# via python-socketio
|
# via python-socketio
|
||||||
@@ -484,7 +487,6 @@ python-magic==0.4.27
|
|||||||
# via unstructured
|
# via unstructured
|
||||||
python-multipart==0.0.9
|
python-multipart==0.0.9
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
python-socketio==5.11.2
|
python-socketio==5.11.2
|
||||||
# via open-webui
|
# via open-webui
|
||||||
@@ -503,7 +505,6 @@ pyyaml==6.0.1
|
|||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-community
|
# via langchain-community
|
||||||
# via langchain-core
|
# via langchain-core
|
||||||
# via litellm
|
|
||||||
# via rapidocr-onnxruntime
|
# via rapidocr-onnxruntime
|
||||||
# via transformers
|
# via transformers
|
||||||
# via uvicorn
|
# via uvicorn
|
||||||
@@ -513,11 +514,10 @@ rapidfuzz==3.9.0
|
|||||||
# via unstructured
|
# via unstructured
|
||||||
rapidocr-onnxruntime==1.3.22
|
rapidocr-onnxruntime==1.3.22
|
||||||
# via open-webui
|
# via open-webui
|
||||||
redis==5.0.4
|
red-black-tree-mod==1.20
|
||||||
# via rq
|
# via extract-msg
|
||||||
regex==2024.5.10
|
regex==2024.5.10
|
||||||
# via nltk
|
# via nltk
|
||||||
# via tiktoken
|
|
||||||
# via transformers
|
# via transformers
|
||||||
requests==2.32.2
|
requests==2.32.2
|
||||||
# via chromadb
|
# via chromadb
|
||||||
@@ -527,11 +527,9 @@ requests==2.32.2
|
|||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-community
|
# via langchain-community
|
||||||
# via langsmith
|
# via langsmith
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
# via posthog
|
# via posthog
|
||||||
# via requests-oauthlib
|
# via requests-oauthlib
|
||||||
# via tiktoken
|
|
||||||
# via transformers
|
# via transformers
|
||||||
# via unstructured
|
# via unstructured
|
||||||
# via unstructured-client
|
# via unstructured-client
|
||||||
@@ -540,11 +538,11 @@ requests-oauthlib==2.0.0
|
|||||||
# via kubernetes
|
# via kubernetes
|
||||||
rich==13.7.1
|
rich==13.7.1
|
||||||
# via typer
|
# via typer
|
||||||
rq==1.16.2
|
|
||||||
# via litellm
|
|
||||||
rsa==4.9
|
rsa==4.9
|
||||||
# via google-auth
|
# via google-auth
|
||||||
# via python-jose
|
# via python-jose
|
||||||
|
rtfde==0.1.1
|
||||||
|
# via extract-msg
|
||||||
s3transfer==0.10.1
|
s3transfer==0.10.1
|
||||||
# via boto3
|
# via boto3
|
||||||
safetensors==0.4.3
|
safetensors==0.4.3
|
||||||
@@ -577,7 +575,6 @@ six==1.16.0
|
|||||||
sniffio==1.3.1
|
sniffio==1.3.1
|
||||||
# via anyio
|
# via anyio
|
||||||
# via httpx
|
# via httpx
|
||||||
# via openai
|
|
||||||
soupsieve==2.5
|
soupsieve==2.5
|
||||||
# via beautifulsoup4
|
# via beautifulsoup4
|
||||||
sqlalchemy==2.0.30
|
sqlalchemy==2.0.30
|
||||||
@@ -597,12 +594,9 @@ tenacity==8.3.0
|
|||||||
# via langchain-core
|
# via langchain-core
|
||||||
threadpoolctl==3.5.0
|
threadpoolctl==3.5.0
|
||||||
# via scikit-learn
|
# via scikit-learn
|
||||||
tiktoken==0.6.0
|
|
||||||
# via litellm
|
|
||||||
tokenizers==0.15.2
|
tokenizers==0.15.2
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via faster-whisper
|
# via faster-whisper
|
||||||
# via litellm
|
|
||||||
# via transformers
|
# via transformers
|
||||||
torch==2.3.0
|
torch==2.3.0
|
||||||
# via sentence-transformers
|
# via sentence-transformers
|
||||||
@@ -611,7 +605,6 @@ tqdm==4.66.4
|
|||||||
# via google-generativeai
|
# via google-generativeai
|
||||||
# via huggingface-hub
|
# via huggingface-hub
|
||||||
# via nltk
|
# via nltk
|
||||||
# via openai
|
|
||||||
# via sentence-transformers
|
# via sentence-transformers
|
||||||
# via transformers
|
# via transformers
|
||||||
transformers==4.39.3
|
transformers==4.39.3
|
||||||
@@ -624,7 +617,6 @@ typing-extensions==4.11.0
|
|||||||
# via fastapi
|
# via fastapi
|
||||||
# via google-generativeai
|
# via google-generativeai
|
||||||
# via huggingface-hub
|
# via huggingface-hub
|
||||||
# via openai
|
|
||||||
# via opentelemetry-sdk
|
# via opentelemetry-sdk
|
||||||
# via pydantic
|
# via pydantic
|
||||||
# via pydantic-core
|
# via pydantic-core
|
||||||
@@ -641,6 +633,7 @@ tzdata==2024.1
|
|||||||
# via pandas
|
# via pandas
|
||||||
tzlocal==5.2
|
tzlocal==5.2
|
||||||
# via apscheduler
|
# via apscheduler
|
||||||
|
# via extract-msg
|
||||||
ujson==5.10.0
|
ujson==5.10.0
|
||||||
# via fastapi
|
# via fastapi
|
||||||
unstructured==0.14.0
|
unstructured==0.14.0
|
||||||
@@ -657,7 +650,6 @@ urllib3==2.2.1
|
|||||||
uvicorn==0.22.0
|
uvicorn==0.22.0
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via litellm
|
|
||||||
# via open-webui
|
# via open-webui
|
||||||
uvloop==0.19.0
|
uvloop==0.19.0
|
||||||
# via uvicorn
|
# via uvicorn
|
||||||
|
|||||||
+21
@@ -92,10 +92,18 @@ select {
|
|||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.scrollbar-hidden::-webkit-scrollbar-corner {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.scrollbar-none::-webkit-scrollbar {
|
.scrollbar-none::-webkit-scrollbar {
|
||||||
display: none; /* for Chrome, Safari and Opera */
|
display: none; /* for Chrome, Safari and Opera */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.scrollbar-none::-webkit-scrollbar-corner {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.scrollbar-none {
|
.scrollbar-none {
|
||||||
-ms-overflow-style: none; /* IE and Edge */
|
-ms-overflow-style: none; /* IE and Edge */
|
||||||
scrollbar-width: none; /* Firefox */
|
scrollbar-width: none; /* Firefox */
|
||||||
@@ -111,3 +119,16 @@ input::-webkit-inner-spin-button {
|
|||||||
input[type='number'] {
|
input[type='number'] {
|
||||||
-moz-appearance: textfield; /* Firefox */
|
-moz-appearance: textfield; /* Firefox */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cm-editor {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-scroller {
|
||||||
|
@apply scrollbar-hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-editor.cm-focused {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|||||||
+97
-2
@@ -32,6 +32,9 @@
|
|||||||
} else if (localStorage.theme && localStorage.theme === 'system') {
|
} else if (localStorage.theme && localStorage.theme === 'system') {
|
||||||
systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||||
document.documentElement.classList.add(systemTheme ? 'dark' : 'light');
|
document.documentElement.classList.add(systemTheme ? 'dark' : 'light');
|
||||||
|
} else if (localStorage.theme && localStorage.theme === 'her') {
|
||||||
|
document.documentElement.classList.add('dark');
|
||||||
|
document.documentElement.classList.add('her');
|
||||||
} else {
|
} else {
|
||||||
document.documentElement.classList.add('dark');
|
document.documentElement.classList.add('dark');
|
||||||
}
|
}
|
||||||
@@ -68,17 +71,67 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<img
|
<img
|
||||||
|
id="logo"
|
||||||
style="
|
style="
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 6rem;
|
width: 6rem;
|
||||||
height: 6rem;
|
height: 6rem;
|
||||||
top: 46%;
|
top: 41%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin: -40px 0 0 -40px;
|
margin-left: -3rem;
|
||||||
"
|
"
|
||||||
src="/logo.svg"
|
src="/logo.svg"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<img
|
||||||
|
id="logo-her"
|
||||||
|
style="
|
||||||
|
position: absolute;
|
||||||
|
width: 13rem;
|
||||||
|
height: 13rem;
|
||||||
|
top: 33%;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -6.5rem;
|
||||||
|
"
|
||||||
|
src="/logo.svg"
|
||||||
|
class="animate-pulse-fast"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div
|
||||||
|
id="progress-background"
|
||||||
|
style="
|
||||||
|
position: absolute;
|
||||||
|
top: 58%;
|
||||||
|
left: 50%;
|
||||||
|
|
||||||
|
margin-left: -12rem;
|
||||||
|
|
||||||
|
width: 24rem;
|
||||||
|
height: 0.75rem;
|
||||||
|
border-radius: 9999px;
|
||||||
|
background-color: #fafafa9a;
|
||||||
|
"
|
||||||
|
class="bg-white"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
id="progress-bar"
|
||||||
|
style="
|
||||||
|
position: absolute;
|
||||||
|
top: 58%;
|
||||||
|
left: 50%;
|
||||||
|
|
||||||
|
margin-left: -12rem;
|
||||||
|
|
||||||
|
height: 0.75rem;
|
||||||
|
border-radius: 9999px;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
width: 0rem;
|
||||||
|
"
|
||||||
|
class="bg-white"
|
||||||
|
></div>
|
||||||
|
|
||||||
<!-- <span style="position: absolute; bottom: 32px; left: 50%; margin: -36px 0 0 -36px">
|
<!-- <span style="position: absolute; bottom: 32px; left: 50%; margin: -36px 0 0 -36px">
|
||||||
Footer content
|
Footer content
|
||||||
</span> -->
|
</span> -->
|
||||||
@@ -101,4 +154,46 @@
|
|||||||
html.dark #splash-screen img {
|
html.dark #splash-screen img {
|
||||||
filter: invert(1);
|
filter: invert(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html.her #splash-screen {
|
||||||
|
background: #983724;
|
||||||
|
}
|
||||||
|
|
||||||
|
#logo-her {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#progress-background {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#progress-bar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
html.her #logo {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
html.her #logo-her {
|
||||||
|
display: block;
|
||||||
|
filter: invert(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
html.her #progress-background {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
html.her #progress-bar {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse {
|
||||||
|
50% {
|
||||||
|
opacity: 0.65;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.animate-pulse-fast {
|
||||||
|
animation: pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -0,0 +1,193 @@
|
|||||||
|
import { WEBUI_API_BASE_URL } from '$lib/constants';
|
||||||
|
|
||||||
|
export const createNewTool = async (token: string, tool: object) => {
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
const res = await fetch(`${WEBUI_API_BASE_URL}/tools/create`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
authorization: `Bearer ${token}`
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
...tool
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (!res.ok) throw await res.json();
|
||||||
|
return res.json();
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
error = err.detail;
|
||||||
|
console.log(err);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getTools = async (token: string = '') => {
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
const res = await fetch(`${WEBUI_API_BASE_URL}/tools`, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
authorization: `Bearer ${token}`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (!res.ok) throw await res.json();
|
||||||
|
return res.json();
|
||||||
|
})
|
||||||
|
.then((json) => {
|
||||||
|
return json;
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
error = err.detail;
|
||||||
|
console.log(err);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const exportTools = async (token: string = '') => {
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
const res = await fetch(`${WEBUI_API_BASE_URL}/tools/export`, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
authorization: `Bearer ${token}`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (!res.ok) throw await res.json();
|
||||||
|
return res.json();
|
||||||
|
})
|
||||||
|
.then((json) => {
|
||||||
|
return json;
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
error = err.detail;
|
||||||
|
console.log(err);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getToolById = async (token: string, id: string) => {
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
const res = await fetch(`${WEBUI_API_BASE_URL}/tools/id/${id}`, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
authorization: `Bearer ${token}`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (!res.ok) throw await res.json();
|
||||||
|
return res.json();
|
||||||
|
})
|
||||||
|
.then((json) => {
|
||||||
|
return json;
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
error = err.detail;
|
||||||
|
|
||||||
|
console.log(err);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const updateToolById = async (token: string, id: string, tool: object) => {
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
const res = await fetch(`${WEBUI_API_BASE_URL}/tools/id/${id}/update`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
authorization: `Bearer ${token}`
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
...tool
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (!res.ok) throw await res.json();
|
||||||
|
return res.json();
|
||||||
|
})
|
||||||
|
.then((json) => {
|
||||||
|
return json;
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
error = err.detail;
|
||||||
|
|
||||||
|
console.log(err);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const deleteToolById = async (token: string, id: string) => {
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
const res = await fetch(`${WEBUI_API_BASE_URL}/tools/id/${id}/delete`, {
|
||||||
|
method: 'DELETE',
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
authorization: `Bearer ${token}`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (!res.ok) throw await res.json();
|
||||||
|
return res.json();
|
||||||
|
})
|
||||||
|
.then((json) => {
|
||||||
|
return json;
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
error = err.detail;
|
||||||
|
|
||||||
|
console.log(err);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
};
|
||||||
@@ -22,6 +22,39 @@ export const getGravatarUrl = async (email: string) => {
|
|||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const formatPythonCode = async (code: string) => {
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
const res = await fetch(`${WEBUI_API_BASE_URL}/utils/code/format`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
code: code
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (!res.ok) throw await res.json();
|
||||||
|
return res.json();
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
|
||||||
|
error = err;
|
||||||
|
if (err.detail) {
|
||||||
|
error = err.detail;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
export const downloadChatAsPDF = async (chat: object) => {
|
export const downloadChatAsPDF = async (chat: object) => {
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,15 @@
|
|||||||
export let saveHandler: Function;
|
export let saveHandler: Function;
|
||||||
|
|
||||||
let webConfig = null;
|
let webConfig = null;
|
||||||
let webSearchEngines = ['searxng', 'google_pse', 'brave', 'serpstack', 'serper'];
|
let webSearchEngines = [
|
||||||
|
'searxng',
|
||||||
|
'google_pse',
|
||||||
|
'brave',
|
||||||
|
'serpstack',
|
||||||
|
'serper',
|
||||||
|
'serply',
|
||||||
|
'duckduckgo'
|
||||||
|
];
|
||||||
|
|
||||||
let youtubeLanguage = 'en';
|
let youtubeLanguage = 'en';
|
||||||
let youtubeTranslation = null;
|
let youtubeTranslation = null;
|
||||||
@@ -188,6 +196,24 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{:else if webConfig.search.engine === 'serply'}
|
||||||
|
<div>
|
||||||
|
<div class=" self-center text-xs font-medium mb-1">
|
||||||
|
{$i18n.t('Serply API Key')}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex w-full">
|
||||||
|
<div class="flex-1">
|
||||||
|
<input
|
||||||
|
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
||||||
|
type="text"
|
||||||
|
placeholder={$i18n.t('Enter Serply API Key')}
|
||||||
|
bind:value={webConfig.search.serply_api_key}
|
||||||
|
autocomplete="off"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -24,7 +24,8 @@
|
|||||||
banners,
|
banners,
|
||||||
user,
|
user,
|
||||||
socket,
|
socket,
|
||||||
showCallOverlay
|
showCallOverlay,
|
||||||
|
tools
|
||||||
} from '$lib/stores';
|
} from '$lib/stores';
|
||||||
import {
|
import {
|
||||||
convertMessagesToHistory,
|
convertMessagesToHistory,
|
||||||
@@ -73,6 +74,10 @@
|
|||||||
let selectedModels = [''];
|
let selectedModels = [''];
|
||||||
let atSelectedModel: Model | undefined;
|
let atSelectedModel: Model | undefined;
|
||||||
|
|
||||||
|
let selectedModelIds = [];
|
||||||
|
$: selectedModelIds = atSelectedModel !== undefined ? [atSelectedModel.id] : selectedModels;
|
||||||
|
|
||||||
|
let selectedToolIds = [];
|
||||||
let webSearchEnabled = false;
|
let webSearchEnabled = false;
|
||||||
|
|
||||||
let chat = null;
|
let chat = null;
|
||||||
@@ -327,6 +332,9 @@
|
|||||||
chatTextAreaElement.style.height = '';
|
chatTextAreaElement.style.height = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const _files = JSON.parse(JSON.stringify(files));
|
||||||
|
files = [];
|
||||||
|
|
||||||
prompt = '';
|
prompt = '';
|
||||||
|
|
||||||
// Create user message
|
// Create user message
|
||||||
@@ -338,7 +346,7 @@
|
|||||||
role: 'user',
|
role: 'user',
|
||||||
user: _user ?? undefined,
|
user: _user ?? undefined,
|
||||||
content: userPrompt,
|
content: userPrompt,
|
||||||
files: files.length > 0 ? files : undefined,
|
files: _files.length > 0 ? _files : undefined,
|
||||||
timestamp: Math.floor(Date.now() / 1000), // Unix epoch
|
timestamp: Math.floor(Date.now() / 1000), // Unix epoch
|
||||||
models: selectedModels.filter((m, mIdx) => selectedModels.indexOf(m) === mIdx)
|
models: selectedModels.filter((m, mIdx) => selectedModels.indexOf(m) === mIdx)
|
||||||
};
|
};
|
||||||
@@ -355,32 +363,6 @@
|
|||||||
// Wait until history/message have been updated
|
// Wait until history/message have been updated
|
||||||
await tick();
|
await tick();
|
||||||
|
|
||||||
// Create new chat if only one message in messages
|
|
||||||
if (messages.length == 1) {
|
|
||||||
if ($settings.saveChatHistory ?? true) {
|
|
||||||
chat = await createNewChat(localStorage.token, {
|
|
||||||
id: $chatId,
|
|
||||||
title: $i18n.t('New Chat'),
|
|
||||||
models: selectedModels,
|
|
||||||
system: $settings.system ?? undefined,
|
|
||||||
options: {
|
|
||||||
...($settings.params ?? {})
|
|
||||||
},
|
|
||||||
messages: messages,
|
|
||||||
history: history,
|
|
||||||
tags: [],
|
|
||||||
timestamp: Date.now()
|
|
||||||
});
|
|
||||||
await chats.set(await getChatList(localStorage.token));
|
|
||||||
await chatId.set(chat.id);
|
|
||||||
} else {
|
|
||||||
await chatId.set('local');
|
|
||||||
}
|
|
||||||
await tick();
|
|
||||||
}
|
|
||||||
|
|
||||||
files = [];
|
|
||||||
|
|
||||||
// Send prompt
|
// Send prompt
|
||||||
_responses = await sendPrompt(userPrompt, userMessageId);
|
_responses = await sendPrompt(userPrompt, userMessageId);
|
||||||
}
|
}
|
||||||
@@ -388,17 +370,80 @@
|
|||||||
return _responses;
|
return _responses;
|
||||||
};
|
};
|
||||||
|
|
||||||
const sendPrompt = async (prompt, parentId, modelId = null) => {
|
const sendPrompt = async (prompt, parentId, modelId = null, newChat = true) => {
|
||||||
let _responses = [];
|
let _responses = [];
|
||||||
|
|
||||||
|
// If modelId is provided, use it, else use selected model
|
||||||
|
let selectedModelIds = modelId
|
||||||
|
? [modelId]
|
||||||
|
: atSelectedModel !== undefined
|
||||||
|
? [atSelectedModel.id]
|
||||||
|
: selectedModels;
|
||||||
|
|
||||||
|
// Create response messages for each selected model
|
||||||
|
const responseMessageIds = {};
|
||||||
|
for (const modelId of selectedModelIds) {
|
||||||
|
const model = $models.filter((m) => m.id === modelId).at(0);
|
||||||
|
|
||||||
|
if (model) {
|
||||||
|
let responseMessageId = uuidv4();
|
||||||
|
let responseMessage = {
|
||||||
|
parentId: parentId,
|
||||||
|
id: responseMessageId,
|
||||||
|
childrenIds: [],
|
||||||
|
role: 'assistant',
|
||||||
|
content: '',
|
||||||
|
model: model.id,
|
||||||
|
modelName: model.name ?? model.id,
|
||||||
|
userContext: null,
|
||||||
|
timestamp: Math.floor(Date.now() / 1000) // Unix epoch
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add message to history and Set currentId to messageId
|
||||||
|
history.messages[responseMessageId] = responseMessage;
|
||||||
|
history.currentId = responseMessageId;
|
||||||
|
|
||||||
|
// Append messageId to childrenIds of parent message
|
||||||
|
if (parentId !== null) {
|
||||||
|
history.messages[parentId].childrenIds = [
|
||||||
|
...history.messages[parentId].childrenIds,
|
||||||
|
responseMessageId
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
responseMessageIds[modelId] = responseMessageId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await tick();
|
||||||
|
|
||||||
|
// Create new chat if only one message in messages
|
||||||
|
if (newChat && messages.length == 2) {
|
||||||
|
if ($settings.saveChatHistory ?? true) {
|
||||||
|
chat = await createNewChat(localStorage.token, {
|
||||||
|
id: $chatId,
|
||||||
|
title: $i18n.t('New Chat'),
|
||||||
|
models: selectedModels,
|
||||||
|
system: $settings.system ?? undefined,
|
||||||
|
options: {
|
||||||
|
...($settings.params ?? {})
|
||||||
|
},
|
||||||
|
messages: messages,
|
||||||
|
history: history,
|
||||||
|
tags: [],
|
||||||
|
timestamp: Date.now()
|
||||||
|
});
|
||||||
|
await chats.set(await getChatList(localStorage.token));
|
||||||
|
await chatId.set(chat.id);
|
||||||
|
} else {
|
||||||
|
await chatId.set('local');
|
||||||
|
}
|
||||||
|
await tick();
|
||||||
|
}
|
||||||
|
|
||||||
const _chatId = JSON.parse(JSON.stringify($chatId));
|
const _chatId = JSON.parse(JSON.stringify($chatId));
|
||||||
|
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
(modelId
|
selectedModelIds.map(async (modelId) => {
|
||||||
? [modelId]
|
|
||||||
: atSelectedModel !== undefined
|
|
||||||
? [atSelectedModel.id]
|
|
||||||
: selectedModels
|
|
||||||
).map(async (modelId) => {
|
|
||||||
console.log('modelId', modelId);
|
console.log('modelId', modelId);
|
||||||
const model = $models.filter((m) => m.id === modelId).at(0);
|
const model = $models.filter((m) => m.id === modelId).at(0);
|
||||||
|
|
||||||
@@ -416,33 +461,8 @@
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create response message
|
let responseMessageId = responseMessageIds[modelId];
|
||||||
let responseMessageId = uuidv4();
|
let responseMessage = history.messages[responseMessageId];
|
||||||
let responseMessage = {
|
|
||||||
parentId: parentId,
|
|
||||||
id: responseMessageId,
|
|
||||||
childrenIds: [],
|
|
||||||
role: 'assistant',
|
|
||||||
content: '',
|
|
||||||
model: model.id,
|
|
||||||
modelName: model.name ?? model.id,
|
|
||||||
userContext: null,
|
|
||||||
timestamp: Math.floor(Date.now() / 1000) // Unix epoch
|
|
||||||
};
|
|
||||||
|
|
||||||
// Add message to history and Set currentId to messageId
|
|
||||||
history.messages[responseMessageId] = responseMessage;
|
|
||||||
history.currentId = responseMessageId;
|
|
||||||
|
|
||||||
// Append messageId to childrenIds of parent message
|
|
||||||
if (parentId !== null) {
|
|
||||||
history.messages[parentId].childrenIds = [
|
|
||||||
...history.messages[parentId].childrenIds,
|
|
||||||
responseMessageId
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
await tick();
|
|
||||||
|
|
||||||
let userContext = null;
|
let userContext = null;
|
||||||
if ($settings?.memory ?? false) {
|
if ($settings?.memory ?? false) {
|
||||||
@@ -451,7 +471,6 @@
|
|||||||
toast.error(error);
|
toast.error(error);
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
if (res.documents[0].length > 0) {
|
if (res.documents[0].length > 0) {
|
||||||
userContext = res.documents.reduce((acc, doc, index) => {
|
userContext = res.documents.reduce((acc, doc, index) => {
|
||||||
@@ -477,7 +496,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
let _response = null;
|
let _response = null;
|
||||||
|
|
||||||
if (model?.owned_by === 'openai') {
|
if (model?.owned_by === 'openai') {
|
||||||
_response = await sendPromptOpenAI(model, prompt, responseMessageId, _chatId);
|
_response = await sendPromptOpenAI(model, prompt, responseMessageId, _chatId);
|
||||||
} else if (model) {
|
} else if (model) {
|
||||||
@@ -502,11 +520,13 @@
|
|||||||
const getWebSearchResults = async (model: string, parentId: string, responseId: string) => {
|
const getWebSearchResults = async (model: string, parentId: string, responseId: string) => {
|
||||||
const responseMessage = history.messages[responseId];
|
const responseMessage = history.messages[responseId];
|
||||||
|
|
||||||
responseMessage.status = {
|
responseMessage.statusHistory = [
|
||||||
done: false,
|
{
|
||||||
action: 'web_search',
|
done: false,
|
||||||
description: $i18n.t('Generating search query')
|
action: 'web_search',
|
||||||
};
|
description: $i18n.t('Generating search query')
|
||||||
|
}
|
||||||
|
];
|
||||||
messages = messages;
|
messages = messages;
|
||||||
|
|
||||||
const prompt = history.messages[parentId].content;
|
const prompt = history.messages[parentId].content;
|
||||||
@@ -519,19 +539,21 @@
|
|||||||
|
|
||||||
if (!searchQuery) {
|
if (!searchQuery) {
|
||||||
toast.warning($i18n.t('No search query generated'));
|
toast.warning($i18n.t('No search query generated'));
|
||||||
responseMessage.status = {
|
responseMessage.statusHistory.push({
|
||||||
...responseMessage.status,
|
|
||||||
done: true,
|
done: true,
|
||||||
error: true,
|
error: true,
|
||||||
|
action: 'web_search',
|
||||||
description: 'No search query generated'
|
description: 'No search query generated'
|
||||||
};
|
});
|
||||||
|
|
||||||
messages = messages;
|
messages = messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
responseMessage.status = {
|
responseMessage.statusHistory.push({
|
||||||
...responseMessage.status,
|
done: false,
|
||||||
description: $i18n.t("Searching the web for '{{searchQuery}}'", { searchQuery })
|
action: 'web_search',
|
||||||
};
|
description: $i18n.t(`Searching "{{searchQuery}}"`, { searchQuery })
|
||||||
|
});
|
||||||
messages = messages;
|
messages = messages;
|
||||||
|
|
||||||
const results = await runWebSearch(localStorage.token, searchQuery).catch((error) => {
|
const results = await runWebSearch(localStorage.token, searchQuery).catch((error) => {
|
||||||
@@ -542,12 +564,13 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (results) {
|
if (results) {
|
||||||
responseMessage.status = {
|
responseMessage.statusHistory.push({
|
||||||
...responseMessage.status,
|
|
||||||
done: true,
|
done: true,
|
||||||
|
action: 'web_search',
|
||||||
description: $i18n.t('Searched {{count}} sites', { count: results.filenames.length }),
|
description: $i18n.t('Searched {{count}} sites', { count: results.filenames.length }),
|
||||||
|
query: searchQuery,
|
||||||
urls: results.filenames
|
urls: results.filenames
|
||||||
};
|
});
|
||||||
|
|
||||||
if (responseMessage?.files ?? undefined === undefined) {
|
if (responseMessage?.files ?? undefined === undefined) {
|
||||||
responseMessage.files = [];
|
responseMessage.files = [];
|
||||||
@@ -562,12 +585,12 @@
|
|||||||
|
|
||||||
messages = messages;
|
messages = messages;
|
||||||
} else {
|
} else {
|
||||||
responseMessage.status = {
|
responseMessage.statusHistory.push({
|
||||||
...responseMessage.status,
|
|
||||||
done: true,
|
done: true,
|
||||||
error: true,
|
error: true,
|
||||||
|
action: 'web_search',
|
||||||
description: 'No search results found'
|
description: 'No search results found'
|
||||||
};
|
});
|
||||||
messages = messages;
|
messages = messages;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -634,7 +657,7 @@
|
|||||||
|
|
||||||
let docs = [];
|
let docs = [];
|
||||||
|
|
||||||
if (model.info.meta.knowledge) {
|
if (model?.info?.meta?.knowledge ?? false) {
|
||||||
docs = model.info.meta.knowledge;
|
docs = model.info.meta.knowledge;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -669,6 +692,7 @@
|
|||||||
},
|
},
|
||||||
format: $settings.requestFormat ?? undefined,
|
format: $settings.requestFormat ?? undefined,
|
||||||
keep_alive: $settings.keepAlive ?? undefined,
|
keep_alive: $settings.keepAlive ?? undefined,
|
||||||
|
tool_ids: selectedToolIds.length > 0 ? selectedToolIds : undefined,
|
||||||
docs: docs.length > 0 ? docs : undefined,
|
docs: docs.length > 0 ? docs : undefined,
|
||||||
citations: docs.length > 0,
|
citations: docs.length > 0,
|
||||||
chat_id: $chatId
|
chat_id: $chatId
|
||||||
@@ -842,7 +866,7 @@
|
|||||||
|
|
||||||
let docs = [];
|
let docs = [];
|
||||||
|
|
||||||
if (model.info.meta.knowledge) {
|
if (model?.info?.meta?.knowledge ?? false) {
|
||||||
docs = model.info.meta.knowledge;
|
docs = model.info.meta.knowledge;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -930,6 +954,7 @@
|
|||||||
top_p: $settings?.params?.top_p ?? undefined,
|
top_p: $settings?.params?.top_p ?? undefined,
|
||||||
frequency_penalty: $settings?.params?.frequency_penalty ?? undefined,
|
frequency_penalty: $settings?.params?.frequency_penalty ?? undefined,
|
||||||
max_tokens: $settings?.params?.max_tokens ?? undefined,
|
max_tokens: $settings?.params?.max_tokens ?? undefined,
|
||||||
|
tool_ids: selectedToolIds.length > 0 ? selectedToolIds : undefined,
|
||||||
docs: docs.length > 0 ? docs : undefined,
|
docs: docs.length > 0 ? docs : undefined,
|
||||||
citations: docs.length > 0,
|
citations: docs.length > 0,
|
||||||
chat_id: $chatId
|
chat_id: $chatId
|
||||||
@@ -1098,9 +1123,9 @@
|
|||||||
let userPrompt = userMessage.content;
|
let userPrompt = userMessage.content;
|
||||||
|
|
||||||
if ((userMessage?.models ?? [...selectedModels]).length == 1) {
|
if ((userMessage?.models ?? [...selectedModels]).length == 1) {
|
||||||
await sendPrompt(userPrompt, userMessage.id);
|
await sendPrompt(userPrompt, userMessage.id, undefined, false);
|
||||||
} else {
|
} else {
|
||||||
await sendPrompt(userPrompt, userMessage.id, message.model);
|
await sendPrompt(userPrompt, userMessage.id, message.model, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1256,8 +1281,16 @@
|
|||||||
bind:files
|
bind:files
|
||||||
bind:prompt
|
bind:prompt
|
||||||
bind:autoScroll
|
bind:autoScroll
|
||||||
|
bind:selectedToolIds
|
||||||
bind:webSearchEnabled
|
bind:webSearchEnabled
|
||||||
bind:atSelectedModel
|
bind:atSelectedModel
|
||||||
|
availableToolIds={selectedModelIds.reduce((a, e, i, arr) => {
|
||||||
|
const model = $models.find((m) => m.id === e);
|
||||||
|
if (model?.info?.meta?.toolIds ?? false) {
|
||||||
|
return [...new Set([...a, ...model.info.meta.toolIds])];
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}, [])}
|
||||||
{selectedModels}
|
{selectedModels}
|
||||||
{messages}
|
{messages}
|
||||||
{submitPrompt}
|
{submitPrompt}
|
||||||
|
|||||||
@@ -8,7 +8,9 @@
|
|||||||
showSidebar,
|
showSidebar,
|
||||||
models,
|
models,
|
||||||
config,
|
config,
|
||||||
showCallOverlay
|
showCallOverlay,
|
||||||
|
tools,
|
||||||
|
user as _user
|
||||||
} from '$lib/stores';
|
} from '$lib/stores';
|
||||||
import { blobToFile, calculateSHA256, findWordIndices } from '$lib/utils';
|
import { blobToFile, calculateSHA256, findWordIndices } from '$lib/utils';
|
||||||
|
|
||||||
@@ -29,6 +31,7 @@
|
|||||||
import InputMenu from './MessageInput/InputMenu.svelte';
|
import InputMenu from './MessageInput/InputMenu.svelte';
|
||||||
import Headphone from '../icons/Headphone.svelte';
|
import Headphone from '../icons/Headphone.svelte';
|
||||||
import VoiceRecording from './MessageInput/VoiceRecording.svelte';
|
import VoiceRecording from './MessageInput/VoiceRecording.svelte';
|
||||||
|
import { transcribeAudio } from '$lib/apis/audio';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
@@ -57,6 +60,8 @@
|
|||||||
|
|
||||||
export let files = [];
|
export let files = [];
|
||||||
|
|
||||||
|
export let availableToolIds = [];
|
||||||
|
export let selectedToolIds = [];
|
||||||
export let webSearchEnabled = false;
|
export let webSearchEnabled = false;
|
||||||
|
|
||||||
export let prompt = '';
|
export let prompt = '';
|
||||||
@@ -652,6 +657,17 @@
|
|||||||
<div class=" ml-0.5 self-end mb-1.5 flex space-x-1">
|
<div class=" ml-0.5 self-end mb-1.5 flex space-x-1">
|
||||||
<InputMenu
|
<InputMenu
|
||||||
bind:webSearchEnabled
|
bind:webSearchEnabled
|
||||||
|
bind:selectedToolIds
|
||||||
|
tools={$tools.reduce((a, e, i, arr) => {
|
||||||
|
if (availableToolIds.includes(e.id) || ($_user?.role ?? 'user') === 'admin') {
|
||||||
|
a[e.id] = {
|
||||||
|
name: e.name,
|
||||||
|
description: e.meta.description,
|
||||||
|
enabled: false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}, {})}
|
||||||
uploadFilesHandler={() => {
|
uploadFilesHandler={() => {
|
||||||
filesInputElement.click();
|
filesInputElement.click();
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -205,7 +205,7 @@
|
|||||||
|
|
||||||
if (_responses.at(0)) {
|
if (_responses.at(0)) {
|
||||||
const content = _responses[0];
|
const content = _responses[0];
|
||||||
if (content) {
|
if ((content ?? '').trim() !== '') {
|
||||||
assistantSpeakingHandler(content);
|
assistantSpeakingHandler(content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,24 +4,33 @@
|
|||||||
import { getContext } from 'svelte';
|
import { getContext } from 'svelte';
|
||||||
|
|
||||||
import Dropdown from '$lib/components/common/Dropdown.svelte';
|
import Dropdown from '$lib/components/common/Dropdown.svelte';
|
||||||
import GarbageBin from '$lib/components/icons/GarbageBin.svelte';
|
|
||||||
import Pencil from '$lib/components/icons/Pencil.svelte';
|
|
||||||
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
||||||
import Tags from '$lib/components/chat/Tags.svelte';
|
|
||||||
import Share from '$lib/components/icons/Share.svelte';
|
|
||||||
import ArchiveBox from '$lib/components/icons/ArchiveBox.svelte';
|
|
||||||
import DocumentArrowUpSolid from '$lib/components/icons/DocumentArrowUpSolid.svelte';
|
import DocumentArrowUpSolid from '$lib/components/icons/DocumentArrowUpSolid.svelte';
|
||||||
import Switch from '$lib/components/common/Switch.svelte';
|
import Switch from '$lib/components/common/Switch.svelte';
|
||||||
import GlobeAltSolid from '$lib/components/icons/GlobeAltSolid.svelte';
|
import GlobeAltSolid from '$lib/components/icons/GlobeAltSolid.svelte';
|
||||||
import { config } from '$lib/stores';
|
import { config } from '$lib/stores';
|
||||||
|
import WrenchSolid from '$lib/components/icons/WrenchSolid.svelte';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
export let uploadFilesHandler: Function;
|
export let uploadFilesHandler: Function;
|
||||||
|
|
||||||
|
export let selectedToolIds: string[] = [];
|
||||||
export let webSearchEnabled: boolean;
|
export let webSearchEnabled: boolean;
|
||||||
|
|
||||||
|
export let tools = {};
|
||||||
export let onClose: Function;
|
export let onClose: Function;
|
||||||
|
|
||||||
|
$: tools = Object.fromEntries(
|
||||||
|
Object.keys(tools).map((toolId) => [
|
||||||
|
toolId,
|
||||||
|
{
|
||||||
|
...tools[toolId],
|
||||||
|
enabled: selectedToolIds.includes(toolId)
|
||||||
|
}
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
let show = false;
|
let show = false;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -39,20 +48,48 @@
|
|||||||
|
|
||||||
<div slot="content">
|
<div slot="content">
|
||||||
<DropdownMenu.Content
|
<DropdownMenu.Content
|
||||||
class="w-full max-w-[190px] rounded-xl px-1 py-1 border-gray-300/30 dark:border-gray-700/50 z-50 bg-white dark:bg-gray-850 dark:text-white shadow"
|
class="w-full max-w-[200px] rounded-xl px-1 py-1 border-gray-300/30 dark:border-gray-700/50 z-50 bg-white dark:bg-gray-850 dark:text-white shadow"
|
||||||
sideOffset={15}
|
sideOffset={15}
|
||||||
alignOffset={-8}
|
alignOffset={-8}
|
||||||
side="top"
|
side="top"
|
||||||
align="start"
|
align="start"
|
||||||
transition={flyAndScale}
|
transition={flyAndScale}
|
||||||
>
|
>
|
||||||
|
{#if Object.keys(tools).length > 0}
|
||||||
|
<div class=" max-h-28 overflow-y-auto scrollbar-hidden">
|
||||||
|
{#each Object.keys(tools) as toolId}
|
||||||
|
<div
|
||||||
|
class="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer rounded-xl"
|
||||||
|
>
|
||||||
|
<div class="flex-1 flex items-center gap-2">
|
||||||
|
<WrenchSolid />
|
||||||
|
<Tooltip content={tools[toolId]?.description ?? ''} className="flex-1">
|
||||||
|
<div class=" line-clamp-1">{tools[toolId].name}</div>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Switch
|
||||||
|
bind:state={tools[toolId].enabled}
|
||||||
|
on:change={(e) => {
|
||||||
|
selectedToolIds = e.detail
|
||||||
|
? [...selectedToolIds, toolId]
|
||||||
|
: selectedToolIds.filter((id) => id !== toolId);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="border-gray-100 dark:border-gray-800 my-1" />
|
||||||
|
{/if}
|
||||||
|
|
||||||
{#if $config?.features?.enable_web_search}
|
{#if $config?.features?.enable_web_search}
|
||||||
<div
|
<div
|
||||||
class="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer rounded-xl"
|
class="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer rounded-xl"
|
||||||
>
|
>
|
||||||
<div class="flex-1 flex items-center gap-2">
|
<div class="flex-1 flex items-center gap-2">
|
||||||
<GlobeAltSolid />
|
<GlobeAltSolid />
|
||||||
<div class="flex items-center">{$i18n.t('Web Search')}</div>
|
<div class=" line-clamp-1">{$i18n.t('Web Search')}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Switch bind:state={webSearchEnabled} />
|
<Switch bind:state={webSearchEnabled} />
|
||||||
@@ -68,7 +105,7 @@
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<DocumentArrowUpSolid />
|
<DocumentArrowUpSolid />
|
||||||
<div class="flex items-center">{$i18n.t('Upload Files')}</div>
|
<div class=" line-clamp-1">{$i18n.t('Upload Files')}</div>
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
</DropdownMenu.Content>
|
</DropdownMenu.Content>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -79,7 +79,7 @@
|
|||||||
history.currentId = userMessageId;
|
history.currentId = userMessageId;
|
||||||
|
|
||||||
await tick();
|
await tick();
|
||||||
await sendPrompt(userPrompt, userMessageId);
|
await sendPrompt(userPrompt, userMessageId, undefined, false);
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateChatMessages = async () => {
|
const updateChatMessages = async () => {
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#key mounted}
|
{#key mounted}
|
||||||
<div class="m-auto w-full max-w-6xl px-8 lg:px-24 pb-16">
|
<div class="m-auto w-full max-w-6xl px-8 lg:px-24 pb-10">
|
||||||
<div class="flex justify-start">
|
<div class="flex justify-start">
|
||||||
<div class="flex -space-x-4 mb-1" in:fade={{ duration: 200 }}>
|
<div class="flex -space-x-4 mb-1" in:fade={{ duration: 200 }}>
|
||||||
{#each models as model, modelIdx}
|
{#each models as model, modelIdx}
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
{:else}
|
{:else}
|
||||||
<div class=" font-medium text-gray-400 dark:text-gray-500">
|
<div class=" font-medium text-gray-400 dark:text-gray-500 line-clamp-1">
|
||||||
{$i18n.t('How can I help you today?')}
|
{$i18n.t('How can I help you today?')}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -46,8 +46,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
selectedReason = message.annotation.reason;
|
selectedReason = message?.annotation?.reason ?? '';
|
||||||
comment = message.annotation.comment;
|
comment = message?.annotation?.comment ?? '';
|
||||||
loadReasons();
|
loadReasons();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -211,93 +211,98 @@
|
|||||||
speaking = null;
|
speaking = null;
|
||||||
speakingIdx = null;
|
speakingIdx = null;
|
||||||
} else {
|
} else {
|
||||||
speaking = true;
|
if ((message?.content ?? '').trim() !== '') {
|
||||||
|
speaking = true;
|
||||||
|
|
||||||
if ($config.audio.tts.engine === 'openai') {
|
if ($config.audio.tts.engine === 'openai') {
|
||||||
loadingSpeech = true;
|
loadingSpeech = true;
|
||||||
|
|
||||||
const sentences = extractSentences(message.content).reduce((mergedTexts, currentText) => {
|
const sentences = extractSentences(message.content).reduce((mergedTexts, currentText) => {
|
||||||
const lastIndex = mergedTexts.length - 1;
|
const lastIndex = mergedTexts.length - 1;
|
||||||
if (lastIndex >= 0) {
|
if (lastIndex >= 0) {
|
||||||
const previousText = mergedTexts[lastIndex];
|
const previousText = mergedTexts[lastIndex];
|
||||||
const wordCount = previousText.split(/\s+/).length;
|
const wordCount = previousText.split(/\s+/).length;
|
||||||
if (wordCount < 2) {
|
if (wordCount < 2) {
|
||||||
mergedTexts[lastIndex] = previousText + ' ' + currentText;
|
mergedTexts[lastIndex] = previousText + ' ' + currentText;
|
||||||
|
} else {
|
||||||
|
mergedTexts.push(currentText);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
mergedTexts.push(currentText);
|
mergedTexts.push(currentText);
|
||||||
}
|
}
|
||||||
} else {
|
return mergedTexts;
|
||||||
mergedTexts.push(currentText);
|
}, []);
|
||||||
|
|
||||||
|
console.log(sentences);
|
||||||
|
|
||||||
|
sentencesAudio = sentences.reduce((a, e, i, arr) => {
|
||||||
|
a[i] = null;
|
||||||
|
return a;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
let lastPlayedAudioPromise = Promise.resolve(); // Initialize a promise that resolves immediately
|
||||||
|
|
||||||
|
for (const [idx, sentence] of sentences.entries()) {
|
||||||
|
const res = await synthesizeOpenAISpeech(
|
||||||
|
localStorage.token,
|
||||||
|
$settings?.audio?.tts?.voice ?? $config?.audio?.tts?.voice,
|
||||||
|
sentence
|
||||||
|
).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
|
||||||
|
speaking = null;
|
||||||
|
loadingSpeech = false;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
const blob = await res.blob();
|
||||||
|
const blobUrl = URL.createObjectURL(blob);
|
||||||
|
const audio = new Audio(blobUrl);
|
||||||
|
sentencesAudio[idx] = audio;
|
||||||
|
loadingSpeech = false;
|
||||||
|
lastPlayedAudioPromise = lastPlayedAudioPromise.then(() => playAudio(idx));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return mergedTexts;
|
} else {
|
||||||
}, []);
|
let voices = [];
|
||||||
|
const getVoicesLoop = setInterval(async () => {
|
||||||
|
voices = await speechSynthesis.getVoices();
|
||||||
|
if (voices.length > 0) {
|
||||||
|
clearInterval(getVoicesLoop);
|
||||||
|
|
||||||
console.log(sentences);
|
const voice =
|
||||||
|
voices
|
||||||
|
?.filter(
|
||||||
|
(v) =>
|
||||||
|
v.voiceURI === ($settings?.audio?.tts?.voice ?? $config?.audio?.tts?.voice)
|
||||||
|
)
|
||||||
|
?.at(0) ?? undefined;
|
||||||
|
|
||||||
sentencesAudio = sentences.reduce((a, e, i, arr) => {
|
console.log(voice);
|
||||||
a[i] = null;
|
|
||||||
return a;
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
let lastPlayedAudioPromise = Promise.resolve(); // Initialize a promise that resolves immediately
|
const speak = new SpeechSynthesisUtterance(message.content);
|
||||||
|
|
||||||
for (const [idx, sentence] of sentences.entries()) {
|
console.log(speak);
|
||||||
const res = await synthesizeOpenAISpeech(
|
|
||||||
localStorage.token,
|
|
||||||
$settings?.audio?.tts?.voice ?? $config?.audio?.tts?.voice,
|
|
||||||
sentence
|
|
||||||
).catch((error) => {
|
|
||||||
toast.error(error);
|
|
||||||
|
|
||||||
speaking = null;
|
speak.onend = () => {
|
||||||
loadingSpeech = false;
|
speaking = null;
|
||||||
|
if ($settings.conversationMode) {
|
||||||
|
document.getElementById('voice-input-button')?.click();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return null;
|
if (voice) {
|
||||||
});
|
speak.voice = voice;
|
||||||
|
}
|
||||||
|
|
||||||
if (res) {
|
speechSynthesis.speak(speak);
|
||||||
const blob = await res.blob();
|
}
|
||||||
const blobUrl = URL.createObjectURL(blob);
|
}, 100);
|
||||||
const audio = new Audio(blobUrl);
|
|
||||||
sentencesAudio[idx] = audio;
|
|
||||||
loadingSpeech = false;
|
|
||||||
lastPlayedAudioPromise = lastPlayedAudioPromise.then(() => playAudio(idx));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let voices = [];
|
toast.error('No content to speak');
|
||||||
const getVoicesLoop = setInterval(async () => {
|
|
||||||
voices = await speechSynthesis.getVoices();
|
|
||||||
if (voices.length > 0) {
|
|
||||||
clearInterval(getVoicesLoop);
|
|
||||||
|
|
||||||
const voice =
|
|
||||||
voices
|
|
||||||
?.filter(
|
|
||||||
(v) => v.voiceURI === ($settings?.audio?.tts?.voice ?? $config?.audio?.tts?.voice)
|
|
||||||
)
|
|
||||||
?.at(0) ?? undefined;
|
|
||||||
|
|
||||||
console.log(voice);
|
|
||||||
|
|
||||||
const speak = new SpeechSynthesisUtterance(message.content);
|
|
||||||
|
|
||||||
console.log(speak);
|
|
||||||
|
|
||||||
speak.onend = () => {
|
|
||||||
speaking = null;
|
|
||||||
if ($settings.conversationMode) {
|
|
||||||
document.getElementById('voice-input-button')?.click();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (voice) {
|
|
||||||
speak.voice = voice;
|
|
||||||
}
|
|
||||||
|
|
||||||
speechSynthesis.speak(speak);
|
|
||||||
}
|
|
||||||
}, 100);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -415,26 +420,29 @@
|
|||||||
class="prose chat-{message.role} w-full max-w-full dark:prose-invert prose-headings:my-0 prose-headings:-mb-4 prose-p:m-0 prose-p:-mb-6 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-img:my-0 prose-ul:-my-4 prose-ol:-my-4 prose-li:-my-3 prose-ul:-mb-6 prose-ol:-mb-8 prose-ol:p-0 prose-li:-mb-4 whitespace-pre-line"
|
class="prose chat-{message.role} w-full max-w-full dark:prose-invert prose-headings:my-0 prose-headings:-mb-4 prose-p:m-0 prose-p:-mb-6 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-img:my-0 prose-ul:-my-4 prose-ol:-my-4 prose-li:-my-3 prose-ul:-mb-6 prose-ol:-mb-8 prose-ol:p-0 prose-li:-mb-4 whitespace-pre-line"
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
{#if message?.status}
|
{#if (message?.statusHistory ?? [...(message?.status ? [message?.status] : [])]).length > 0}
|
||||||
|
{@const status = (
|
||||||
|
message?.statusHistory ?? [...(message?.status ? [message?.status] : [])]
|
||||||
|
).at(-1)}
|
||||||
<div class="flex items-center gap-2 pt-1 pb-1">
|
<div class="flex items-center gap-2 pt-1 pb-1">
|
||||||
{#if message?.status?.done === false}
|
{#if status.done === false}
|
||||||
<div class="">
|
<div class="">
|
||||||
<Spinner className="size-4" />
|
<Spinner className="size-4" />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if message?.status?.action === 'web_search' && message?.status?.urls}
|
{#if status?.action === 'web_search' && status?.urls}
|
||||||
<WebSearchResults urls={message?.status?.urls}>
|
<WebSearchResults {status}>
|
||||||
<div class="flex flex-col justify-center -space-y-0.5">
|
<div class="flex flex-col justify-center -space-y-0.5">
|
||||||
<div class="text-base line-clamp-1 text-wrap">
|
<div class="text-base line-clamp-1 text-wrap">
|
||||||
{message.status.description}
|
{status?.description}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</WebSearchResults>
|
</WebSearchResults>
|
||||||
{:else}
|
{:else}
|
||||||
<div class="flex flex-col justify-center -space-y-0.5">
|
<div class="flex flex-col justify-center -space-y-0.5">
|
||||||
<div class=" text-gray-500 dark:text-gray-500 text-base line-clamp-1 text-wrap">
|
<div class=" text-gray-500 dark:text-gray-500 text-base line-clamp-1 text-wrap">
|
||||||
{message.status.description}
|
{status?.description}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -868,8 +876,8 @@
|
|||||||
<button
|
<button
|
||||||
class="{isLastMessage
|
class="{isLastMessage
|
||||||
? 'visible'
|
? 'visible'
|
||||||
: 'invisible group-hover:visible'} p-1.5 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg {message
|
: 'invisible group-hover:visible'} p-1.5 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg {(message
|
||||||
?.annotation?.rating === 1
|
?.annotation?.rating ?? null) === 1
|
||||||
? 'bg-gray-100 dark:bg-gray-800'
|
? 'bg-gray-100 dark:bg-gray-800'
|
||||||
: ''} dark:hover:text-white hover:text-black transition"
|
: ''} dark:hover:text-white hover:text-black transition"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
@@ -903,8 +911,8 @@
|
|||||||
<button
|
<button
|
||||||
class="{isLastMessage
|
class="{isLastMessage
|
||||||
? 'visible'
|
? 'visible'
|
||||||
: 'invisible group-hover:visible'} p-1.5 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg {message
|
: 'invisible group-hover:visible'} p-1.5 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg {(message
|
||||||
?.annotation?.rating === -1
|
?.annotation?.rating ?? null) === -1
|
||||||
? 'bg-gray-100 dark:bg-gray-800'
|
? 'bg-gray-100 dark:bg-gray-800'
|
||||||
: ''} dark:hover:text-white hover:text-black transition"
|
: ''} dark:hover:text-white hover:text-black transition"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
@@ -974,6 +982,7 @@
|
|||||||
? 'visible'
|
? 'visible'
|
||||||
: 'invisible group-hover:visible'} p-1.5 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg dark:hover:text-white hover:text-black transition regenerate-response-button"
|
: 'invisible group-hover:visible'} p-1.5 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg dark:hover:text-white hover:text-black transition regenerate-response-button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
|
showRateComment = false;
|
||||||
regenerateResponse(message);
|
regenerateResponse(message);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import ChevronDown from '$lib/components/icons/ChevronDown.svelte';
|
import ChevronDown from '$lib/components/icons/ChevronDown.svelte';
|
||||||
import ChevronUp from '$lib/components/icons/ChevronUp.svelte';
|
import ChevronUp from '$lib/components/icons/ChevronUp.svelte';
|
||||||
|
import MagnifyingGlass from '$lib/components/icons/MagnifyingGlass.svelte';
|
||||||
import { Collapsible } from 'bits-ui';
|
import { Collapsible } from 'bits-ui';
|
||||||
import { slide } from 'svelte/transition';
|
import { slide } from 'svelte/transition';
|
||||||
|
|
||||||
export let urls = [];
|
export let status = { urls: [], query: '' };
|
||||||
let state = false;
|
let state = false;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -27,11 +28,45 @@
|
|||||||
class=" text-sm border border-gray-300/30 dark:border-gray-700/50 rounded-xl"
|
class=" text-sm border border-gray-300/30 dark:border-gray-700/50 rounded-xl"
|
||||||
transition={slide}
|
transition={slide}
|
||||||
>
|
>
|
||||||
{#each urls as url, urlIdx}
|
{#if status?.query}
|
||||||
|
<a
|
||||||
|
href="https://www.google.com/search?q={status.query}"
|
||||||
|
target="_blank"
|
||||||
|
class="flex w-full items-center p-3 px-4 border-b border-gray-300/30 dark:border-gray-700/50 group/item justify-between font-normal text-gray-800 dark:text-gray-300 no-underline"
|
||||||
|
>
|
||||||
|
<div class="flex gap-2 items-center">
|
||||||
|
<MagnifyingGlass />
|
||||||
|
|
||||||
|
<div class=" line-clamp-1">
|
||||||
|
{status.query}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class=" ml-1 text-white dark:text-gray-900 group-hover/item:text-gray-600 dark:group-hover/item:text-white transition"
|
||||||
|
>
|
||||||
|
<!-- -->
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
fill="currentColor"
|
||||||
|
class="size-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M4.22 11.78a.75.75 0 0 1 0-1.06L9.44 5.5H5.75a.75.75 0 0 1 0-1.5h5.5a.75.75 0 0 1 .75.75v5.5a.75.75 0 0 1-1.5 0V6.56l-5.22 5.22a.75.75 0 0 1-1.06 0Z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
{#each status.urls as url, urlIdx}
|
||||||
<a
|
<a
|
||||||
href={url}
|
href={url}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
class="flex w-full items-center p-3 px-4 {urlIdx === urls.length - 1
|
class="flex w-full items-center p-3 px-4 {urlIdx === status.urls.length - 1
|
||||||
? ''
|
? ''
|
||||||
: 'border-b border-gray-300/30 dark:border-gray-700/50'} group/item justify-between font-normal text-gray-800 dark:text-gray-300"
|
: 'border-b border-gray-300/30 dark:border-gray-700/50'} group/item justify-between font-normal text-gray-800 dark:text-gray-300"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -152,6 +152,7 @@
|
|||||||
|
|
||||||
toast.error(error);
|
toast.error(error);
|
||||||
// opts.callback({ success: false, error, modelName: opts.modelName });
|
// opts.callback({ success: false, error, modelName: opts.modelName });
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,21 +5,23 @@
|
|||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
export let admin = false;
|
||||||
|
|
||||||
export let params = {
|
export let params = {
|
||||||
// Advanced
|
// Advanced
|
||||||
seed: 0,
|
seed: null,
|
||||||
stop: null,
|
stop: null,
|
||||||
temperature: '',
|
temperature: null,
|
||||||
frequency_penalty: '',
|
frequency_penalty: null,
|
||||||
repeat_last_n: '',
|
repeat_last_n: null,
|
||||||
mirostat: '',
|
mirostat: null,
|
||||||
mirostat_eta: '',
|
mirostat_eta: null,
|
||||||
mirostat_tau: '',
|
mirostat_tau: null,
|
||||||
top_k: '',
|
top_k: null,
|
||||||
top_p: '',
|
top_p: null,
|
||||||
tfs_z: '',
|
tfs_z: null,
|
||||||
num_ctx: '',
|
num_ctx: null,
|
||||||
max_tokens: '',
|
max_tokens: null,
|
||||||
use_mmap: null,
|
use_mmap: null,
|
||||||
use_mlock: null,
|
use_mlock: null,
|
||||||
num_thread: null,
|
num_thread: null,
|
||||||
@@ -112,10 +114,10 @@
|
|||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.temperature = (params?.temperature ?? '') === '' ? 0.8 : '';
|
params.temperature = (params?.temperature ?? null) === null ? 0.8 : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.temperature ?? '') === ''}
|
{#if (params?.temperature ?? null) === null}
|
||||||
<span class="ml-2 self-center"> {$i18n.t('Default')} </span>
|
<span class="ml-2 self-center"> {$i18n.t('Default')} </span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center"> {$i18n.t('Custom')} </span>
|
<span class="ml-2 self-center"> {$i18n.t('Custom')} </span>
|
||||||
@@ -123,7 +125,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.temperature ?? '') !== ''}
|
{#if (params?.temperature ?? null) !== null}
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex mt-0.5 space-x-2">
|
||||||
<div class=" flex-1">
|
<div class=" flex-1">
|
||||||
<input
|
<input
|
||||||
@@ -143,7 +145,7 @@
|
|||||||
class=" bg-transparent text-center w-14"
|
class=" bg-transparent text-center w-14"
|
||||||
min="0"
|
min="0"
|
||||||
max="1"
|
max="1"
|
||||||
step="0.05"
|
step="any"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -158,10 +160,10 @@
|
|||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.mirostat = (params?.mirostat ?? '') === '' ? 0 : '';
|
params.mirostat = (params?.mirostat ?? null) === null ? 0 : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.mirostat ?? '') === ''}
|
{#if (params?.mirostat ?? null) === null}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
@@ -169,7 +171,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.mirostat ?? '') !== ''}
|
{#if (params?.mirostat ?? null) !== null}
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex mt-0.5 space-x-2">
|
||||||
<div class=" flex-1">
|
<div class=" flex-1">
|
||||||
<input
|
<input
|
||||||
@@ -204,10 +206,10 @@
|
|||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.mirostat_eta = (params?.mirostat_eta ?? '') === '' ? 0.1 : '';
|
params.mirostat_eta = (params?.mirostat_eta ?? null) === null ? 0.1 : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.mirostat_eta ?? '') === ''}
|
{#if (params?.mirostat_eta ?? null) === null}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
@@ -215,7 +217,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.mirostat_eta ?? '') !== ''}
|
{#if (params?.mirostat_eta ?? null) !== null}
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex mt-0.5 space-x-2">
|
||||||
<div class=" flex-1">
|
<div class=" flex-1">
|
||||||
<input
|
<input
|
||||||
@@ -235,7 +237,7 @@
|
|||||||
class=" bg-transparent text-center w-14"
|
class=" bg-transparent text-center w-14"
|
||||||
min="0"
|
min="0"
|
||||||
max="1"
|
max="1"
|
||||||
step="0.05"
|
step="any"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -250,10 +252,10 @@
|
|||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.mirostat_tau = (params?.mirostat_tau ?? '') === '' ? 5.0 : '';
|
params.mirostat_tau = (params?.mirostat_tau ?? null) === null ? 5.0 : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.mirostat_tau ?? '') === ''}
|
{#if (params?.mirostat_tau ?? null) === null}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
@@ -261,7 +263,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.mirostat_tau ?? '') !== ''}
|
{#if (params?.mirostat_tau ?? null) !== null}
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex mt-0.5 space-x-2">
|
||||||
<div class=" flex-1">
|
<div class=" flex-1">
|
||||||
<input
|
<input
|
||||||
@@ -281,7 +283,7 @@
|
|||||||
class=" bg-transparent text-center w-14"
|
class=" bg-transparent text-center w-14"
|
||||||
min="0"
|
min="0"
|
||||||
max="10"
|
max="10"
|
||||||
step="0.5"
|
step="any"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -296,10 +298,10 @@
|
|||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.top_k = (params?.top_k ?? '') === '' ? 40 : '';
|
params.top_k = (params?.top_k ?? null) === null ? 40 : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.top_k ?? '') === ''}
|
{#if (params?.top_k ?? null) === null}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
@@ -307,7 +309,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.top_k ?? '') !== ''}
|
{#if (params?.top_k ?? null) !== null}
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex mt-0.5 space-x-2">
|
||||||
<div class=" flex-1">
|
<div class=" flex-1">
|
||||||
<input
|
<input
|
||||||
@@ -327,7 +329,7 @@
|
|||||||
class=" bg-transparent text-center w-14"
|
class=" bg-transparent text-center w-14"
|
||||||
min="0"
|
min="0"
|
||||||
max="100"
|
max="100"
|
||||||
step="0.5"
|
step="any"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -342,10 +344,10 @@
|
|||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.top_p = (params?.top_p ?? '') === '' ? 0.9 : '';
|
params.top_p = (params?.top_p ?? null) === null ? 0.9 : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.top_p ?? '') === ''}
|
{#if (params?.top_p ?? null) === null}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
@@ -353,7 +355,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.top_p ?? '') !== ''}
|
{#if (params?.top_p ?? null) !== null}
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex mt-0.5 space-x-2">
|
||||||
<div class=" flex-1">
|
<div class=" flex-1">
|
||||||
<input
|
<input
|
||||||
@@ -373,7 +375,7 @@
|
|||||||
class=" bg-transparent text-center w-14"
|
class=" bg-transparent text-center w-14"
|
||||||
min="0"
|
min="0"
|
||||||
max="1"
|
max="1"
|
||||||
step="0.05"
|
step="any"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -388,10 +390,10 @@
|
|||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.frequency_penalty = (params?.frequency_penalty ?? '') === '' ? 1.1 : '';
|
params.frequency_penalty = (params?.frequency_penalty ?? null) === null ? 1.1 : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.frequency_penalty ?? '') === ''}
|
{#if (params?.frequency_penalty ?? null) === null}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
@@ -399,7 +401,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.frequency_penalty ?? '') !== ''}
|
{#if (params?.frequency_penalty ?? null) !== null}
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex mt-0.5 space-x-2">
|
||||||
<div class=" flex-1">
|
<div class=" flex-1">
|
||||||
<input
|
<input
|
||||||
@@ -419,7 +421,7 @@
|
|||||||
class=" bg-transparent text-center w-14"
|
class=" bg-transparent text-center w-14"
|
||||||
min="0"
|
min="0"
|
||||||
max="2"
|
max="2"
|
||||||
step="0.05"
|
step="any"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -434,10 +436,10 @@
|
|||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.repeat_last_n = (params?.repeat_last_n ?? '') === '' ? 64 : '';
|
params.repeat_last_n = (params?.repeat_last_n ?? null) === null ? 64 : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.repeat_last_n ?? '') === ''}
|
{#if (params?.repeat_last_n ?? null) === null}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
@@ -445,7 +447,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.repeat_last_n ?? '') !== ''}
|
{#if (params?.repeat_last_n ?? null) !== null}
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex mt-0.5 space-x-2">
|
||||||
<div class=" flex-1">
|
<div class=" flex-1">
|
||||||
<input
|
<input
|
||||||
@@ -480,10 +482,10 @@
|
|||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.tfs_z = (params?.tfs_z ?? '') === '' ? 1 : '';
|
params.tfs_z = (params?.tfs_z ?? null) === null ? 1 : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.tfs_z ?? '') === ''}
|
{#if (params?.tfs_z ?? null) === null}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
@@ -491,7 +493,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.tfs_z ?? '') !== ''}
|
{#if (params?.tfs_z ?? null) !== null}
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex mt-0.5 space-x-2">
|
||||||
<div class=" flex-1">
|
<div class=" flex-1">
|
||||||
<input
|
<input
|
||||||
@@ -511,7 +513,7 @@
|
|||||||
class=" bg-transparent text-center w-14"
|
class=" bg-transparent text-center w-14"
|
||||||
min="0"
|
min="0"
|
||||||
max="2"
|
max="2"
|
||||||
step="0.05"
|
step="any"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -526,10 +528,10 @@
|
|||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.num_ctx = (params?.num_ctx ?? '') === '' ? 2048 : '';
|
params.num_ctx = (params?.num_ctx ?? null) === null ? 2048 : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.num_ctx ?? '') === ''}
|
{#if (params?.num_ctx ?? null) === null}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
@@ -537,7 +539,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.num_ctx ?? '') !== ''}
|
{#if (params?.num_ctx ?? null) !== null}
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex mt-0.5 space-x-2">
|
||||||
<div class=" flex-1">
|
<div class=" flex-1">
|
||||||
<input
|
<input
|
||||||
@@ -571,10 +573,10 @@
|
|||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.max_tokens = (params?.max_tokens ?? '') === '' ? 128 : '';
|
params.max_tokens = (params?.max_tokens ?? null) === null ? 128 : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.max_tokens ?? '') === ''}
|
{#if (params?.max_tokens ?? null) === null}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
@@ -582,7 +584,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.max_tokens ?? '') !== ''}
|
{#if (params?.max_tokens ?? null) !== null}
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex mt-0.5 space-x-2">
|
||||||
<div class=" flex-1">
|
<div class=" flex-1">
|
||||||
<input
|
<input
|
||||||
@@ -609,122 +611,124 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class=" py-0.5 w-full justify-between">
|
{#if admin}
|
||||||
<div class="flex w-full justify-between">
|
<div class=" py-0.5 w-full justify-between">
|
||||||
<div class=" self-center text-xs font-medium">{$i18n.t('use_mmap (Ollama)')}</div>
|
<div class="flex w-full justify-between">
|
||||||
|
<div class=" self-center text-xs font-medium">{$i18n.t('use_mmap (Ollama)')}</div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="p-1 px-3 text-xs flex rounded transition"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
params.use_mmap = (params?.use_mmap ?? null) === null ? true : null;
|
params.use_mmap = (params?.use_mmap ?? null) === null ? true : null;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{#if (params?.use_mmap ?? null) === null}
|
{#if (params?.use_mmap ?? null) === null}
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
||||||
{/if}
|
{/if}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class=" py-0.5 w-full justify-between">
|
|
||||||
<div class="flex w-full justify-between">
|
|
||||||
<div class=" self-center text-xs font-medium">{$i18n.t('use_mlock (Ollama)')}</div>
|
|
||||||
|
|
||||||
<button
|
|
||||||
class="p-1 px-3 text-xs flex rounded transition"
|
|
||||||
type="button"
|
|
||||||
on:click={() => {
|
|
||||||
params.use_mlock = (params?.use_mlock ?? null) === null ? true : null;
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{#if (params?.use_mlock ?? null) === null}
|
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
|
||||||
{:else}
|
|
||||||
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
|
||||||
{/if}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class=" py-0.5 w-full justify-between">
|
|
||||||
<div class="flex w-full justify-between">
|
|
||||||
<div class=" self-center text-xs font-medium">{$i18n.t('num_thread (Ollama)')}</div>
|
|
||||||
|
|
||||||
<button
|
|
||||||
class="p-1 px-3 text-xs flex rounded transition"
|
|
||||||
type="button"
|
|
||||||
on:click={() => {
|
|
||||||
params.num_thread = (params?.num_thread ?? null) === null ? 2 : null;
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{#if (params?.num_thread ?? null) === null}
|
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
|
||||||
{:else}
|
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
|
||||||
{/if}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{#if (params?.num_thread ?? null) !== null}
|
|
||||||
<div class="flex mt-0.5 space-x-2">
|
|
||||||
<div class=" flex-1">
|
|
||||||
<input
|
|
||||||
id="steps-range"
|
|
||||||
type="range"
|
|
||||||
min="1"
|
|
||||||
max="256"
|
|
||||||
step="1"
|
|
||||||
bind:value={params.num_thread}
|
|
||||||
class="w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="">
|
|
||||||
<input
|
|
||||||
bind:value={params.num_thread}
|
|
||||||
type="number"
|
|
||||||
class=" bg-transparent text-center w-14"
|
|
||||||
min="1"
|
|
||||||
max="256"
|
|
||||||
step="1"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class=" py-0.5 w-full justify-between">
|
|
||||||
<div class="flex w-full justify-between">
|
|
||||||
<div class=" self-center text-xs font-medium">{$i18n.t('Template')}</div>
|
|
||||||
|
|
||||||
<button
|
|
||||||
class="p-1 px-3 text-xs flex rounded transition"
|
|
||||||
type="button"
|
|
||||||
on:click={() => {
|
|
||||||
params.template = (params?.template ?? null) === null ? '' : null;
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{#if (params?.template ?? null) === null}
|
|
||||||
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
|
||||||
{:else}
|
|
||||||
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
|
||||||
{/if}
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if (params?.template ?? null) !== null}
|
<div class=" py-0.5 w-full justify-between">
|
||||||
<div class="flex mt-0.5 space-x-2">
|
<div class="flex w-full justify-between">
|
||||||
<div class=" flex-1">
|
<div class=" self-center text-xs font-medium">{$i18n.t('use_mlock (Ollama)')}</div>
|
||||||
<textarea
|
|
||||||
class="px-3 py-1.5 text-sm w-full bg-transparent border dark:border-gray-600 outline-none rounded-lg -mb-1"
|
<button
|
||||||
placeholder="Write your model template content here"
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
rows="4"
|
type="button"
|
||||||
bind:value={params.template}
|
on:click={() => {
|
||||||
/>
|
params.use_mlock = (params?.use_mlock ?? null) === null ? true : null;
|
||||||
</div>
|
}}
|
||||||
|
>
|
||||||
|
{#if (params?.use_mlock ?? null) === null}
|
||||||
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
|
{:else}
|
||||||
|
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
</div>
|
||||||
</div>
|
|
||||||
|
<div class=" py-0.5 w-full justify-between">
|
||||||
|
<div class="flex w-full justify-between">
|
||||||
|
<div class=" self-center text-xs font-medium">{$i18n.t('num_thread (Ollama)')}</div>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
|
type="button"
|
||||||
|
on:click={() => {
|
||||||
|
params.num_thread = (params?.num_thread ?? null) === null ? 2 : null;
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{#if (params?.num_thread ?? null) === null}
|
||||||
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
|
{:else}
|
||||||
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if (params?.num_thread ?? null) !== null}
|
||||||
|
<div class="flex mt-0.5 space-x-2">
|
||||||
|
<div class=" flex-1">
|
||||||
|
<input
|
||||||
|
id="steps-range"
|
||||||
|
type="range"
|
||||||
|
min="1"
|
||||||
|
max="256"
|
||||||
|
step="1"
|
||||||
|
bind:value={params.num_thread}
|
||||||
|
class="w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="">
|
||||||
|
<input
|
||||||
|
bind:value={params.num_thread}
|
||||||
|
type="number"
|
||||||
|
class=" bg-transparent text-center w-14"
|
||||||
|
min="1"
|
||||||
|
max="256"
|
||||||
|
step="1"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- <div class=" py-0.5 w-full justify-between">
|
||||||
|
<div class="flex w-full justify-between">
|
||||||
|
<div class=" self-center text-xs font-medium">{$i18n.t('Template')}</div>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
|
type="button"
|
||||||
|
on:click={() => {
|
||||||
|
params.template = (params?.template ?? null) === null ? '' : null;
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{#if (params?.template ?? null) === null}
|
||||||
|
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
|
||||||
|
{:else}
|
||||||
|
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if (params?.template ?? null) !== null}
|
||||||
|
<div class="flex mt-0.5 space-x-2">
|
||||||
|
<div class=" flex-1">
|
||||||
|
<textarea
|
||||||
|
class="px-3 py-1.5 text-sm w-full bg-transparent border dark:border-gray-600 outline-none rounded-lg -mb-1"
|
||||||
|
placeholder="Write your model template content here"
|
||||||
|
rows="4"
|
||||||
|
bind:value={params.template}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</div> -->
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
import { getLanguages } from '$lib/i18n';
|
import { getLanguages } from '$lib/i18n';
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
import { models, settings, theme } from '$lib/stores';
|
import { models, settings, theme, user } from '$lib/stores';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
@@ -43,19 +43,19 @@
|
|||||||
|
|
||||||
let params = {
|
let params = {
|
||||||
// Advanced
|
// Advanced
|
||||||
seed: 0,
|
seed: null,
|
||||||
temperature: '',
|
temperature: null,
|
||||||
frequency_penalty: '',
|
frequency_penalty: null,
|
||||||
repeat_last_n: '',
|
repeat_last_n: null,
|
||||||
mirostat: '',
|
mirostat: null,
|
||||||
mirostat_eta: '',
|
mirostat_eta: null,
|
||||||
mirostat_tau: '',
|
mirostat_tau: null,
|
||||||
top_k: '',
|
top_k: null,
|
||||||
top_p: '',
|
top_p: null,
|
||||||
stop: null,
|
stop: null,
|
||||||
tfs_z: '',
|
tfs_z: null,
|
||||||
num_ctx: '',
|
num_ctx: null,
|
||||||
max_tokens: ''
|
max_tokens: null
|
||||||
};
|
};
|
||||||
|
|
||||||
const toggleRequestFormat = async () => {
|
const toggleRequestFormat = async () => {
|
||||||
@@ -79,12 +79,6 @@
|
|||||||
requestFormat = $settings.requestFormat ?? '';
|
requestFormat = $settings.requestFormat ?? '';
|
||||||
keepAlive = $settings.keepAlive ?? null;
|
keepAlive = $settings.keepAlive ?? null;
|
||||||
|
|
||||||
params.seed = $settings.seed ?? 0;
|
|
||||||
params.temperature = $settings.temperature ?? '';
|
|
||||||
params.frequency_penalty = $settings.frequency_penalty ?? '';
|
|
||||||
params.top_k = $settings.top_k ?? '';
|
|
||||||
params.top_p = $settings.top_p ?? '';
|
|
||||||
params.num_ctx = $settings.num_ctx ?? '';
|
|
||||||
params = { ...params, ...$settings.params };
|
params = { ...params, ...$settings.params };
|
||||||
params.stop = $settings?.params?.stop ? ($settings?.params?.stop ?? []).join(',') : null;
|
params.stop = $settings?.params?.stop ? ($settings?.params?.stop ?? []).join(',') : null;
|
||||||
});
|
});
|
||||||
@@ -146,6 +140,7 @@
|
|||||||
<option value="dark">🌑 {$i18n.t('Dark')}</option>
|
<option value="dark">🌑 {$i18n.t('Dark')}</option>
|
||||||
<option value="oled-dark">🌃 {$i18n.t('OLED Dark')}</option>
|
<option value="oled-dark">🌃 {$i18n.t('OLED Dark')}</option>
|
||||||
<option value="light">☀️ {$i18n.t('Light')}</option>
|
<option value="light">☀️ {$i18n.t('Light')}</option>
|
||||||
|
<option value="her">🌷 Her</option>
|
||||||
<!-- <option value="rose-pine dark">🪻 {$i18n.t('Rosé Pine')}</option>
|
<!-- <option value="rose-pine dark">🪻 {$i18n.t('Rosé Pine')}</option>
|
||||||
<option value="rose-pine-dawn light">🌷 {$i18n.t('Rosé Pine Dawn')}</option> -->
|
<option value="rose-pine-dawn light">🌷 {$i18n.t('Rosé Pine Dawn')}</option> -->
|
||||||
</select>
|
</select>
|
||||||
@@ -227,7 +222,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if showAdvanced}
|
{#if showAdvanced}
|
||||||
<AdvancedParams bind:params />
|
<AdvancedParams admin={$user?.role === 'admin'} bind:params />
|
||||||
<hr class=" dark:border-gray-850" />
|
<hr class=" dark:border-gray-850" />
|
||||||
|
|
||||||
<div class=" py-1 w-full justify-between">
|
<div class=" py-1 w-full justify-between">
|
||||||
@@ -300,20 +295,23 @@
|
|||||||
saveSettings({
|
saveSettings({
|
||||||
system: system !== '' ? system : undefined,
|
system: system !== '' ? system : undefined,
|
||||||
params: {
|
params: {
|
||||||
seed: (params.seed !== 0 ? params.seed : undefined) ?? undefined,
|
seed: (params.seed !== null ? params.seed : undefined) ?? undefined,
|
||||||
stop: params.stop ? params.stop.split(',').filter((e) => e) : undefined,
|
stop: params.stop ? params.stop.split(',').filter((e) => e) : undefined,
|
||||||
temperature: params.temperature !== '' ? params.temperature : undefined,
|
temperature: params.temperature !== null ? params.temperature : undefined,
|
||||||
frequency_penalty:
|
frequency_penalty:
|
||||||
params.frequency_penalty !== '' ? params.frequency_penalty : undefined,
|
params.frequency_penalty !== null ? params.frequency_penalty : undefined,
|
||||||
repeat_last_n: params.repeat_last_n !== '' ? params.repeat_last_n : undefined,
|
repeat_last_n: params.repeat_last_n !== null ? params.repeat_last_n : undefined,
|
||||||
mirostat: params.mirostat !== '' ? params.mirostat : undefined,
|
mirostat: params.mirostat !== null ? params.mirostat : undefined,
|
||||||
mirostat_eta: params.mirostat_eta !== '' ? params.mirostat_eta : undefined,
|
mirostat_eta: params.mirostat_eta !== null ? params.mirostat_eta : undefined,
|
||||||
mirostat_tau: params.mirostat_tau !== '' ? params.mirostat_tau : undefined,
|
mirostat_tau: params.mirostat_tau !== null ? params.mirostat_tau : undefined,
|
||||||
top_k: params.top_k !== '' ? params.top_k : undefined,
|
top_k: params.top_k !== null ? params.top_k : undefined,
|
||||||
top_p: params.top_p !== '' ? params.top_p : undefined,
|
top_p: params.top_p !== null ? params.top_p : undefined,
|
||||||
tfs_z: params.tfs_z !== '' ? params.tfs_z : undefined,
|
tfs_z: params.tfs_z !== null ? params.tfs_z : undefined,
|
||||||
num_ctx: params.num_ctx !== '' ? params.num_ctx : undefined,
|
num_ctx: params.num_ctx !== null ? params.num_ctx : undefined,
|
||||||
max_tokens: params.max_tokens !== '' ? params.max_tokens : undefined
|
max_tokens: params.max_tokens !== null ? params.max_tokens : undefined,
|
||||||
|
use_mmap: params.use_mmap !== null ? params.use_mmap : undefined,
|
||||||
|
use_mlock: params.use_mlock !== null ? params.use_mlock : undefined,
|
||||||
|
num_thread: params.num_thread !== null ? params.num_thread : undefined
|
||||||
},
|
},
|
||||||
keepAlive: keepAlive ? (isNaN(keepAlive) ? keepAlive : parseInt(keepAlive)) : undefined
|
keepAlive: keepAlive ? (isNaN(keepAlive) ? keepAlive : parseInt(keepAlive)) : undefined
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,135 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { basicSetup, EditorView } from 'codemirror';
|
||||||
|
import { keymap, placeholder } from '@codemirror/view';
|
||||||
|
import { Compartment, EditorState } from '@codemirror/state';
|
||||||
|
|
||||||
|
import { acceptCompletion } from '@codemirror/autocomplete';
|
||||||
|
import { indentWithTab } from '@codemirror/commands';
|
||||||
|
|
||||||
|
import { indentUnit } from '@codemirror/language';
|
||||||
|
import { python } from '@codemirror/lang-python';
|
||||||
|
import { oneDark } from '@codemirror/theme-one-dark';
|
||||||
|
|
||||||
|
import { onMount, createEventDispatcher } from 'svelte';
|
||||||
|
import { formatPythonCode } from '$lib/apis/utils';
|
||||||
|
import { toast } from 'svelte-sonner';
|
||||||
|
|
||||||
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
|
export let boilerplate = '';
|
||||||
|
export let value = '';
|
||||||
|
|
||||||
|
let codeEditor;
|
||||||
|
|
||||||
|
let isDarkMode = false;
|
||||||
|
let editorTheme = new Compartment();
|
||||||
|
|
||||||
|
export const formatPythonCodeHandler = async () => {
|
||||||
|
if (codeEditor) {
|
||||||
|
const res = await formatPythonCode(value).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res && res.code) {
|
||||||
|
const formattedCode = res.code;
|
||||||
|
codeEditor.dispatch({
|
||||||
|
changes: [{ from: 0, to: codeEditor.state.doc.length, insert: formattedCode }]
|
||||||
|
});
|
||||||
|
|
||||||
|
toast.success('Code formatted successfully');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
let extensions = [
|
||||||
|
basicSetup,
|
||||||
|
keymap.of([{ key: 'Tab', run: acceptCompletion }, indentWithTab]),
|
||||||
|
python(),
|
||||||
|
indentUnit.of(' '),
|
||||||
|
placeholder('Enter your code here...'),
|
||||||
|
EditorView.updateListener.of((e) => {
|
||||||
|
if (e.docChanged) {
|
||||||
|
value = e.state.doc.toString();
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
editorTheme.of([])
|
||||||
|
];
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
console.log(value);
|
||||||
|
if (value === '') {
|
||||||
|
value = boilerplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if html class has dark mode
|
||||||
|
isDarkMode = document.documentElement.classList.contains('dark');
|
||||||
|
|
||||||
|
// python code editor, highlight python code
|
||||||
|
codeEditor = new EditorView({
|
||||||
|
state: EditorState.create({
|
||||||
|
doc: value,
|
||||||
|
extensions: extensions
|
||||||
|
}),
|
||||||
|
parent: document.getElementById('code-textarea')
|
||||||
|
});
|
||||||
|
|
||||||
|
if (isDarkMode) {
|
||||||
|
codeEditor.dispatch({
|
||||||
|
effects: editorTheme.reconfigure(oneDark)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// listen to html class changes this should fire only when dark mode is toggled
|
||||||
|
const observer = new MutationObserver((mutations) => {
|
||||||
|
mutations.forEach((mutation) => {
|
||||||
|
if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
|
||||||
|
const _isDarkMode = document.documentElement.classList.contains('dark');
|
||||||
|
|
||||||
|
if (_isDarkMode !== isDarkMode) {
|
||||||
|
isDarkMode = _isDarkMode;
|
||||||
|
if (_isDarkMode) {
|
||||||
|
codeEditor.dispatch({
|
||||||
|
effects: editorTheme.reconfigure(oneDark)
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
codeEditor.dispatch({
|
||||||
|
effects: editorTheme.reconfigure()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
observer.observe(document.documentElement, {
|
||||||
|
attributes: true,
|
||||||
|
attributeFilter: ['class']
|
||||||
|
});
|
||||||
|
|
||||||
|
const keydownHandler = async (e) => {
|
||||||
|
if ((e.ctrlKey || e.metaKey) && e.key === 's') {
|
||||||
|
e.preventDefault();
|
||||||
|
dispatch('save');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Format code when Ctrl + Shift + F is pressed
|
||||||
|
if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'f') {
|
||||||
|
e.preventDefault();
|
||||||
|
await formatPythonCodeHandler();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
document.addEventListener('keydown', keydownHandler);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
observer.disconnect();
|
||||||
|
document.removeEventListener('keydown', keydownHandler);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="code-textarea" class="h-full w-full" />
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { onMount, createEventDispatcher } from 'svelte';
|
||||||
|
import { fade } from 'svelte/transition';
|
||||||
|
|
||||||
|
import { flyAndScale } from '$lib/utils/transitions';
|
||||||
|
|
||||||
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
|
export let title = 'Confirm your action';
|
||||||
|
export let message = 'This action cannot be undone. Do you wish to continue?';
|
||||||
|
|
||||||
|
export let show = false;
|
||||||
|
let modalElement = null;
|
||||||
|
let mounted = false;
|
||||||
|
|
||||||
|
const handleKeyDown = (event: KeyboardEvent) => {
|
||||||
|
if (event.key === 'Escape') {
|
||||||
|
console.log('Escape');
|
||||||
|
show = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
mounted = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
$: if (mounted) {
|
||||||
|
if (show) {
|
||||||
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
document.body.style.overflow = 'hidden';
|
||||||
|
} else {
|
||||||
|
window.removeEventListener('keydown', handleKeyDown);
|
||||||
|
document.body.style.overflow = 'unset';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if show}
|
||||||
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
||||||
|
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
||||||
|
<div
|
||||||
|
bind:this={modalElement}
|
||||||
|
class=" fixed top-0 right-0 left-0 bottom-0 bg-black/60 w-full min-h-screen h-screen flex justify-center z-[9999] overflow-hidden overscroll-contain"
|
||||||
|
in:fade={{ duration: 10 }}
|
||||||
|
on:mousedown={() => {
|
||||||
|
show = false;
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class=" m-auto rounded-2xl max-w-full w-[32rem] mx-2 bg-gray-50 dark:bg-gray-950 shadow-3xl border border-gray-850"
|
||||||
|
in:flyAndScale
|
||||||
|
on:mousedown={(e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div class="px-[1.75rem] py-6">
|
||||||
|
<div class=" text-lg font-semibold dark:text-gray-200 mb-2.5">{title}</div>
|
||||||
|
|
||||||
|
<slot>
|
||||||
|
<div class=" text-sm text-gray-500">
|
||||||
|
{message}
|
||||||
|
</div>
|
||||||
|
</slot>
|
||||||
|
|
||||||
|
<div class="mt-6 flex justify-between gap-1.5">
|
||||||
|
<button
|
||||||
|
class="bg-gray-100 hover:bg-gray-200 text-gray-800 dark:bg-gray-850 dark:hover:bg-gray-800 dark:text-white font-medium w-full py-2.5 rounded-lg transition"
|
||||||
|
on:click={() => {
|
||||||
|
show = false;
|
||||||
|
}}
|
||||||
|
type="button"
|
||||||
|
>
|
||||||
|
Cancel
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="bg-gray-900 hover:bg-gray-850 text-gray-100 dark:bg-gray-100 dark:hover:bg-white dark:text-gray-800 font-medium w-full py-2.5 rounded-lg transition"
|
||||||
|
on:click={() => {
|
||||||
|
show = false;
|
||||||
|
dispatch('confirm');
|
||||||
|
}}
|
||||||
|
type="button"
|
||||||
|
>
|
||||||
|
Confirm
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.modal-content {
|
||||||
|
animation: scaleUp 0.1s ease-out forwards;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes scaleUp {
|
||||||
|
from {
|
||||||
|
transform: scale(0.985);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: scale(1);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
export let saveHandler: Function;
|
export let saveHandler: Function;
|
||||||
|
|
||||||
let webConfig = null;
|
let webConfig = null;
|
||||||
let webSearchEngines = ['searxng', 'google_pse', 'brave', 'serpstack', 'serper'];
|
let webSearchEngines = ['searxng', 'google_pse', 'brave', 'serpstack', 'serper', 'serply'];
|
||||||
|
|
||||||
let youtubeLanguage = 'en';
|
let youtubeLanguage = 'en';
|
||||||
let youtubeTranslation = null;
|
let youtubeTranslation = null;
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
export let className = 'size-4';
|
||||||
|
export let strokeWidth = '2';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width={strokeWidth}
|
||||||
|
stroke="currentColor"
|
||||||
|
class={className}
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
export let className = 'size-4';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class={className}>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M12 6.75a5.25 5.25 0 0 1 6.775-5.025.75.75 0 0 1 .313 1.248l-3.32 3.319c.063.475.276.934.641 1.299.365.365.824.578 1.3.64l3.318-3.319a.75.75 0 0 1 1.248.313 5.25 5.25 0 0 1-5.472 6.756c-1.018-.086-1.87.1-2.309.634L7.344 21.3A3.298 3.298 0 1 1 2.7 16.657l8.684-7.151c.533-.44.72-1.291.634-2.309A5.342 5.342 0 0 1 12 6.75ZM4.117 19.125a.75.75 0 0 1 .75-.75h.008a.75.75 0 0 1 .75.75v.008a.75.75 0 0 1-.75.75h-.008a.75.75 0 0 1-.75-.75v-.008Z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
@@ -491,7 +491,7 @@
|
|||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class=" text-gray-500 text-xs mt-1">
|
<div class=" text-gray-500 text-xs mt-1 mb-2">
|
||||||
ⓘ {$i18n.t("Use '#' in the prompt input to load and select your documents.")}
|
ⓘ {$i18n.t("Use '#' in the prompt input to load and select your documents.")}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class=" text-xs dark:text-gray-500">
|
<div class=" text-xs dark:text-gray-500">
|
||||||
To add documents here, upload them to the "Documents" workspace first.
|
{$i18n.t('To add documents here, upload them to the "Documents" workspace first.')}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
@@ -97,7 +97,7 @@
|
|||||||
<Selector bind:knowledge>
|
<Selector bind:knowledge>
|
||||||
<button
|
<button
|
||||||
class=" px-3.5 py-1.5 font-medium hover:bg-black/5 dark:hover:bg-white/5 outline outline-1 outline-gray-300 dark:outline-gray-800 rounded-3xl"
|
class=" px-3.5 py-1.5 font-medium hover:bg-black/5 dark:hover:bg-white/5 outline outline-1 outline-gray-300 dark:outline-gray-800 rounded-3xl"
|
||||||
type="button">Select Documents</button
|
type="button">{$i18n.t('Select Documents')}</button
|
||||||
>
|
>
|
||||||
</Selector>
|
</Selector>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import Checkbox from '$lib/components/common/Checkbox.svelte';
|
||||||
|
import { getContext, onMount } from 'svelte';
|
||||||
|
|
||||||
|
export let tools = [];
|
||||||
|
|
||||||
|
let _tools = {};
|
||||||
|
|
||||||
|
export let selectedToolIds = [];
|
||||||
|
|
||||||
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
_tools = tools.reduce((acc, tool) => {
|
||||||
|
acc[tool.id] = {
|
||||||
|
...tool,
|
||||||
|
selected: selectedToolIds.includes(tool.id)
|
||||||
|
};
|
||||||
|
|
||||||
|
return acc;
|
||||||
|
}, {});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div class="flex w-full justify-between mb-1">
|
||||||
|
<div class=" self-center text-sm font-semibold">{$i18n.t('Tools')}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class=" text-xs dark:text-gray-500">
|
||||||
|
{$i18n.t('To select toolkits here, add them to the "Tools" workspace first.')}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-col">
|
||||||
|
{#if tools.length > 0}
|
||||||
|
<div class=" flex items-center gap-2 mt-2">
|
||||||
|
{#each Object.keys(_tools) as tool, toolIdx}
|
||||||
|
<div class=" flex items-center gap-2">
|
||||||
|
<div class="self-center flex items-center">
|
||||||
|
<Checkbox
|
||||||
|
state={_tools[tool].selected ? 'checked' : 'unchecked'}
|
||||||
|
on:change={(e) => {
|
||||||
|
_tools[tool].selected = e.detail === 'checked';
|
||||||
|
selectedToolIds = Object.keys(_tools).filter((t) => _tools[t].selected);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class=" py-0.5 text-sm w-full capitalize font-medium">
|
||||||
|
{_tools[tool].name}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,358 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { toast } from 'svelte-sonner';
|
||||||
|
import fileSaver from 'file-saver';
|
||||||
|
const { saveAs } = fileSaver;
|
||||||
|
|
||||||
|
import { onMount, getContext } from 'svelte';
|
||||||
|
import { WEBUI_NAME, prompts, tools } from '$lib/stores';
|
||||||
|
import { createNewPrompt, deletePromptByCommand, getPrompts } from '$lib/apis/prompts';
|
||||||
|
|
||||||
|
import { goto } from '$app/navigation';
|
||||||
|
import {
|
||||||
|
createNewTool,
|
||||||
|
deleteToolById,
|
||||||
|
exportTools,
|
||||||
|
getToolById,
|
||||||
|
getTools
|
||||||
|
} from '$lib/apis/tools';
|
||||||
|
import ArrowDownTray from '../icons/ArrowDownTray.svelte';
|
||||||
|
import Tooltip from '../common/Tooltip.svelte';
|
||||||
|
import ConfirmDialog from '../common/ConfirmDialog.svelte';
|
||||||
|
|
||||||
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
let toolsImportInputElement: HTMLInputElement;
|
||||||
|
let importFiles;
|
||||||
|
|
||||||
|
let showConfirm = false;
|
||||||
|
let query = '';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svelte:head>
|
||||||
|
<title>
|
||||||
|
{$i18n.t('Tools')} | {$WEBUI_NAME}
|
||||||
|
</title>
|
||||||
|
</svelte:head>
|
||||||
|
|
||||||
|
<div class="mb-3 flex justify-between items-center">
|
||||||
|
<div class=" text-lg font-semibold self-center">{$i18n.t('Tools')}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class=" flex w-full space-x-2">
|
||||||
|
<div class="flex flex-1">
|
||||||
|
<div class=" self-center ml-1 mr-3">
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
fill="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<input
|
||||||
|
class=" w-full text-sm pr-4 py-1 rounded-r-xl outline-none bg-transparent"
|
||||||
|
bind:value={query}
|
||||||
|
placeholder={$i18n.t('Search Tools')}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<a
|
||||||
|
class=" px-2 py-2 rounded-xl border border-gray-200 dark:border-gray-600 dark:border-0 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 transition font-medium text-sm flex items-center space-x-1"
|
||||||
|
href="/workspace/tools/create"
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
fill="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M8.75 3.75a.75.75 0 0 0-1.5 0v3.5h-3.5a.75.75 0 0 0 0 1.5h3.5v3.5a.75.75 0 0 0 1.5 0v-3.5h3.5a.75.75 0 0 0 0-1.5h-3.5v-3.5Z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr class=" dark:border-gray-850 my-2.5" />
|
||||||
|
|
||||||
|
<div class="my-3 mb-5">
|
||||||
|
{#each $tools.filter((t) => query === '' || t.name
|
||||||
|
.toLowerCase()
|
||||||
|
.includes(query.toLowerCase()) || t.id.toLowerCase().includes(query.toLowerCase())) as tool}
|
||||||
|
<button
|
||||||
|
class=" flex space-x-4 cursor-pointer w-full px-3 py-2 dark:hover:bg-white/5 hover:bg-black/5 rounded-xl"
|
||||||
|
type="button"
|
||||||
|
on:click={() => {
|
||||||
|
goto(`/workspace/tools/edit?id=${encodeURIComponent(tool.id)}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div class=" flex flex-1 space-x-4 cursor-pointer w-full">
|
||||||
|
<a
|
||||||
|
href={`/workspace/tools/edit?id=${encodeURIComponent(tool.id)}`}
|
||||||
|
class="flex items-center text-left"
|
||||||
|
>
|
||||||
|
<div class=" flex-1 self-center pl-5">
|
||||||
|
<div class=" font-semibold flex items-center gap-1.5">
|
||||||
|
<div>
|
||||||
|
{tool.name}
|
||||||
|
</div>
|
||||||
|
<div class=" text-gray-500 text-xs font-medium">{tool.id}</div>
|
||||||
|
</div>
|
||||||
|
<div class=" text-xs overflow-hidden text-ellipsis line-clamp-1">
|
||||||
|
{tool.meta.description}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-row space-x-1 self-center">
|
||||||
|
<Tooltip content="Edit">
|
||||||
|
<a
|
||||||
|
class="self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl"
|
||||||
|
type="button"
|
||||||
|
href={`/workspace/tools/edit?id=${encodeURIComponent(tool.id)}`}
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L6.832 19.82a4.5 4.5 0 01-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 011.13-1.897L16.863 4.487zm0 0L19.5 7.125"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</Tooltip>
|
||||||
|
|
||||||
|
<Tooltip content="Clone">
|
||||||
|
<button
|
||||||
|
class="self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl"
|
||||||
|
type="button"
|
||||||
|
on:click={async (e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
const _tool = await getToolById(localStorage.token, tool.id).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (_tool) {
|
||||||
|
sessionStorage.tool = JSON.stringify({
|
||||||
|
..._tool,
|
||||||
|
id: `${_tool.id}_clone`,
|
||||||
|
name: `${_tool.name} (Clone)`
|
||||||
|
});
|
||||||
|
goto('/workspace/tools/create');
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</Tooltip>
|
||||||
|
|
||||||
|
<Tooltip content="Export">
|
||||||
|
<button
|
||||||
|
class="self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl"
|
||||||
|
type="button"
|
||||||
|
on:click={async (e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
const _tool = await getToolById(localStorage.token, tool.id).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (_tool) {
|
||||||
|
let blob = new Blob([JSON.stringify([_tool])], {
|
||||||
|
type: 'application/json'
|
||||||
|
});
|
||||||
|
saveAs(blob, `tool-${_tool.id}-export-${Date.now()}.json`);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<ArrowDownTray />
|
||||||
|
</button>
|
||||||
|
</Tooltip>
|
||||||
|
|
||||||
|
<Tooltip content="Delete">
|
||||||
|
<button
|
||||||
|
class="self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl"
|
||||||
|
type="button"
|
||||||
|
on:click={async (e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
const res = await deleteToolById(localStorage.token, tool.id).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
toast.success('Tool deleted successfully');
|
||||||
|
tools.set(await getTools(localStorage.token));
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class=" text-gray-500 text-xs mt-1 mb-2">
|
||||||
|
ⓘ {$i18n.t(
|
||||||
|
'Admins have access to all tools at all times; users need tools assigned per model in the workspace.'
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class=" flex justify-end w-full mb-2">
|
||||||
|
<div class="flex space-x-2">
|
||||||
|
<input
|
||||||
|
id="documents-import-input"
|
||||||
|
bind:this={toolsImportInputElement}
|
||||||
|
bind:files={importFiles}
|
||||||
|
type="file"
|
||||||
|
accept=".json"
|
||||||
|
hidden
|
||||||
|
on:change={() => {
|
||||||
|
console.log(importFiles);
|
||||||
|
showConfirm = true;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 dark:text-gray-200 transition"
|
||||||
|
on:click={() => {
|
||||||
|
toolsImportInputElement.click();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div class=" self-center mr-2 font-medium">{$i18n.t('Import Tools')}</div>
|
||||||
|
|
||||||
|
<div class=" self-center">
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
fill="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M4 2a1.5 1.5 0 0 0-1.5 1.5v9A1.5 1.5 0 0 0 4 14h8a1.5 1.5 0 0 0 1.5-1.5V6.621a1.5 1.5 0 0 0-.44-1.06L9.94 2.439A1.5 1.5 0 0 0 8.878 2H4Zm4 9.5a.75.75 0 0 1-.75-.75V8.06l-.72.72a.75.75 0 0 1-1.06-1.06l2-2a.75.75 0 0 1 1.06 0l2 2a.75.75 0 1 1-1.06 1.06l-.72-.72v2.69a.75.75 0 0 1-.75.75Z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 dark:text-gray-200 transition"
|
||||||
|
on:click={async () => {
|
||||||
|
const _tools = await exportTools(localStorage.token).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (_tools) {
|
||||||
|
let blob = new Blob([JSON.stringify(_tools)], {
|
||||||
|
type: 'application/json'
|
||||||
|
});
|
||||||
|
saveAs(blob, `tools-export-${Date.now()}.json`);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div class=" self-center mr-2 font-medium">{$i18n.t('Export Tools')}</div>
|
||||||
|
|
||||||
|
<div class=" self-center">
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
fill="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M4 2a1.5 1.5 0 0 0-1.5 1.5v9A1.5 1.5 0 0 0 4 14h8a1.5 1.5 0 0 0 1.5-1.5V6.621a1.5 1.5 0 0 0-.44-1.06L9.94 2.439A1.5 1.5 0 0 0 8.878 2H4Zm4 3.5a.75.75 0 0 1 .75.75v2.69l.72-.72a.75.75 0 1 1 1.06 1.06l-2 2a.75.75 0 0 1-1.06 0l-2-2a.75.75 0 0 1 1.06-1.06l.72.72V6.25A.75.75 0 0 1 8 5.5Z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ConfirmDialog
|
||||||
|
bind:show={showConfirm}
|
||||||
|
on:confirm={() => {
|
||||||
|
const reader = new FileReader();
|
||||||
|
reader.onload = async (event) => {
|
||||||
|
const _tools = JSON.parse(event.target.result);
|
||||||
|
console.log(_tools);
|
||||||
|
|
||||||
|
for (const tool of _tools) {
|
||||||
|
const res = await createNewTool(localStorage.token, tool).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
toast.success('Tool imported successfully');
|
||||||
|
tools.set(await getTools(localStorage.token));
|
||||||
|
};
|
||||||
|
|
||||||
|
reader.readAsText(importFiles[0]);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div class="text-sm text-gray-500">
|
||||||
|
<div class=" bg-yellow-500/20 text-yellow-700 dark:text-yellow-200 rounded-lg px-4 py-3">
|
||||||
|
<div>Please carefully review the following warnings:</div>
|
||||||
|
|
||||||
|
<ul class=" mt-1 list-disc pl-4 text-xs">
|
||||||
|
<li>Tools have a function calling system that allows arbitrary code execution.</li>
|
||||||
|
<li>Do not install tools from sources you do not fully trust.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="my-3">
|
||||||
|
I acknowledge that I have read and I understand the implications of my action. I am aware of
|
||||||
|
the risks associated with executing arbitrary code and I have verified the trustworthiness of
|
||||||
|
the source.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ConfirmDialog>
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import CodeEditor from '$lib/components/common/CodeEditor.svelte';
|
||||||
|
import { createEventDispatcher } from 'svelte';
|
||||||
|
|
||||||
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
|
export let value = '';
|
||||||
|
|
||||||
|
let codeEditor;
|
||||||
|
let boilerplate = `import os
|
||||||
|
import requests
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
|
class Tools:
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Add your custom tools using pure Python code here, make sure to add type hints
|
||||||
|
# Use Sphinx-style docstrings to document your tools, they will be used for generating tools specifications
|
||||||
|
# Please refer to function_calling_filter_pipeline.py file from pipelines project for an example
|
||||||
|
|
||||||
|
def get_user_name_and_email_and_id(self, __user__: dict = {}) -> str:
|
||||||
|
"""
|
||||||
|
Get the user name, Email and ID from the user object.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Do not include :param for __user__ in the docstring as it should not be shown in the tool's specification
|
||||||
|
# The session user object will be passed as a parameter when the function is called
|
||||||
|
|
||||||
|
print(__user__)
|
||||||
|
result = ""
|
||||||
|
|
||||||
|
if "name" in __user__:
|
||||||
|
result += f"User: {__user__['name']}"
|
||||||
|
if "id" in __user__:
|
||||||
|
result += f" (ID: {__user__['id']})"
|
||||||
|
if "email" in __user__:
|
||||||
|
result += f" (Email: {__user__['email']})"
|
||||||
|
|
||||||
|
if result == "":
|
||||||
|
result = "User: Unknown"
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def get_current_time(self) -> str:
|
||||||
|
"""
|
||||||
|
Get the current time in a more human-readable format.
|
||||||
|
:return: The current time.
|
||||||
|
"""
|
||||||
|
|
||||||
|
now = datetime.now()
|
||||||
|
current_time = now.strftime("%I:%M:%S %p") # Using 12-hour format with AM/PM
|
||||||
|
current_date = now.strftime(
|
||||||
|
"%A, %B %d, %Y"
|
||||||
|
) # Full weekday, month name, day, and year
|
||||||
|
|
||||||
|
return f"Current Date and Time = {current_date}, {current_time}"
|
||||||
|
|
||||||
|
def calculator(self, equation: str) -> str:
|
||||||
|
"""
|
||||||
|
Calculate the result of an equation.
|
||||||
|
:param equation: The equation to calculate.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Avoid using eval in production code
|
||||||
|
# https://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html
|
||||||
|
try:
|
||||||
|
result = eval(equation)
|
||||||
|
return f"{equation} = {result}"
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
return "Invalid equation"
|
||||||
|
|
||||||
|
def get_current_weather(self, city: str) -> str:
|
||||||
|
"""
|
||||||
|
Get the current weather for a given city.
|
||||||
|
:param city: The name of the city to get the weather for.
|
||||||
|
:return: The current weather information or an error message.
|
||||||
|
"""
|
||||||
|
api_key = os.getenv("OPENWEATHER_API_KEY")
|
||||||
|
if not api_key:
|
||||||
|
return (
|
||||||
|
"API key is not set in the environment variable 'OPENWEATHER_API_KEY'."
|
||||||
|
)
|
||||||
|
|
||||||
|
base_url = "http://api.openweathermap.org/data/2.5/weather"
|
||||||
|
params = {
|
||||||
|
"q": city,
|
||||||
|
"appid": api_key,
|
||||||
|
"units": "metric", # Optional: Use 'imperial' for Fahrenheit
|
||||||
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = requests.get(base_url, params=params)
|
||||||
|
response.raise_for_status() # Raise HTTPError for bad responses (4xx and 5xx)
|
||||||
|
data = response.json()
|
||||||
|
|
||||||
|
if data.get("cod") != 200:
|
||||||
|
return f"Error fetching weather data: {data.get('message')}"
|
||||||
|
|
||||||
|
weather_description = data["weather"][0]["description"]
|
||||||
|
temperature = data["main"]["temp"]
|
||||||
|
humidity = data["main"]["humidity"]
|
||||||
|
wind_speed = data["wind"]["speed"]
|
||||||
|
|
||||||
|
return f"Weather in {city}: {temperature}°C"
|
||||||
|
except requests.RequestException as e:
|
||||||
|
return f"Error fetching weather data: {str(e)}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
export const formatHandler = async () => {
|
||||||
|
if (codeEditor) {
|
||||||
|
return await codeEditor.formatPythonCodeHandler();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<CodeEditor
|
||||||
|
bind:value
|
||||||
|
{boilerplate}
|
||||||
|
bind:this={codeEditor}
|
||||||
|
on:save={() => {
|
||||||
|
dispatch('save');
|
||||||
|
}}
|
||||||
|
/>
|
||||||
@@ -0,0 +1,179 @@
|
|||||||
|
<script>
|
||||||
|
import { getContext, createEventDispatcher, onMount } from 'svelte';
|
||||||
|
|
||||||
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
import CodeEditor from './CodeEditor.svelte';
|
||||||
|
import { goto } from '$app/navigation';
|
||||||
|
import ConfirmDialog from '$lib/components/common/ConfirmDialog.svelte';
|
||||||
|
|
||||||
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
|
let formElement = null;
|
||||||
|
let loading = false;
|
||||||
|
let showConfirm = false;
|
||||||
|
|
||||||
|
export let edit = false;
|
||||||
|
export let clone = false;
|
||||||
|
|
||||||
|
export let id = '';
|
||||||
|
export let name = '';
|
||||||
|
export let meta = {
|
||||||
|
description: ''
|
||||||
|
};
|
||||||
|
export let content = '';
|
||||||
|
|
||||||
|
$: if (name && !edit && !clone) {
|
||||||
|
id = name.replace(/\s+/g, '_').toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
let codeEditor;
|
||||||
|
|
||||||
|
const saveHandler = async () => {
|
||||||
|
loading = true;
|
||||||
|
dispatch('save', {
|
||||||
|
id,
|
||||||
|
name,
|
||||||
|
meta,
|
||||||
|
content
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const submitHandler = async () => {
|
||||||
|
if (codeEditor) {
|
||||||
|
const res = await codeEditor.formatHandler();
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
console.log('Code formatted successfully');
|
||||||
|
saveHandler();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class=" flex flex-col justify-between w-full overflow-y-auto h-full">
|
||||||
|
<div class="mx-auto w-full md:px-0 h-full">
|
||||||
|
<form
|
||||||
|
bind:this={formElement}
|
||||||
|
class=" flex flex-col max-h-[100dvh] h-full"
|
||||||
|
on:submit|preventDefault={() => {
|
||||||
|
if (edit) {
|
||||||
|
submitHandler();
|
||||||
|
} else {
|
||||||
|
showConfirm = true;
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div class="mb-2.5">
|
||||||
|
<button
|
||||||
|
class="flex space-x-1"
|
||||||
|
on:click={() => {
|
||||||
|
goto('/workspace/tools');
|
||||||
|
}}
|
||||||
|
type="button"
|
||||||
|
>
|
||||||
|
<div class=" self-center">
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
fill="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M17 10a.75.75 0 01-.75.75H5.612l4.158 3.96a.75.75 0 11-1.04 1.08l-5.5-5.25a.75.75 0 010-1.08l5.5-5.25a.75.75 0 111.04 1.08L5.612 9.25H16.25A.75.75 0 0117 10z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<div class=" self-center font-medium text-sm">{$i18n.t('Back')}</div>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-col flex-1 overflow-auto h-0 rounded-lg">
|
||||||
|
<div class="w-full mb-2 flex flex-col gap-1.5">
|
||||||
|
<div class="flex gap-2 w-full">
|
||||||
|
<input
|
||||||
|
class="w-full px-3 py-2 text-sm font-medium bg-gray-50 dark:bg-gray-850 dark:text-gray-200 rounded-lg outline-none"
|
||||||
|
type="text"
|
||||||
|
placeholder="Toolkit Name (e.g. My ToolKit)"
|
||||||
|
bind:value={name}
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
|
||||||
|
<input
|
||||||
|
class="w-full px-3 py-2 text-sm font-medium disabled:text-gray-300 dark:disabled:text-gray-700 bg-gray-50 dark:bg-gray-850 dark:text-gray-200 rounded-lg outline-none"
|
||||||
|
type="text"
|
||||||
|
placeholder="Toolkit ID (e.g. my_toolkit)"
|
||||||
|
bind:value={id}
|
||||||
|
required
|
||||||
|
disabled={edit}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<input
|
||||||
|
class="w-full px-3 py-2 text-sm font-medium bg-gray-50 dark:bg-gray-850 dark:text-gray-200 rounded-lg outline-none"
|
||||||
|
type="text"
|
||||||
|
placeholder="Toolkit Description (e.g. A toolkit for performing various operations)"
|
||||||
|
bind:value={meta.description}
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-2 flex-1 overflow-auto h-0 rounded-lg">
|
||||||
|
<CodeEditor
|
||||||
|
bind:value={content}
|
||||||
|
bind:this={codeEditor}
|
||||||
|
on:save={() => {
|
||||||
|
if (formElement) {
|
||||||
|
formElement.requestSubmit();
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pb-3 flex justify-between">
|
||||||
|
<div class="flex-1 pr-3">
|
||||||
|
<div class="text-xs text-gray-500 line-clamp-2">
|
||||||
|
<span class=" font-semibold dark:text-gray-200">Warning:</span> Tools are a function
|
||||||
|
calling system with arbitrary code execution <br />—
|
||||||
|
<span class=" font-medium dark:text-gray-400"
|
||||||
|
>don't install random tools from sources you don't trust.</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="px-3 py-1.5 text-sm font-medium bg-emerald-600 hover:bg-emerald-700 text-gray-50 transition rounded-lg"
|
||||||
|
type="submit"
|
||||||
|
>
|
||||||
|
{$i18n.t('Save')}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ConfirmDialog
|
||||||
|
bind:show={showConfirm}
|
||||||
|
on:confirm={() => {
|
||||||
|
submitHandler();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div class="text-sm text-gray-500">
|
||||||
|
<div class=" bg-yellow-500/20 text-yellow-700 dark:text-yellow-200 rounded-lg px-4 py-3">
|
||||||
|
<div>Please carefully review the following warnings:</div>
|
||||||
|
|
||||||
|
<ul class=" mt-1 list-disc pl-4 text-xs">
|
||||||
|
<li>Tools have a function calling system that allows arbitrary code execution.</li>
|
||||||
|
<li>Do not install tools from sources you do not fully trust.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="my-3">
|
||||||
|
I acknowledge that I have read and I understand the implications of my action. I am aware of
|
||||||
|
the risks associated with executing arbitrary code and I have verified the trustworthiness of
|
||||||
|
the source.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ConfirmDialog>
|
||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "لوحة التحكم",
|
"Admin Panel": "لوحة التحكم",
|
||||||
"Admin Settings": "اعدادات المشرف",
|
"Admin Settings": "اعدادات المشرف",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "التعليمات المتقدمة",
|
"Advanced Parameters": "التعليمات المتقدمة",
|
||||||
"Advanced Params": "المعلمات المتقدمة",
|
"Advanced Params": "المعلمات المتقدمة",
|
||||||
"all": "الكل",
|
"all": "الكل",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "أدخل النتيجة",
|
"Enter Score": "أدخل النتيجة",
|
||||||
"Enter Searxng Query URL": "أدخل عنوان URL لاستعلام Searxng",
|
"Enter Searxng Query URL": "أدخل عنوان URL لاستعلام Searxng",
|
||||||
"Enter Serper API Key": "أدخل مفتاح واجهة برمجة تطبيقات Serper",
|
"Enter Serper API Key": "أدخل مفتاح واجهة برمجة تطبيقات Serper",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "أدخل مفتاح واجهة برمجة تطبيقات Serpstack",
|
"Enter Serpstack API Key": "أدخل مفتاح واجهة برمجة تطبيقات Serpstack",
|
||||||
"Enter stop sequence": "أدخل تسلسل التوقف",
|
"Enter stop sequence": "أدخل تسلسل التوقف",
|
||||||
"Enter Top K": "أدخل Top K",
|
"Enter Top K": "أدخل Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "تصدير وثائق الخرائط",
|
"Export Documents Mapping": "تصدير وثائق الخرائط",
|
||||||
"Export Models": "نماذج التصدير",
|
"Export Models": "نماذج التصدير",
|
||||||
"Export Prompts": "مطالبات التصدير",
|
"Export Prompts": "مطالبات التصدير",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "فشل في إنشاء مفتاح API.",
|
"Failed to create API Key.": "فشل في إنشاء مفتاح API.",
|
||||||
"Failed to read clipboard contents": "فشل في قراءة محتويات الحافظة",
|
"Failed to read clipboard contents": "فشل في قراءة محتويات الحافظة",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "استيراد خرائط المستندات",
|
"Import Documents Mapping": "استيراد خرائط المستندات",
|
||||||
"Import Models": "استيراد النماذج",
|
"Import Models": "استيراد النماذج",
|
||||||
"Import Prompts": "مطالبات الاستيراد",
|
"Import Prompts": "مطالبات الاستيراد",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "قم بتضمين علامة `-api` عند تشغيل Stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "قم بتضمين علامة `-api` عند تشغيل Stable-diffusion-webui",
|
||||||
"Info": "معلومات",
|
"Info": "معلومات",
|
||||||
"Input commands": "إدخال الأوامر",
|
"Input commands": "إدخال الأوامر",
|
||||||
@@ -419,13 +423,14 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "عدد نتائج البحث",
|
"Search Result Count": "عدد نتائج البحث",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_zero": "تم البحث في {{count}} sites_zero",
|
"Searched {{count}} sites_zero": "تم البحث في {{count}} sites_zero",
|
||||||
"Searched {{count}} sites_one": "تم البحث في {{count}} sites_one",
|
"Searched {{count}} sites_one": "تم البحث في {{count}} sites_one",
|
||||||
"Searched {{count}} sites_two": "تم البحث في {{count}} sites_two",
|
"Searched {{count}} sites_two": "تم البحث في {{count}} sites_two",
|
||||||
"Searched {{count}} sites_few": "تم البحث في {{count}} sites_few",
|
"Searched {{count}} sites_few": "تم البحث في {{count}} sites_few",
|
||||||
"Searched {{count}} sites_many": "تم البحث في {{count}} sites_many",
|
"Searched {{count}} sites_many": "تم البحث في {{count}} sites_many",
|
||||||
"Searched {{count}} sites_other": "تم البحث في {{count}} sites_other",
|
"Searched {{count}} sites_other": "تم البحث في {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "البحث في الويب عن \"{{searchQuery}}\"",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "عنوان URL لاستعلام Searxng",
|
"Searxng Query URL": "عنوان URL لاستعلام Searxng",
|
||||||
"See readme.md for instructions": "readme.md للحصول على التعليمات",
|
"See readme.md for instructions": "readme.md للحصول على التعليمات",
|
||||||
"See what's new": "ما الجديد",
|
"See what's new": "ما الجديد",
|
||||||
@@ -437,6 +442,7 @@
|
|||||||
"Select a pipeline": "حدد مسارا",
|
"Select a pipeline": "حدد مسارا",
|
||||||
"Select a pipeline url": "حدد عنوان URL لخط الأنابيب",
|
"Select a pipeline url": "حدد عنوان URL لخط الأنابيب",
|
||||||
"Select an Ollama instance": "أختار سيرفر ",
|
"Select an Ollama instance": "أختار سيرفر ",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": " أختار موديل",
|
"Select model": " أختار موديل",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "النموذج (النماذج) المحددة لا تدعم مدخلات الصور",
|
"Selected model(s) do not support image inputs": "النموذج (النماذج) المحددة لا تدعم مدخلات الصور",
|
||||||
@@ -445,6 +451,7 @@
|
|||||||
"Send message": "يُرجى إدخال طلبك هنا.",
|
"Send message": "يُرجى إدخال طلبك هنا.",
|
||||||
"September": "سبتمبر",
|
"September": "سبتمبر",
|
||||||
"Serper API Key": "مفتاح واجهة برمجة تطبيقات سيربر",
|
"Serper API Key": "مفتاح واجهة برمجة تطبيقات سيربر",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "مفتاح واجهة برمجة تطبيقات Serpstack",
|
"Serpstack API Key": "مفتاح واجهة برمجة تطبيقات Serpstack",
|
||||||
"Server connection verified": "تم التحقق من اتصال الخادم",
|
"Server connection verified": "تم التحقق من اتصال الخادم",
|
||||||
"Set as default": "الافتراضي",
|
"Set as default": "الافتراضي",
|
||||||
@@ -509,10 +516,13 @@
|
|||||||
"To access the available model names for downloading,": "للوصول إلى أسماء الموديلات المتاحة للتنزيل،",
|
"To access the available model names for downloading,": "للوصول إلى أسماء الموديلات المتاحة للتنزيل،",
|
||||||
"To access the GGUF models available for downloading,": "للوصول إلى الموديلات GGUF المتاحة للتنزيل،",
|
"To access the GGUF models available for downloading,": "للوصول إلى الموديلات GGUF المتاحة للتنزيل،",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "الى كتابة المحادثه",
|
"to chat input.": "الى كتابة المحادثه",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "اليوم",
|
"Today": "اليوم",
|
||||||
"Toggle settings": "فتح وأغلاق الاعدادات",
|
"Toggle settings": "فتح وأغلاق الاعدادات",
|
||||||
"Toggle sidebar": "فتح وأغلاق الشريط الجانبي",
|
"Toggle sidebar": "فتح وأغلاق الشريط الجانبي",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "هل تواجه مشكلة في الوصول",
|
"Trouble accessing Ollama?": "هل تواجه مشكلة في الوصول",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Панел на Администратор",
|
"Admin Panel": "Панел на Администратор",
|
||||||
"Admin Settings": "Настройки на Администратор",
|
"Admin Settings": "Настройки на Администратор",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Разширени Параметри",
|
"Advanced Parameters": "Разширени Параметри",
|
||||||
"Advanced Params": "Разширени параметри",
|
"Advanced Params": "Разширени параметри",
|
||||||
"all": "всички",
|
"all": "всички",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Въведете оценка",
|
"Enter Score": "Въведете оценка",
|
||||||
"Enter Searxng Query URL": "Въведете URL адреса на заявката на Searxng",
|
"Enter Searxng Query URL": "Въведете URL адреса на заявката на Searxng",
|
||||||
"Enter Serper API Key": "Въведете Serper API ключ",
|
"Enter Serper API Key": "Въведете Serper API ключ",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Въведете Serpstack API ключ",
|
"Enter Serpstack API Key": "Въведете Serpstack API ключ",
|
||||||
"Enter stop sequence": "Въведете стоп последователност",
|
"Enter stop sequence": "Въведете стоп последователност",
|
||||||
"Enter Top K": "Въведете Top K",
|
"Enter Top K": "Въведете Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Експортване на документен мапинг",
|
"Export Documents Mapping": "Експортване на документен мапинг",
|
||||||
"Export Models": "Експортиране на модели",
|
"Export Models": "Експортиране на модели",
|
||||||
"Export Prompts": "Експортване на промптове",
|
"Export Prompts": "Експортване на промптове",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Неуспешно създаване на API ключ.",
|
"Failed to create API Key.": "Неуспешно създаване на API ключ.",
|
||||||
"Failed to read clipboard contents": "Грешка при четене на съдържанието от клипборда",
|
"Failed to read clipboard contents": "Грешка при четене на съдържанието от клипборда",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Импортване на документен мапинг",
|
"Import Documents Mapping": "Импортване на документен мапинг",
|
||||||
"Import Models": "Импортиране на модели",
|
"Import Models": "Импортиране на модели",
|
||||||
"Import Prompts": "Импортване на промптове",
|
"Import Prompts": "Импортване на промптове",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Включете флага `--api`, когато стартирате stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Включете флага `--api`, когато стартирате stable-diffusion-webui",
|
||||||
"Info": "Информация",
|
"Info": "Информация",
|
||||||
"Input commands": "Въведете команди",
|
"Input commands": "Въведете команди",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Брой резултати от търсенето",
|
"Search Result Count": "Брой резултати от търсенето",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Търси се в {{count}} sites_one",
|
"Searched {{count}} sites_one": "Търси се в {{count}} sites_one",
|
||||||
"Searched {{count}} sites_other": "Търси се в {{count}} sites_other",
|
"Searched {{count}} sites_other": "Търси се в {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Търсене в уеб за '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "URL адрес на заявка на Searxng",
|
"Searxng Query URL": "URL адрес на заявка на Searxng",
|
||||||
"See readme.md for instructions": "Виж readme.md за инструкции",
|
"See readme.md for instructions": "Виж readme.md за инструкции",
|
||||||
"See what's new": "Виж какво е новото",
|
"See what's new": "Виж какво е новото",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "Изберете тръбопровод",
|
"Select a pipeline": "Изберете тръбопровод",
|
||||||
"Select a pipeline url": "Избор на URL адрес на канал",
|
"Select a pipeline url": "Избор на URL адрес на канал",
|
||||||
"Select an Ollama instance": "Изберете Ollama инстанция",
|
"Select an Ollama instance": "Изберете Ollama инстанция",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Изберете модел",
|
"Select model": "Изберете модел",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Избраният(те) модел(и) не поддържа въвеждане на изображения",
|
"Selected model(s) do not support image inputs": "Избраният(те) модел(и) не поддържа въвеждане на изображения",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "Изпращане на съобщение",
|
"Send message": "Изпращане на съобщение",
|
||||||
"September": "Септември",
|
"September": "Септември",
|
||||||
"Serper API Key": "Serper API ключ",
|
"Serper API Key": "Serper API ключ",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API ключ",
|
"Serpstack API Key": "Serpstack API ключ",
|
||||||
"Server connection verified": "Server connection verified",
|
"Server connection verified": "Server connection verified",
|
||||||
"Set as default": "Задай по подразбиране",
|
"Set as default": "Задай по подразбиране",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "За да получите достъп до наличните имена на модели за изтегляне,",
|
"To access the available model names for downloading,": "За да получите достъп до наличните имена на модели за изтегляне,",
|
||||||
"To access the GGUF models available for downloading,": "За да получите достъп до GGUF моделите, налични за изтегляне,",
|
"To access the GGUF models available for downloading,": "За да получите достъп до GGUF моделите, налични за изтегляне,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "към чат входа.",
|
"to chat input.": "към чат входа.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "днес",
|
"Today": "днес",
|
||||||
"Toggle settings": "Toggle settings",
|
"Toggle settings": "Toggle settings",
|
||||||
"Toggle sidebar": "Toggle sidebar",
|
"Toggle sidebar": "Toggle sidebar",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Проблеми с достъпът до Ollama?",
|
"Trouble accessing Ollama?": "Проблеми с достъпът до Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "এডমিন প্যানেল",
|
"Admin Panel": "এডমিন প্যানেল",
|
||||||
"Admin Settings": "এডমিন সেটিংস",
|
"Admin Settings": "এডমিন সেটিংস",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "এডভান্সড প্যারামিটার্স",
|
"Advanced Parameters": "এডভান্সড প্যারামিটার্স",
|
||||||
"Advanced Params": "অ্যাডভান্সড প্যারাম",
|
"Advanced Params": "অ্যাডভান্সড প্যারাম",
|
||||||
"all": "সব",
|
"all": "সব",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "স্কোর দিন",
|
"Enter Score": "স্কোর দিন",
|
||||||
"Enter Searxng Query URL": "Searxng ক্যোয়ারী URL লিখুন",
|
"Enter Searxng Query URL": "Searxng ক্যোয়ারী URL লিখুন",
|
||||||
"Enter Serper API Key": "Serper API কী লিখুন",
|
"Enter Serper API Key": "Serper API কী লিখুন",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Serpstack API কী লিখুন",
|
"Enter Serpstack API Key": "Serpstack API কী লিখুন",
|
||||||
"Enter stop sequence": "স্টপ সিকোয়েন্স লিখুন",
|
"Enter stop sequence": "স্টপ সিকোয়েন্স লিখুন",
|
||||||
"Enter Top K": "Top K লিখুন",
|
"Enter Top K": "Top K লিখুন",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "ডকুমেন্টসমূহ ম্যাপিং এক্সপোর্ট করুন",
|
"Export Documents Mapping": "ডকুমেন্টসমূহ ম্যাপিং এক্সপোর্ট করুন",
|
||||||
"Export Models": "রপ্তানি মডেল",
|
"Export Models": "রপ্তানি মডেল",
|
||||||
"Export Prompts": "প্রম্পটগুলো একপোর্ট করুন",
|
"Export Prompts": "প্রম্পটগুলো একপোর্ট করুন",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "API Key তৈরি করা যায়নি।",
|
"Failed to create API Key.": "API Key তৈরি করা যায়নি।",
|
||||||
"Failed to read clipboard contents": "ক্লিপবোর্ডের বিষয়বস্তু পড়া সম্ভব হয়নি",
|
"Failed to read clipboard contents": "ক্লিপবোর্ডের বিষয়বস্তু পড়া সম্ভব হয়নি",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "ডকুমেন্টসমূহ ম্যাপিং ইমপোর্ট করুন",
|
"Import Documents Mapping": "ডকুমেন্টসমূহ ম্যাপিং ইমপোর্ট করুন",
|
||||||
"Import Models": "মডেল আমদানি করুন",
|
"Import Models": "মডেল আমদানি করুন",
|
||||||
"Import Prompts": "প্রম্পটগুলো ইমপোর্ট করুন",
|
"Import Prompts": "প্রম্পটগুলো ইমপোর্ট করুন",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui চালু করার সময় `--api` ফ্ল্যাগ সংযুক্ত করুন",
|
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui চালু করার সময় `--api` ফ্ল্যাগ সংযুক্ত করুন",
|
||||||
"Info": "তথ্য",
|
"Info": "তথ্য",
|
||||||
"Input commands": "ইনপুট কমান্ডস",
|
"Input commands": "ইনপুট কমান্ডস",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "অনুসন্ধানের ফলাফল গণনা",
|
"Search Result Count": "অনুসন্ধানের ফলাফল গণনা",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "{{কাউন্ট}} অনুসন্ধান করা হয়েছে sites_one",
|
"Searched {{count}} sites_one": "{{কাউন্ট}} অনুসন্ধান করা হয়েছে sites_one",
|
||||||
"Searched {{count}} sites_other": "{{কাউন্ট}} অনুসন্ধান করা হয়েছে sites_other",
|
"Searched {{count}} sites_other": "{{কাউন্ট}} অনুসন্ধান করা হয়েছে sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "'{{searchQuery}}' এর জন্য ওয়েবে অনুসন্ধান করা হচ্ছে",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng ক্যোয়ারী URL",
|
"Searxng Query URL": "Searxng ক্যোয়ারী URL",
|
||||||
"See readme.md for instructions": "নির্দেশিকার জন্য readme.md দেখুন",
|
"See readme.md for instructions": "নির্দেশিকার জন্য readme.md দেখুন",
|
||||||
"See what's new": "নতুন কী আছে দেখুন",
|
"See what's new": "নতুন কী আছে দেখুন",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "একটি পাইপলাইন নির্বাচন করুন",
|
"Select a pipeline": "একটি পাইপলাইন নির্বাচন করুন",
|
||||||
"Select a pipeline url": "একটি পাইপলাইন URL নির্বাচন করুন",
|
"Select a pipeline url": "একটি পাইপলাইন URL নির্বাচন করুন",
|
||||||
"Select an Ollama instance": "একটি Ollama ইন্সট্যান্স নির্বাচন করুন",
|
"Select an Ollama instance": "একটি Ollama ইন্সট্যান্স নির্বাচন করুন",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "মডেল নির্বাচন করুন",
|
"Select model": "মডেল নির্বাচন করুন",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "নির্বাচিত মডেল(গুলি) চিত্র ইনপুট সমর্থন করে না",
|
"Selected model(s) do not support image inputs": "নির্বাচিত মডেল(গুলি) চিত্র ইনপুট সমর্থন করে না",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "মেসেজ পাঠান",
|
"Send message": "মেসেজ পাঠান",
|
||||||
"September": "সেপ্টেম্বর",
|
"September": "সেপ্টেম্বর",
|
||||||
"Serper API Key": "Serper API Key",
|
"Serper API Key": "Serper API Key",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API Key",
|
"Serpstack API Key": "Serpstack API Key",
|
||||||
"Server connection verified": "সার্ভার কানেকশন যাচাই করা হয়েছে",
|
"Server connection verified": "সার্ভার কানেকশন যাচাই করা হয়েছে",
|
||||||
"Set as default": "ডিফল্ট হিসেবে নির্ধারণ করুন",
|
"Set as default": "ডিফল্ট হিসেবে নির্ধারণ করুন",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "ডাউনলোডের জন্য এভেইলএবল মডেলের নামগুলো এক্সেস করতে,",
|
"To access the available model names for downloading,": "ডাউনলোডের জন্য এভেইলএবল মডেলের নামগুলো এক্সেস করতে,",
|
||||||
"To access the GGUF models available for downloading,": "ডাউলোডের জন্য এভেইলএবল GGUF মডেলগুলো এক্সেস করতে,",
|
"To access the GGUF models available for downloading,": "ডাউলোডের জন্য এভেইলএবল GGUF মডেলগুলো এক্সেস করতে,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "চ্যাট ইনপুটে",
|
"to chat input.": "চ্যাট ইনপুটে",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "আজ",
|
"Today": "আজ",
|
||||||
"Toggle settings": "সেটিংস টোগল",
|
"Toggle settings": "সেটিংস টোগল",
|
||||||
"Toggle sidebar": "সাইডবার টোগল",
|
"Toggle sidebar": "সাইডবার টোগল",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Ollama এক্সেস করতে সমস্যা হচ্ছে?",
|
"Trouble accessing Ollama?": "Ollama এক্সেস করতে সমস্যা হচ্ছে?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Panell d'Administració",
|
"Admin Panel": "Panell d'Administració",
|
||||||
"Admin Settings": "Configuració d'Administració",
|
"Admin Settings": "Configuració d'Administració",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Paràmetres Avançats",
|
"Advanced Parameters": "Paràmetres Avançats",
|
||||||
"Advanced Params": "Paràmetres avançats",
|
"Advanced Params": "Paràmetres avançats",
|
||||||
"all": "tots",
|
"all": "tots",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Introdueix el Puntuació",
|
"Enter Score": "Introdueix el Puntuació",
|
||||||
"Enter Searxng Query URL": "Introduïu l'URL de consulta de Searxng",
|
"Enter Searxng Query URL": "Introduïu l'URL de consulta de Searxng",
|
||||||
"Enter Serper API Key": "Introduïu la clau de l'API Serper",
|
"Enter Serper API Key": "Introduïu la clau de l'API Serper",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Introduïu la clau de l'API Serpstack",
|
"Enter Serpstack API Key": "Introduïu la clau de l'API Serpstack",
|
||||||
"Enter stop sequence": "Introdueix la seqüència de parada",
|
"Enter stop sequence": "Introdueix la seqüència de parada",
|
||||||
"Enter Top K": "Introdueix Top K",
|
"Enter Top K": "Introdueix Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Exporta el Mapatge de Documents",
|
"Export Documents Mapping": "Exporta el Mapatge de Documents",
|
||||||
"Export Models": "Models d'exportació",
|
"Export Models": "Models d'exportació",
|
||||||
"Export Prompts": "Exporta Prompts",
|
"Export Prompts": "Exporta Prompts",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "No s'ha pogut crear la clau d'API.",
|
"Failed to create API Key.": "No s'ha pogut crear la clau d'API.",
|
||||||
"Failed to read clipboard contents": "No s'ha pogut llegir el contingut del porta-retalls",
|
"Failed to read clipboard contents": "No s'ha pogut llegir el contingut del porta-retalls",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Importa el Mapa de Documents",
|
"Import Documents Mapping": "Importa el Mapa de Documents",
|
||||||
"Import Models": "Models d'importació",
|
"Import Models": "Models d'importació",
|
||||||
"Import Prompts": "Importa Prompts",
|
"Import Prompts": "Importa Prompts",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Inclou la bandera `--api` quan executis stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Inclou la bandera `--api` quan executis stable-diffusion-webui",
|
||||||
"Info": "Informació",
|
"Info": "Informació",
|
||||||
"Input commands": "Entra ordres",
|
"Input commands": "Entra ordres",
|
||||||
@@ -419,10 +423,11 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Recompte de resultats de cerca",
|
"Search Result Count": "Recompte de resultats de cerca",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Cercat {{count}} sites_one",
|
"Searched {{count}} sites_one": "Cercat {{count}} sites_one",
|
||||||
"Searched {{count}} sites_many": "Cercat {{recompte}} sites_many",
|
"Searched {{count}} sites_many": "Cercat {{recompte}} sites_many",
|
||||||
"Searched {{count}} sites_other": "Cercat {{recompte}} sites_other",
|
"Searched {{count}} sites_other": "Cercat {{recompte}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Cerca a la web de '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng URL de consulta",
|
"Searxng Query URL": "Searxng URL de consulta",
|
||||||
"See readme.md for instructions": "Consulta el readme.md per a instruccions",
|
"See readme.md for instructions": "Consulta el readme.md per a instruccions",
|
||||||
"See what's new": "Veure novetats",
|
"See what's new": "Veure novetats",
|
||||||
@@ -434,6 +439,7 @@
|
|||||||
"Select a pipeline": "Seleccioneu una canonada",
|
"Select a pipeline": "Seleccioneu una canonada",
|
||||||
"Select a pipeline url": "Seleccionar un URL de canonada",
|
"Select a pipeline url": "Seleccionar un URL de canonada",
|
||||||
"Select an Ollama instance": "Selecciona una instància d'Ollama",
|
"Select an Ollama instance": "Selecciona una instància d'Ollama",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Selecciona un model",
|
"Select model": "Selecciona un model",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Els models seleccionats no admeten l'entrada d'imatges",
|
"Selected model(s) do not support image inputs": "Els models seleccionats no admeten l'entrada d'imatges",
|
||||||
@@ -442,6 +448,7 @@
|
|||||||
"Send message": "Envia missatge",
|
"Send message": "Envia missatge",
|
||||||
"September": "Setembre",
|
"September": "Setembre",
|
||||||
"Serper API Key": "Clau API Serper",
|
"Serper API Key": "Clau API Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API Key",
|
"Serpstack API Key": "Serpstack API Key",
|
||||||
"Server connection verified": "Connexió al servidor verificada",
|
"Server connection verified": "Connexió al servidor verificada",
|
||||||
"Set as default": "Estableix com a predeterminat",
|
"Set as default": "Estableix com a predeterminat",
|
||||||
@@ -506,10 +513,13 @@
|
|||||||
"To access the available model names for downloading,": "Per accedir als noms dels models disponibles per descarregar,",
|
"To access the available model names for downloading,": "Per accedir als noms dels models disponibles per descarregar,",
|
||||||
"To access the GGUF models available for downloading,": "Per accedir als models GGUF disponibles per descarregar,",
|
"To access the GGUF models available for downloading,": "Per accedir als models GGUF disponibles per descarregar,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "a l'entrada del xat.",
|
"to chat input.": "a l'entrada del xat.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Avui",
|
"Today": "Avui",
|
||||||
"Toggle settings": "Commuta configuracions",
|
"Toggle settings": "Commuta configuracions",
|
||||||
"Toggle sidebar": "Commuta barra lateral",
|
"Toggle sidebar": "Commuta barra lateral",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Problemes accedint a Ollama?",
|
"Trouble accessing Ollama?": "Problemes accedint a Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Admin Panel",
|
"Admin Panel": "Admin Panel",
|
||||||
"Admin Settings": "Mga setting sa administratibo",
|
"Admin Settings": "Mga setting sa administratibo",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "advanced settings",
|
"Advanced Parameters": "advanced settings",
|
||||||
"Advanced Params": "",
|
"Advanced Params": "",
|
||||||
"all": "tanan",
|
"all": "tanan",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "",
|
"Enter Score": "",
|
||||||
"Enter Searxng Query URL": "",
|
"Enter Searxng Query URL": "",
|
||||||
"Enter Serper API Key": "",
|
"Enter Serper API Key": "",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "",
|
"Enter Serpstack API Key": "",
|
||||||
"Enter stop sequence": "Pagsulod sa katapusan nga han-ay",
|
"Enter stop sequence": "Pagsulod sa katapusan nga han-ay",
|
||||||
"Enter Top K": "Pagsulod sa Top K",
|
"Enter Top K": "Pagsulod sa Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "I-export ang pagmapa sa dokumento",
|
"Export Documents Mapping": "I-export ang pagmapa sa dokumento",
|
||||||
"Export Models": "",
|
"Export Models": "",
|
||||||
"Export Prompts": "Export prompts",
|
"Export Prompts": "Export prompts",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "",
|
"Failed to create API Key.": "",
|
||||||
"Failed to read clipboard contents": "Napakyas sa pagbasa sa sulod sa clipboard",
|
"Failed to read clipboard contents": "Napakyas sa pagbasa sa sulod sa clipboard",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Import nga pagmapa sa dokumento",
|
"Import Documents Mapping": "Import nga pagmapa sa dokumento",
|
||||||
"Import Models": "",
|
"Import Models": "",
|
||||||
"Import Prompts": "Import prompt",
|
"Import Prompts": "Import prompt",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Iapil ang `--api` nga bandila kung nagdagan nga stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Iapil ang `--api` nga bandila kung nagdagan nga stable-diffusion-webui",
|
||||||
"Info": "",
|
"Info": "",
|
||||||
"Input commands": "Pagsulod sa input commands",
|
"Input commands": "Pagsulod sa input commands",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "",
|
"Search Result Count": "",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "",
|
"Searched {{count}} sites_one": "",
|
||||||
"Searched {{count}} sites_other": "",
|
"Searched {{count}} sites_other": "",
|
||||||
"Searching the web for '{{searchQuery}}'": "",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "",
|
"Searxng Query URL": "",
|
||||||
"See readme.md for instructions": "Tan-awa ang readme.md alang sa mga panudlo",
|
"See readme.md for instructions": "Tan-awa ang readme.md alang sa mga panudlo",
|
||||||
"See what's new": "Tan-awa unsay bag-o",
|
"See what's new": "Tan-awa unsay bag-o",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "",
|
"Select a pipeline": "",
|
||||||
"Select a pipeline url": "",
|
"Select a pipeline url": "",
|
||||||
"Select an Ollama instance": "Pagpili usa ka pananglitan sa Ollama",
|
"Select an Ollama instance": "Pagpili usa ka pananglitan sa Ollama",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Pagpili og modelo",
|
"Select model": "Pagpili og modelo",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "",
|
"Selected model(s) do not support image inputs": "",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "Magpadala ug mensahe",
|
"Send message": "Magpadala ug mensahe",
|
||||||
"September": "",
|
"September": "",
|
||||||
"Serper API Key": "",
|
"Serper API Key": "",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "",
|
"Serpstack API Key": "",
|
||||||
"Server connection verified": "Gipamatud-an nga koneksyon sa server",
|
"Server connection verified": "Gipamatud-an nga koneksyon sa server",
|
||||||
"Set as default": "Define pinaagi sa default",
|
"Set as default": "Define pinaagi sa default",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "Aron ma-access ang mga ngalan sa modelo nga ma-download,",
|
"To access the available model names for downloading,": "Aron ma-access ang mga ngalan sa modelo nga ma-download,",
|
||||||
"To access the GGUF models available for downloading,": "Aron ma-access ang mga modelo sa GGUF nga magamit alang sa pag-download,",
|
"To access the GGUF models available for downloading,": "Aron ma-access ang mga modelo sa GGUF nga magamit alang sa pag-download,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "sa entrada sa iring.",
|
"to chat input.": "sa entrada sa iring.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "",
|
"Today": "",
|
||||||
"Toggle settings": "I-toggle ang mga setting",
|
"Toggle settings": "I-toggle ang mga setting",
|
||||||
"Toggle sidebar": "I-toggle ang sidebar",
|
"Toggle sidebar": "I-toggle ang sidebar",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Ibabaw nga P",
|
"Top P": "Ibabaw nga P",
|
||||||
"Trouble accessing Ollama?": "Adunay mga problema sa pag-access sa Ollama?",
|
"Trouble accessing Ollama?": "Adunay mga problema sa pag-access sa Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Admin Panel",
|
"Admin Panel": "Admin Panel",
|
||||||
"Admin Settings": "Admin Einstellungen",
|
"Admin Settings": "Admin Einstellungen",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Erweiterte Parameter",
|
"Advanced Parameters": "Erweiterte Parameter",
|
||||||
"Advanced Params": "Erweiterte Parameter",
|
"Advanced Params": "Erweiterte Parameter",
|
||||||
"all": "Alle",
|
"all": "Alle",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Score eingeben",
|
"Enter Score": "Score eingeben",
|
||||||
"Enter Searxng Query URL": "Geben Sie die Searxng-Abfrage-URL ein",
|
"Enter Searxng Query URL": "Geben Sie die Searxng-Abfrage-URL ein",
|
||||||
"Enter Serper API Key": "Serper-API-Schlüssel eingeben",
|
"Enter Serper API Key": "Serper-API-Schlüssel eingeben",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Geben Sie den Serpstack-API-Schlüssel ein",
|
"Enter Serpstack API Key": "Geben Sie den Serpstack-API-Schlüssel ein",
|
||||||
"Enter stop sequence": "Stop-Sequenz eingeben",
|
"Enter stop sequence": "Stop-Sequenz eingeben",
|
||||||
"Enter Top K": "Gib Top K ein",
|
"Enter Top K": "Gib Top K ein",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Dokumentenmapping exportieren",
|
"Export Documents Mapping": "Dokumentenmapping exportieren",
|
||||||
"Export Models": "Modelle exportieren",
|
"Export Models": "Modelle exportieren",
|
||||||
"Export Prompts": "Prompts exportieren",
|
"Export Prompts": "Prompts exportieren",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "API Key erstellen fehlgeschlagen",
|
"Failed to create API Key.": "API Key erstellen fehlgeschlagen",
|
||||||
"Failed to read clipboard contents": "Fehler beim Lesen des Zwischenablageninhalts",
|
"Failed to read clipboard contents": "Fehler beim Lesen des Zwischenablageninhalts",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Dokumentenmapping importieren",
|
"Import Documents Mapping": "Dokumentenmapping importieren",
|
||||||
"Import Models": "Modelle importieren",
|
"Import Models": "Modelle importieren",
|
||||||
"Import Prompts": "Prompts importieren",
|
"Import Prompts": "Prompts importieren",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Füge das `--api`-Flag hinzu, wenn du stable-diffusion-webui nutzt",
|
"Include `--api` flag when running stable-diffusion-webui": "Füge das `--api`-Flag hinzu, wenn du stable-diffusion-webui nutzt",
|
||||||
"Info": "Info",
|
"Info": "Info",
|
||||||
"Input commands": "Eingabebefehle",
|
"Input commands": "Eingabebefehle",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Anzahl der Suchergebnisse",
|
"Search Result Count": "Anzahl der Suchergebnisse",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Gesucht {{count}} sites_one",
|
"Searched {{count}} sites_one": "Gesucht {{count}} sites_one",
|
||||||
"Searched {{count}} sites_other": "Gesucht {{count}} sites_other",
|
"Searched {{count}} sites_other": "Gesucht {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Suche im Web nach '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng-Abfrage-URL",
|
"Searxng Query URL": "Searxng-Abfrage-URL",
|
||||||
"See readme.md for instructions": "Anleitung in readme.md anzeigen",
|
"See readme.md for instructions": "Anleitung in readme.md anzeigen",
|
||||||
"See what's new": "Was gibt's Neues",
|
"See what's new": "Was gibt's Neues",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "Wählen Sie eine Pipeline aus",
|
"Select a pipeline": "Wählen Sie eine Pipeline aus",
|
||||||
"Select a pipeline url": "Auswählen einer Pipeline-URL",
|
"Select a pipeline url": "Auswählen einer Pipeline-URL",
|
||||||
"Select an Ollama instance": "Eine Ollama Instanz auswählen",
|
"Select an Ollama instance": "Eine Ollama Instanz auswählen",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Modell auswählen",
|
"Select model": "Modell auswählen",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Ausgewählte Modelle unterstützen keine Bildeingaben",
|
"Selected model(s) do not support image inputs": "Ausgewählte Modelle unterstützen keine Bildeingaben",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "Nachricht senden",
|
"Send message": "Nachricht senden",
|
||||||
"September": "September",
|
"September": "September",
|
||||||
"Serper API Key": "Serper-API-Schlüssel",
|
"Serper API Key": "Serper-API-Schlüssel",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack-API-Schlüssel",
|
"Serpstack API Key": "Serpstack-API-Schlüssel",
|
||||||
"Server connection verified": "Serververbindung überprüft",
|
"Server connection verified": "Serververbindung überprüft",
|
||||||
"Set as default": "Als Standard festlegen",
|
"Set as default": "Als Standard festlegen",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "Um auf die verfügbaren Modellnamen zum Herunterladen zuzugreifen,",
|
"To access the available model names for downloading,": "Um auf die verfügbaren Modellnamen zum Herunterladen zuzugreifen,",
|
||||||
"To access the GGUF models available for downloading,": "Um auf die verfügbaren GGUF Modelle zum Herunterladen zuzugreifen",
|
"To access the GGUF models available for downloading,": "Um auf die verfügbaren GGUF Modelle zum Herunterladen zuzugreifen",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "to chat input.",
|
"to chat input.": "to chat input.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Heute",
|
"Today": "Heute",
|
||||||
"Toggle settings": "Einstellungen umschalten",
|
"Toggle settings": "Einstellungen umschalten",
|
||||||
"Toggle sidebar": "Seitenleiste umschalten",
|
"Toggle sidebar": "Seitenleiste umschalten",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Probleme beim Zugriff auf Ollama?",
|
"Trouble accessing Ollama?": "Probleme beim Zugriff auf Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Admin Panel",
|
"Admin Panel": "Admin Panel",
|
||||||
"Admin Settings": "Admin Settings",
|
"Admin Settings": "Admin Settings",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Advanced Parameters",
|
"Advanced Parameters": "Advanced Parameters",
|
||||||
"Advanced Params": "",
|
"Advanced Params": "",
|
||||||
"all": "all",
|
"all": "all",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "",
|
"Enter Score": "",
|
||||||
"Enter Searxng Query URL": "",
|
"Enter Searxng Query URL": "",
|
||||||
"Enter Serper API Key": "",
|
"Enter Serper API Key": "",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "",
|
"Enter Serpstack API Key": "",
|
||||||
"Enter stop sequence": "Enter stop bark",
|
"Enter stop sequence": "Enter stop bark",
|
||||||
"Enter Top K": "Enter Top Wow",
|
"Enter Top K": "Enter Top Wow",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Export Mappings of Dogos",
|
"Export Documents Mapping": "Export Mappings of Dogos",
|
||||||
"Export Models": "",
|
"Export Models": "",
|
||||||
"Export Prompts": "Export Promptos",
|
"Export Prompts": "Export Promptos",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "",
|
"Failed to create API Key.": "",
|
||||||
"Failed to read clipboard contents": "Failed to read clipboard borks",
|
"Failed to read clipboard contents": "Failed to read clipboard borks",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Import Doge Mapping",
|
"Import Documents Mapping": "Import Doge Mapping",
|
||||||
"Import Models": "",
|
"Import Models": "",
|
||||||
"Import Prompts": "Import Promptos",
|
"Import Prompts": "Import Promptos",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Include `--api` flag when running stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Include `--api` flag when running stable-diffusion-webui",
|
||||||
"Info": "",
|
"Info": "",
|
||||||
"Input commands": "Input commands",
|
"Input commands": "Input commands",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "",
|
"Search Result Count": "",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "",
|
"Searched {{count}} sites_one": "",
|
||||||
"Searched {{count}} sites_other": "",
|
"Searched {{count}} sites_other": "",
|
||||||
"Searching the web for '{{searchQuery}}'": "",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "",
|
"Searxng Query URL": "",
|
||||||
"See readme.md for instructions": "See readme.md for instructions wow",
|
"See readme.md for instructions": "See readme.md for instructions wow",
|
||||||
"See what's new": "See what's new so amaze",
|
"See what's new": "See what's new so amaze",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "",
|
"Select a pipeline": "",
|
||||||
"Select a pipeline url": "",
|
"Select a pipeline url": "",
|
||||||
"Select an Ollama instance": "Select an Ollama instance very choose",
|
"Select an Ollama instance": "Select an Ollama instance very choose",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Select model much choice",
|
"Select model": "Select model much choice",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "",
|
"Selected model(s) do not support image inputs": "",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "Send message very send",
|
"Send message": "Send message very send",
|
||||||
"September": "",
|
"September": "",
|
||||||
"Serper API Key": "",
|
"Serper API Key": "",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "",
|
"Serpstack API Key": "",
|
||||||
"Server connection verified": "Server connection verified much secure",
|
"Server connection verified": "Server connection verified much secure",
|
||||||
"Set as default": "Set as default very default",
|
"Set as default": "Set as default very default",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "To access the available model names for downloading, much access",
|
"To access the available model names for downloading,": "To access the available model names for downloading, much access",
|
||||||
"To access the GGUF models available for downloading,": "To access the GGUF models available for downloading, much access",
|
"To access the GGUF models available for downloading,": "To access the GGUF models available for downloading, much access",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "to chat input. Very chat.",
|
"to chat input.": "to chat input. Very chat.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "",
|
"Today": "",
|
||||||
"Toggle settings": "Toggle settings much toggle",
|
"Toggle settings": "Toggle settings much toggle",
|
||||||
"Toggle sidebar": "Toggle sidebar much toggle",
|
"Toggle sidebar": "Toggle sidebar much toggle",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K very top",
|
"Top K": "Top K very top",
|
||||||
"Top P": "Top P very top",
|
"Top P": "Top P very top",
|
||||||
"Trouble accessing Ollama?": "Trouble accessing Ollama? Much trouble?",
|
"Trouble accessing Ollama?": "Trouble accessing Ollama? Much trouble?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "",
|
"Admin Panel": "",
|
||||||
"Admin Settings": "",
|
"Admin Settings": "",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "",
|
"Advanced Parameters": "",
|
||||||
"Advanced Params": "",
|
"Advanced Params": "",
|
||||||
"all": "",
|
"all": "",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "",
|
"Enter Score": "",
|
||||||
"Enter Searxng Query URL": "",
|
"Enter Searxng Query URL": "",
|
||||||
"Enter Serper API Key": "",
|
"Enter Serper API Key": "",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "",
|
"Enter Serpstack API Key": "",
|
||||||
"Enter stop sequence": "",
|
"Enter stop sequence": "",
|
||||||
"Enter Top K": "",
|
"Enter Top K": "",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "",
|
"Export Documents Mapping": "",
|
||||||
"Export Models": "",
|
"Export Models": "",
|
||||||
"Export Prompts": "",
|
"Export Prompts": "",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "",
|
"Failed to create API Key.": "",
|
||||||
"Failed to read clipboard contents": "",
|
"Failed to read clipboard contents": "",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "",
|
"Import Documents Mapping": "",
|
||||||
"Import Models": "",
|
"Import Models": "",
|
||||||
"Import Prompts": "",
|
"Import Prompts": "",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "",
|
"Include `--api` flag when running stable-diffusion-webui": "",
|
||||||
"Info": "",
|
"Info": "",
|
||||||
"Input commands": "",
|
"Input commands": "",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "",
|
"Search Result Count": "",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "",
|
"Searched {{count}} sites_one": "",
|
||||||
"Searched {{count}} sites_other": "",
|
"Searched {{count}} sites_other": "",
|
||||||
"Searching the web for '{{searchQuery}}'": "",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "",
|
"Searxng Query URL": "",
|
||||||
"See readme.md for instructions": "",
|
"See readme.md for instructions": "",
|
||||||
"See what's new": "",
|
"See what's new": "",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "",
|
"Select a pipeline": "",
|
||||||
"Select a pipeline url": "",
|
"Select a pipeline url": "",
|
||||||
"Select an Ollama instance": "",
|
"Select an Ollama instance": "",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "",
|
"Select model": "",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "",
|
"Selected model(s) do not support image inputs": "",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "",
|
"Send message": "",
|
||||||
"September": "",
|
"September": "",
|
||||||
"Serper API Key": "",
|
"Serper API Key": "",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "",
|
"Serpstack API Key": "",
|
||||||
"Server connection verified": "",
|
"Server connection verified": "",
|
||||||
"Set as default": "",
|
"Set as default": "",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "",
|
"To access the available model names for downloading,": "",
|
||||||
"To access the GGUF models available for downloading,": "",
|
"To access the GGUF models available for downloading,": "",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "",
|
"to chat input.": "",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "",
|
"Today": "",
|
||||||
"Toggle settings": "",
|
"Toggle settings": "",
|
||||||
"Toggle sidebar": "",
|
"Toggle sidebar": "",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "",
|
"Top K": "",
|
||||||
"Top P": "",
|
"Top P": "",
|
||||||
"Trouble accessing Ollama?": "",
|
"Trouble accessing Ollama?": "",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "",
|
"Admin Panel": "",
|
||||||
"Admin Settings": "",
|
"Admin Settings": "",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "",
|
"Advanced Parameters": "",
|
||||||
"Advanced Params": "",
|
"Advanced Params": "",
|
||||||
"all": "",
|
"all": "",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "",
|
"Enter Score": "",
|
||||||
"Enter Searxng Query URL": "",
|
"Enter Searxng Query URL": "",
|
||||||
"Enter Serper API Key": "",
|
"Enter Serper API Key": "",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "",
|
"Enter Serpstack API Key": "",
|
||||||
"Enter stop sequence": "",
|
"Enter stop sequence": "",
|
||||||
"Enter Top K": "",
|
"Enter Top K": "",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "",
|
"Export Documents Mapping": "",
|
||||||
"Export Models": "",
|
"Export Models": "",
|
||||||
"Export Prompts": "",
|
"Export Prompts": "",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "",
|
"Failed to create API Key.": "",
|
||||||
"Failed to read clipboard contents": "",
|
"Failed to read clipboard contents": "",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "",
|
"Import Documents Mapping": "",
|
||||||
"Import Models": "",
|
"Import Models": "",
|
||||||
"Import Prompts": "",
|
"Import Prompts": "",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "",
|
"Include `--api` flag when running stable-diffusion-webui": "",
|
||||||
"Info": "",
|
"Info": "",
|
||||||
"Input commands": "",
|
"Input commands": "",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "",
|
"Search Result Count": "",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "",
|
"Searched {{count}} sites_one": "",
|
||||||
"Searched {{count}} sites_other": "",
|
"Searched {{count}} sites_other": "",
|
||||||
"Searching the web for '{{searchQuery}}'": "",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "",
|
"Searxng Query URL": "",
|
||||||
"See readme.md for instructions": "",
|
"See readme.md for instructions": "",
|
||||||
"See what's new": "",
|
"See what's new": "",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "",
|
"Select a pipeline": "",
|
||||||
"Select a pipeline url": "",
|
"Select a pipeline url": "",
|
||||||
"Select an Ollama instance": "",
|
"Select an Ollama instance": "",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "",
|
"Select model": "",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "",
|
"Selected model(s) do not support image inputs": "",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "",
|
"Send message": "",
|
||||||
"September": "",
|
"September": "",
|
||||||
"Serper API Key": "",
|
"Serper API Key": "",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "",
|
"Serpstack API Key": "",
|
||||||
"Server connection verified": "",
|
"Server connection verified": "",
|
||||||
"Set as default": "",
|
"Set as default": "",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "",
|
"To access the available model names for downloading,": "",
|
||||||
"To access the GGUF models available for downloading,": "",
|
"To access the GGUF models available for downloading,": "",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "",
|
"to chat input.": "",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "",
|
"Today": "",
|
||||||
"Toggle settings": "",
|
"Toggle settings": "",
|
||||||
"Toggle sidebar": "",
|
"Toggle sidebar": "",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "",
|
"Top K": "",
|
||||||
"Top P": "",
|
"Top P": "",
|
||||||
"Trouble accessing Ollama?": "",
|
"Trouble accessing Ollama?": "",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Panel de Administración",
|
"Admin Panel": "Panel de Administración",
|
||||||
"Admin Settings": "Configuración de Administrador",
|
"Admin Settings": "Configuración de Administrador",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Parámetros Avanzados",
|
"Advanced Parameters": "Parámetros Avanzados",
|
||||||
"Advanced Params": "Parámetros avanzados",
|
"Advanced Params": "Parámetros avanzados",
|
||||||
"all": "todo",
|
"all": "todo",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Ingrese la puntuación",
|
"Enter Score": "Ingrese la puntuación",
|
||||||
"Enter Searxng Query URL": "Introduzca la URL de consulta de Searxng",
|
"Enter Searxng Query URL": "Introduzca la URL de consulta de Searxng",
|
||||||
"Enter Serper API Key": "Ingrese la clave API de Serper",
|
"Enter Serper API Key": "Ingrese la clave API de Serper",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Ingrese la clave API de Serpstack",
|
"Enter Serpstack API Key": "Ingrese la clave API de Serpstack",
|
||||||
"Enter stop sequence": "Ingrese la secuencia de parada",
|
"Enter stop sequence": "Ingrese la secuencia de parada",
|
||||||
"Enter Top K": "Ingrese el Top K",
|
"Enter Top K": "Ingrese el Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Exportar el mapeo de documentos",
|
"Export Documents Mapping": "Exportar el mapeo de documentos",
|
||||||
"Export Models": "Modelos de exportación",
|
"Export Models": "Modelos de exportación",
|
||||||
"Export Prompts": "Exportar Prompts",
|
"Export Prompts": "Exportar Prompts",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "No se pudo crear la clave API.",
|
"Failed to create API Key.": "No se pudo crear la clave API.",
|
||||||
"Failed to read clipboard contents": "No se pudo leer el contenido del portapapeles",
|
"Failed to read clipboard contents": "No se pudo leer el contenido del portapapeles",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Importar Mapeo de Documentos",
|
"Import Documents Mapping": "Importar Mapeo de Documentos",
|
||||||
"Import Models": "Importar modelos",
|
"Import Models": "Importar modelos",
|
||||||
"Import Prompts": "Importar Prompts",
|
"Import Prompts": "Importar Prompts",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Incluir el indicador `--api` al ejecutar stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Incluir el indicador `--api` al ejecutar stable-diffusion-webui",
|
||||||
"Info": "Información",
|
"Info": "Información",
|
||||||
"Input commands": "Ingresar comandos",
|
"Input commands": "Ingresar comandos",
|
||||||
@@ -419,10 +423,11 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Recuento de resultados de búsqueda",
|
"Search Result Count": "Recuento de resultados de búsqueda",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Buscado {{count}} sites_one",
|
"Searched {{count}} sites_one": "Buscado {{count}} sites_one",
|
||||||
"Searched {{count}} sites_many": "Buscado {{count}} sites_many",
|
"Searched {{count}} sites_many": "Buscado {{count}} sites_many",
|
||||||
"Searched {{count}} sites_other": "Buscó {{count}} sites_other",
|
"Searched {{count}} sites_other": "Buscó {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Buscando en la web '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng URL de consulta",
|
"Searxng Query URL": "Searxng URL de consulta",
|
||||||
"See readme.md for instructions": "Vea el readme.md para instrucciones",
|
"See readme.md for instructions": "Vea el readme.md para instrucciones",
|
||||||
"See what's new": "Ver las novedades",
|
"See what's new": "Ver las novedades",
|
||||||
@@ -434,6 +439,7 @@
|
|||||||
"Select a pipeline": "Selección de una canalización",
|
"Select a pipeline": "Selección de una canalización",
|
||||||
"Select a pipeline url": "Selección de una dirección URL de canalización",
|
"Select a pipeline url": "Selección de una dirección URL de canalización",
|
||||||
"Select an Ollama instance": "Seleccione una instancia de Ollama",
|
"Select an Ollama instance": "Seleccione una instancia de Ollama",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Selecciona un modelo",
|
"Select model": "Selecciona un modelo",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Los modelos seleccionados no admiten entradas de imagen",
|
"Selected model(s) do not support image inputs": "Los modelos seleccionados no admiten entradas de imagen",
|
||||||
@@ -442,6 +448,7 @@
|
|||||||
"Send message": "Enviar Mensaje",
|
"Send message": "Enviar Mensaje",
|
||||||
"September": "Septiembre",
|
"September": "Septiembre",
|
||||||
"Serper API Key": "Clave API de Serper",
|
"Serper API Key": "Clave API de Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Clave API de Serpstack",
|
"Serpstack API Key": "Clave API de Serpstack",
|
||||||
"Server connection verified": "Conexión del servidor verificada",
|
"Server connection verified": "Conexión del servidor verificada",
|
||||||
"Set as default": "Establecer por defecto",
|
"Set as default": "Establecer por defecto",
|
||||||
@@ -506,10 +513,13 @@
|
|||||||
"To access the available model names for downloading,": "Para acceder a los nombres de modelos disponibles para descargar,",
|
"To access the available model names for downloading,": "Para acceder a los nombres de modelos disponibles para descargar,",
|
||||||
"To access the GGUF models available for downloading,": "Para acceder a los modelos GGUF disponibles para descargar,",
|
"To access the GGUF models available for downloading,": "Para acceder a los modelos GGUF disponibles para descargar,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "a la entrada del chat.",
|
"to chat input.": "a la entrada del chat.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Hoy",
|
"Today": "Hoy",
|
||||||
"Toggle settings": "Alternar configuración",
|
"Toggle settings": "Alternar configuración",
|
||||||
"Toggle sidebar": "Alternar barra lateral",
|
"Toggle sidebar": "Alternar barra lateral",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "¿Problemas para acceder a Ollama?",
|
"Trouble accessing Ollama?": "¿Problemas para acceder a Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "پنل مدیریت",
|
"Admin Panel": "پنل مدیریت",
|
||||||
"Admin Settings": "تنظیمات مدیریت",
|
"Admin Settings": "تنظیمات مدیریت",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "پارامترهای پیشرفته",
|
"Advanced Parameters": "پارامترهای پیشرفته",
|
||||||
"Advanced Params": "پارام های پیشرفته",
|
"Advanced Params": "پارام های پیشرفته",
|
||||||
"all": "همه",
|
"all": "همه",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "امتیاز را وارد کنید",
|
"Enter Score": "امتیاز را وارد کنید",
|
||||||
"Enter Searxng Query URL": "نشانی وب پرسوجوی Searxng را وارد کنید",
|
"Enter Searxng Query URL": "نشانی وب پرسوجوی Searxng را وارد کنید",
|
||||||
"Enter Serper API Key": "کلید API Serper را وارد کنید",
|
"Enter Serper API Key": "کلید API Serper را وارد کنید",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "کلید API Serpstack را وارد کنید",
|
"Enter Serpstack API Key": "کلید API Serpstack را وارد کنید",
|
||||||
"Enter stop sequence": "توالی توقف را وارد کنید",
|
"Enter stop sequence": "توالی توقف را وارد کنید",
|
||||||
"Enter Top K": "مقدار Top K را وارد کنید",
|
"Enter Top K": "مقدار Top K را وارد کنید",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "اکسپورت از نگاشت اسناد",
|
"Export Documents Mapping": "اکسپورت از نگاشت اسناد",
|
||||||
"Export Models": "مدل های صادرات",
|
"Export Models": "مدل های صادرات",
|
||||||
"Export Prompts": "اکسپورت از پرامپت\u200cها",
|
"Export Prompts": "اکسپورت از پرامپت\u200cها",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "ایجاد کلید API با خطا مواجه شد.",
|
"Failed to create API Key.": "ایجاد کلید API با خطا مواجه شد.",
|
||||||
"Failed to read clipboard contents": "خواندن محتوای کلیپ بورد ناموفق بود",
|
"Failed to read clipboard contents": "خواندن محتوای کلیپ بورد ناموفق بود",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "ایمپورت نگاشت اسناد",
|
"Import Documents Mapping": "ایمپورت نگاشت اسناد",
|
||||||
"Import Models": "واردات مدلها",
|
"Import Models": "واردات مدلها",
|
||||||
"Import Prompts": "ایمپورت پرامپت\u200cها",
|
"Import Prompts": "ایمپورت پرامپت\u200cها",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "فلگ `--api` را هنکام اجرای stable-diffusion-webui استفاده کنید.",
|
"Include `--api` flag when running stable-diffusion-webui": "فلگ `--api` را هنکام اجرای stable-diffusion-webui استفاده کنید.",
|
||||||
"Info": "اطلاعات",
|
"Info": "اطلاعات",
|
||||||
"Input commands": "ورودی دستورات",
|
"Input commands": "ورودی دستورات",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "تعداد نتایج جستجو",
|
"Search Result Count": "تعداد نتایج جستجو",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "جستجو {{count}} sites_one",
|
"Searched {{count}} sites_one": "جستجو {{count}} sites_one",
|
||||||
"Searched {{count}} sites_other": "جستجو {{count}} sites_other",
|
"Searched {{count}} sites_other": "جستجو {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "جستجو در وب برای '{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "نشانی وب جستجوی Searxng",
|
"Searxng Query URL": "نشانی وب جستجوی Searxng",
|
||||||
"See readme.md for instructions": "برای مشاهده دستورالعمل\u200cها به readme.md مراجعه کنید",
|
"See readme.md for instructions": "برای مشاهده دستورالعمل\u200cها به readme.md مراجعه کنید",
|
||||||
"See what's new": "ببینید موارد جدید چه بوده",
|
"See what's new": "ببینید موارد جدید چه بوده",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "انتخاب یک خط لوله",
|
"Select a pipeline": "انتخاب یک خط لوله",
|
||||||
"Select a pipeline url": "یک ادرس خط لوله را انتخاب کنید",
|
"Select a pipeline url": "یک ادرس خط لوله را انتخاب کنید",
|
||||||
"Select an Ollama instance": "انتخاب یک نمونه از اولاما",
|
"Select an Ollama instance": "انتخاب یک نمونه از اولاما",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "انتخاب یک مدل",
|
"Select model": "انتخاب یک مدل",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "مدل) های (انتخاب شده ورودیهای تصویر را پشتیبانی نمیکند",
|
"Selected model(s) do not support image inputs": "مدل) های (انتخاب شده ورودیهای تصویر را پشتیبانی نمیکند",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "ارسال پیام",
|
"Send message": "ارسال پیام",
|
||||||
"September": "سپتامبر",
|
"September": "سپتامبر",
|
||||||
"Serper API Key": "کلید API Serper",
|
"Serper API Key": "کلید API Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "کلید API Serpstack",
|
"Serpstack API Key": "کلید API Serpstack",
|
||||||
"Server connection verified": "اتصال سرور تأیید شد",
|
"Server connection verified": "اتصال سرور تأیید شد",
|
||||||
"Set as default": "تنظیم به عنوان پیشفرض",
|
"Set as default": "تنظیم به عنوان پیشفرض",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "برای دسترسی به نام مدل های موجود برای دانلود،",
|
"To access the available model names for downloading,": "برای دسترسی به نام مدل های موجود برای دانلود،",
|
||||||
"To access the GGUF models available for downloading,": "برای دسترسی به مدل\u200cهای GGUF موجود برای دانلود،",
|
"To access the GGUF models available for downloading,": "برای دسترسی به مدل\u200cهای GGUF موجود برای دانلود،",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "در ورودی گپ.",
|
"to chat input.": "در ورودی گپ.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "امروز",
|
"Today": "امروز",
|
||||||
"Toggle settings": "نمایش/عدم نمایش تنظیمات",
|
"Toggle settings": "نمایش/عدم نمایش تنظیمات",
|
||||||
"Toggle sidebar": "نمایش/عدم نمایش نوار کناری",
|
"Toggle sidebar": "نمایش/عدم نمایش نوار کناری",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "در دسترسی به اولاما مشکل دارید؟",
|
"Trouble accessing Ollama?": "در دسترسی به اولاما مشکل دارید؟",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Hallintapaneeli",
|
"Admin Panel": "Hallintapaneeli",
|
||||||
"Admin Settings": "Hallinta-asetukset",
|
"Admin Settings": "Hallinta-asetukset",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Edistyneet parametrit",
|
"Advanced Parameters": "Edistyneet parametrit",
|
||||||
"Advanced Params": "Edistyneet parametrit",
|
"Advanced Params": "Edistyneet parametrit",
|
||||||
"all": "kaikki",
|
"all": "kaikki",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Syötä pisteet",
|
"Enter Score": "Syötä pisteet",
|
||||||
"Enter Searxng Query URL": "Kirjoita Searxng-kyselyn URL-osoite",
|
"Enter Searxng Query URL": "Kirjoita Searxng-kyselyn URL-osoite",
|
||||||
"Enter Serper API Key": "Anna Serper API -avain",
|
"Enter Serper API Key": "Anna Serper API -avain",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Anna Serpstack API -avain",
|
"Enter Serpstack API Key": "Anna Serpstack API -avain",
|
||||||
"Enter stop sequence": "Syötä lopetussekvenssi",
|
"Enter stop sequence": "Syötä lopetussekvenssi",
|
||||||
"Enter Top K": "Syötä Top K",
|
"Enter Top K": "Syötä Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Vie asiakirjakartoitus",
|
"Export Documents Mapping": "Vie asiakirjakartoitus",
|
||||||
"Export Models": "Vie malleja",
|
"Export Models": "Vie malleja",
|
||||||
"Export Prompts": "Vie kehotteet",
|
"Export Prompts": "Vie kehotteet",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "API-avaimen luonti epäonnistui.",
|
"Failed to create API Key.": "API-avaimen luonti epäonnistui.",
|
||||||
"Failed to read clipboard contents": "Leikepöydän sisällön lukeminen epäonnistui",
|
"Failed to read clipboard contents": "Leikepöydän sisällön lukeminen epäonnistui",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Tuo asiakirjakartoitus",
|
"Import Documents Mapping": "Tuo asiakirjakartoitus",
|
||||||
"Import Models": "Mallien tuominen",
|
"Import Models": "Mallien tuominen",
|
||||||
"Import Prompts": "Tuo kehotteita",
|
"Import Prompts": "Tuo kehotteita",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Sisällytä `--api`-parametri suorittaessasi stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Sisällytä `--api`-parametri suorittaessasi stable-diffusion-webui",
|
||||||
"Info": "Info",
|
"Info": "Info",
|
||||||
"Input commands": "Syötä komennot",
|
"Input commands": "Syötä komennot",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Hakutulosten määrä",
|
"Search Result Count": "Hakutulosten määrä",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Haettu {{count}} sites_one",
|
"Searched {{count}} sites_one": "Haettu {{count}} sites_one",
|
||||||
"Searched {{count}} sites_other": "Haku {{count}} sites_other",
|
"Searched {{count}} sites_other": "Haku {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Haku verkosta hakusanalla {{searchQuery}}",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng-kyselyn URL-osoite",
|
"Searxng Query URL": "Searxng-kyselyn URL-osoite",
|
||||||
"See readme.md for instructions": "Katso lisää ohjeita readme.md:stä",
|
"See readme.md for instructions": "Katso lisää ohjeita readme.md:stä",
|
||||||
"See what's new": "Katso, mitä uutta",
|
"See what's new": "Katso, mitä uutta",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "Valitse putki",
|
"Select a pipeline": "Valitse putki",
|
||||||
"Select a pipeline url": "Valitse putken URL-osoite",
|
"Select a pipeline url": "Valitse putken URL-osoite",
|
||||||
"Select an Ollama instance": "Valitse Ollama-instanssi",
|
"Select an Ollama instance": "Valitse Ollama-instanssi",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Valitse malli",
|
"Select model": "Valitse malli",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Valitut mallit eivät tue kuvasyötteitä",
|
"Selected model(s) do not support image inputs": "Valitut mallit eivät tue kuvasyötteitä",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "Lähetä viesti",
|
"Send message": "Lähetä viesti",
|
||||||
"September": "syyskuu",
|
"September": "syyskuu",
|
||||||
"Serper API Key": "Serper API -avain",
|
"Serper API Key": "Serper API -avain",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API -avain",
|
"Serpstack API Key": "Serpstack API -avain",
|
||||||
"Server connection verified": "Palvelinyhteys varmennettu",
|
"Server connection verified": "Palvelinyhteys varmennettu",
|
||||||
"Set as default": "Aseta oletukseksi",
|
"Set as default": "Aseta oletukseksi",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "Päästäksesi käsiksi ladattavissa oleviin mallinimiin,",
|
"To access the available model names for downloading,": "Päästäksesi käsiksi ladattavissa oleviin mallinimiin,",
|
||||||
"To access the GGUF models available for downloading,": "Päästäksesi käsiksi ladattavissa oleviin GGUF-malleihin,",
|
"To access the GGUF models available for downloading,": "Päästäksesi käsiksi ladattavissa oleviin GGUF-malleihin,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "keskustelusyötteeseen.",
|
"to chat input.": "keskustelusyötteeseen.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Tänään",
|
"Today": "Tänään",
|
||||||
"Toggle settings": "Kytke asetukset",
|
"Toggle settings": "Kytke asetukset",
|
||||||
"Toggle sidebar": "Kytke sivupalkki",
|
"Toggle sidebar": "Kytke sivupalkki",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Ongelmia Ollama-yhteydessä?",
|
"Trouble accessing Ollama?": "Ongelmia Ollama-yhteydessä?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Panneau d'administration",
|
"Admin Panel": "Panneau d'administration",
|
||||||
"Admin Settings": "Paramètres d'administration",
|
"Admin Settings": "Paramètres d'administration",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Paramètres avancés",
|
"Advanced Parameters": "Paramètres avancés",
|
||||||
"Advanced Params": "Params avancés",
|
"Advanced Params": "Params avancés",
|
||||||
"all": "tous",
|
"all": "tous",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Entrez le score",
|
"Enter Score": "Entrez le score",
|
||||||
"Enter Searxng Query URL": "Entrez l’URL de requête Searxng",
|
"Enter Searxng Query URL": "Entrez l’URL de requête Searxng",
|
||||||
"Enter Serper API Key": "Entrez la clé API Serper",
|
"Enter Serper API Key": "Entrez la clé API Serper",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Entrez dans la clé API Serpstack",
|
"Enter Serpstack API Key": "Entrez dans la clé API Serpstack",
|
||||||
"Enter stop sequence": "Entrez la séquence de fin",
|
"Enter stop sequence": "Entrez la séquence de fin",
|
||||||
"Enter Top K": "Entrez Top K",
|
"Enter Top K": "Entrez Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Exporter le mappage des documents",
|
"Export Documents Mapping": "Exporter le mappage des documents",
|
||||||
"Export Models": "Modèles d’exportation",
|
"Export Models": "Modèles d’exportation",
|
||||||
"Export Prompts": "Exporter les prompts",
|
"Export Prompts": "Exporter les prompts",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Impossible de créer la clé API.",
|
"Failed to create API Key.": "Impossible de créer la clé API.",
|
||||||
"Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers",
|
"Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Importer le mappage des documents",
|
"Import Documents Mapping": "Importer le mappage des documents",
|
||||||
"Import Models": "Importer des modèles",
|
"Import Models": "Importer des modèles",
|
||||||
"Import Prompts": "Importer les prompts",
|
"Import Prompts": "Importer les prompts",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Inclure l'indicateur `--api` lors de l'exécution de stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Inclure l'indicateur `--api` lors de l'exécution de stable-diffusion-webui",
|
||||||
"Info": "L’info",
|
"Info": "L’info",
|
||||||
"Input commands": "Entrez des commandes d'entrée",
|
"Input commands": "Entrez des commandes d'entrée",
|
||||||
@@ -419,10 +423,11 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Nombre de résultats de la recherche",
|
"Search Result Count": "Nombre de résultats de la recherche",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Recherche dans {{count}} sites_one",
|
"Searched {{count}} sites_one": "Recherche dans {{count}} sites_one",
|
||||||
"Searched {{count}} sites_many": "Recherche dans {{count}} sites_many",
|
"Searched {{count}} sites_many": "Recherche dans {{count}} sites_many",
|
||||||
"Searched {{count}} sites_other": "Recherche dans {{count}} sites_other",
|
"Searched {{count}} sites_other": "Recherche dans {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Recherche sur le Web pour '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "URL de la requête Searxng",
|
"Searxng Query URL": "URL de la requête Searxng",
|
||||||
"See readme.md for instructions": "Voir readme.md pour les instructions",
|
"See readme.md for instructions": "Voir readme.md pour les instructions",
|
||||||
"See what's new": "Voir les nouveautés",
|
"See what's new": "Voir les nouveautés",
|
||||||
@@ -434,6 +439,7 @@
|
|||||||
"Select a pipeline": "Sélectionner un pipeline",
|
"Select a pipeline": "Sélectionner un pipeline",
|
||||||
"Select a pipeline url": "Sélectionnez une URL de pipeline",
|
"Select a pipeline url": "Sélectionnez une URL de pipeline",
|
||||||
"Select an Ollama instance": "Sélectionner une instance Ollama",
|
"Select an Ollama instance": "Sélectionner une instance Ollama",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Sélectionnez un modèle",
|
"Select model": "Sélectionnez un modèle",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Les modèles sélectionnés ne prennent pas en charge les entrées d’image",
|
"Selected model(s) do not support image inputs": "Les modèles sélectionnés ne prennent pas en charge les entrées d’image",
|
||||||
@@ -442,6 +448,7 @@
|
|||||||
"Send message": "Envoyer un message",
|
"Send message": "Envoyer un message",
|
||||||
"September": "Septembre",
|
"September": "Septembre",
|
||||||
"Serper API Key": "Clé API Serper",
|
"Serper API Key": "Clé API Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Clé API Serpstack",
|
"Serpstack API Key": "Clé API Serpstack",
|
||||||
"Server connection verified": "Connexion au serveur vérifiée",
|
"Server connection verified": "Connexion au serveur vérifiée",
|
||||||
"Set as default": "Définir par défaut",
|
"Set as default": "Définir par défaut",
|
||||||
@@ -506,10 +513,13 @@
|
|||||||
"To access the available model names for downloading,": "Pour accéder aux noms de modèles disponibles pour le téléchargement,",
|
"To access the available model names for downloading,": "Pour accéder aux noms de modèles disponibles pour le téléchargement,",
|
||||||
"To access the GGUF models available for downloading,": "Pour accéder aux modèles GGUF disponibles pour le téléchargement,",
|
"To access the GGUF models available for downloading,": "Pour accéder aux modèles GGUF disponibles pour le téléchargement,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "à l'entrée du chat.",
|
"to chat input.": "à l'entrée du chat.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Aujourd'hui",
|
"Today": "Aujourd'hui",
|
||||||
"Toggle settings": "Basculer les paramètres",
|
"Toggle settings": "Basculer les paramètres",
|
||||||
"Toggle sidebar": "Basculer la barre latérale",
|
"Toggle sidebar": "Basculer la barre latérale",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Des problèmes pour accéder à Ollama ?",
|
"Trouble accessing Ollama?": "Des problèmes pour accéder à Ollama ?",
|
||||||
@@ -523,7 +533,7 @@
|
|||||||
"Update and Copy Link": "Mettre à jour et copier le lien",
|
"Update and Copy Link": "Mettre à jour et copier le lien",
|
||||||
"Update password": "Mettre à jour le mot de passe",
|
"Update password": "Mettre à jour le mot de passe",
|
||||||
"Upload a GGUF model": "Téléverser un modèle GGUF",
|
"Upload a GGUF model": "Téléverser un modèle GGUF",
|
||||||
"Upload Files": "Télécharger des fichiers",
|
"Upload Files": "Téléverser des fichiers",
|
||||||
"Upload Pipeline": "",
|
"Upload Pipeline": "",
|
||||||
"Upload Progress": "Progression du Téléversement",
|
"Upload Progress": "Progression du Téléversement",
|
||||||
"URL Mode": "Mode URL",
|
"URL Mode": "Mode URL",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Panneau d'Administration",
|
"Admin Panel": "Panneau d'Administration",
|
||||||
"Admin Settings": "Paramètres d'Administration",
|
"Admin Settings": "Paramètres d'Administration",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Paramètres Avancés",
|
"Advanced Parameters": "Paramètres Avancés",
|
||||||
"Advanced Params": "Params Avancés",
|
"Advanced Params": "Params Avancés",
|
||||||
"all": "tous",
|
"all": "tous",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Entrez le Score",
|
"Enter Score": "Entrez le Score",
|
||||||
"Enter Searxng Query URL": "Entrez l’URL de la requête Searxng",
|
"Enter Searxng Query URL": "Entrez l’URL de la requête Searxng",
|
||||||
"Enter Serper API Key": "Entrez la clé API Serper",
|
"Enter Serper API Key": "Entrez la clé API Serper",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Entrez la clé API Serpstack",
|
"Enter Serpstack API Key": "Entrez la clé API Serpstack",
|
||||||
"Enter stop sequence": "Entrez la séquence de fin",
|
"Enter stop sequence": "Entrez la séquence de fin",
|
||||||
"Enter Top K": "Entrez Top K",
|
"Enter Top K": "Entrez Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Exporter la Correspondance des Documents",
|
"Export Documents Mapping": "Exporter la Correspondance des Documents",
|
||||||
"Export Models": "Exporter les Modèles",
|
"Export Models": "Exporter les Modèles",
|
||||||
"Export Prompts": "Exporter les Prompts",
|
"Export Prompts": "Exporter les Prompts",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Échec de la création de la clé d'API.",
|
"Failed to create API Key.": "Échec de la création de la clé d'API.",
|
||||||
"Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers",
|
"Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Importer la Correspondance des Documents",
|
"Import Documents Mapping": "Importer la Correspondance des Documents",
|
||||||
"Import Models": "Importer des Modèles",
|
"Import Models": "Importer des Modèles",
|
||||||
"Import Prompts": "Importer des Prompts",
|
"Import Prompts": "Importer des Prompts",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Inclure le drapeau `--api` lors de l'exécution de stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Inclure le drapeau `--api` lors de l'exécution de stable-diffusion-webui",
|
||||||
"Info": "Info",
|
"Info": "Info",
|
||||||
"Input commands": "Entrez les commandes d'entrée",
|
"Input commands": "Entrez les commandes d'entrée",
|
||||||
@@ -419,10 +423,11 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Nombre de résultats de recherche",
|
"Search Result Count": "Nombre de résultats de recherche",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Recherché {{count}} sites_one",
|
"Searched {{count}} sites_one": "Recherché {{count}} sites_one",
|
||||||
"Searched {{count}} sites_many": "Recherché {{count}} sites_many",
|
"Searched {{count}} sites_many": "Recherché {{count}} sites_many",
|
||||||
"Searched {{count}} sites_other": "Recherché {{count}} sites_other",
|
"Searched {{count}} sites_other": "Recherché {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Recherche sur le web pour '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "URL de requête Searxng",
|
"Searxng Query URL": "URL de requête Searxng",
|
||||||
"See readme.md for instructions": "Voir readme.md pour les instructions",
|
"See readme.md for instructions": "Voir readme.md pour les instructions",
|
||||||
"See what's new": "Voir les nouveautés",
|
"See what's new": "Voir les nouveautés",
|
||||||
@@ -434,6 +439,7 @@
|
|||||||
"Select a pipeline": "Sélectionner un pipeline",
|
"Select a pipeline": "Sélectionner un pipeline",
|
||||||
"Select a pipeline url": "Sélectionnez une URL de pipeline",
|
"Select a pipeline url": "Sélectionnez une URL de pipeline",
|
||||||
"Select an Ollama instance": "Sélectionner une instance Ollama",
|
"Select an Ollama instance": "Sélectionner une instance Ollama",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Sélectionner un modèle",
|
"Select model": "Sélectionner un modèle",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Modèle(s) séléctionés ne supportent pas les entrées images",
|
"Selected model(s) do not support image inputs": "Modèle(s) séléctionés ne supportent pas les entrées images",
|
||||||
@@ -442,6 +448,7 @@
|
|||||||
"Send message": "Envoyer un message",
|
"Send message": "Envoyer un message",
|
||||||
"September": "Septembre",
|
"September": "Septembre",
|
||||||
"Serper API Key": "Clé API Serper",
|
"Serper API Key": "Clé API Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Clé API Serpstack",
|
"Serpstack API Key": "Clé API Serpstack",
|
||||||
"Server connection verified": "Connexion au serveur vérifiée",
|
"Server connection verified": "Connexion au serveur vérifiée",
|
||||||
"Set as default": "Définir par défaut",
|
"Set as default": "Définir par défaut",
|
||||||
@@ -506,10 +513,13 @@
|
|||||||
"To access the available model names for downloading,": "Pour accéder aux noms de modèles disponibles pour le téléchargement,",
|
"To access the available model names for downloading,": "Pour accéder aux noms de modèles disponibles pour le téléchargement,",
|
||||||
"To access the GGUF models available for downloading,": "Pour accéder aux modèles GGUF disponibles pour le téléchargement,",
|
"To access the GGUF models available for downloading,": "Pour accéder aux modèles GGUF disponibles pour le téléchargement,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "à l'entrée du chat.",
|
"to chat input.": "à l'entrée du chat.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Aujourd'hui",
|
"Today": "Aujourd'hui",
|
||||||
"Toggle settings": "Basculer les paramètres",
|
"Toggle settings": "Basculer les paramètres",
|
||||||
"Toggle sidebar": "Basculer la barre latérale",
|
"Toggle sidebar": "Basculer la barre latérale",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Problèmes d'accès à Ollama ?",
|
"Trouble accessing Ollama?": "Problèmes d'accès à Ollama ?",
|
||||||
@@ -523,7 +533,7 @@
|
|||||||
"Update and Copy Link": "Mettre à Jour et Copier le Lien",
|
"Update and Copy Link": "Mettre à Jour et Copier le Lien",
|
||||||
"Update password": "Mettre à Jour le Mot de Passe",
|
"Update password": "Mettre à Jour le Mot de Passe",
|
||||||
"Upload a GGUF model": "Téléverser un modèle GGUF",
|
"Upload a GGUF model": "Téléverser un modèle GGUF",
|
||||||
"Upload Files": "Télécharger des fichiers",
|
"Upload Files": "Téléverser des fichiers",
|
||||||
"Upload Pipeline": "",
|
"Upload Pipeline": "",
|
||||||
"Upload Progress": "Progression du Téléversement",
|
"Upload Progress": "Progression du Téléversement",
|
||||||
"URL Mode": "Mode URL",
|
"URL Mode": "Mode URL",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "לוח בקרה למנהל",
|
"Admin Panel": "לוח בקרה למנהל",
|
||||||
"Admin Settings": "הגדרות מנהל",
|
"Admin Settings": "הגדרות מנהל",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "פרמטרים מתקדמים",
|
"Advanced Parameters": "פרמטרים מתקדמים",
|
||||||
"Advanced Params": "פרמטרים מתקדמים",
|
"Advanced Params": "פרמטרים מתקדמים",
|
||||||
"all": "הכל",
|
"all": "הכל",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "הזן ציון",
|
"Enter Score": "הזן ציון",
|
||||||
"Enter Searxng Query URL": "הזן כתובת URL של שאילתת Searxng",
|
"Enter Searxng Query URL": "הזן כתובת URL של שאילתת Searxng",
|
||||||
"Enter Serper API Key": "הזן מפתח API של Serper",
|
"Enter Serper API Key": "הזן מפתח API של Serper",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "הזן מפתח API של Serpstack",
|
"Enter Serpstack API Key": "הזן מפתח API של Serpstack",
|
||||||
"Enter stop sequence": "הזן רצף עצירה",
|
"Enter stop sequence": "הזן רצף עצירה",
|
||||||
"Enter Top K": "הזן Top K",
|
"Enter Top K": "הזן Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "ייצוא מיפוי מסמכים",
|
"Export Documents Mapping": "ייצוא מיפוי מסמכים",
|
||||||
"Export Models": "ייצוא מודלים",
|
"Export Models": "ייצוא מודלים",
|
||||||
"Export Prompts": "ייצוא פקודות",
|
"Export Prompts": "ייצוא פקודות",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "יצירת מפתח API נכשלה.",
|
"Failed to create API Key.": "יצירת מפתח API נכשלה.",
|
||||||
"Failed to read clipboard contents": "קריאת תוכן הלוח נכשלה",
|
"Failed to read clipboard contents": "קריאת תוכן הלוח נכשלה",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "יבוא מיפוי מסמכים",
|
"Import Documents Mapping": "יבוא מיפוי מסמכים",
|
||||||
"Import Models": "ייבוא דגמים",
|
"Import Models": "ייבוא דגמים",
|
||||||
"Import Prompts": "יבוא פקודות",
|
"Import Prompts": "יבוא פקודות",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "כלול את הדגל `--api` בעת הרצת stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "כלול את הדגל `--api` בעת הרצת stable-diffusion-webui",
|
||||||
"Info": "מידע",
|
"Info": "מידע",
|
||||||
"Input commands": "פקודות קלט",
|
"Input commands": "פקודות קלט",
|
||||||
@@ -419,10 +423,11 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "ספירת תוצאות חיפוש",
|
"Search Result Count": "ספירת תוצאות חיפוש",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "חיפש {{count}} sites_one",
|
"Searched {{count}} sites_one": "חיפש {{count}} sites_one",
|
||||||
"Searched {{count}} sites_two": "חיפש {{count}} sites_two",
|
"Searched {{count}} sites_two": "חיפש {{count}} sites_two",
|
||||||
"Searched {{count}} sites_other": "חיפש {{count}} sites_other",
|
"Searched {{count}} sites_other": "חיפש {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "חיפוש באינטרנט אחר '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "כתובת URL של שאילתת Searxng",
|
"Searxng Query URL": "כתובת URL של שאילתת Searxng",
|
||||||
"See readme.md for instructions": "ראה את readme.md להוראות",
|
"See readme.md for instructions": "ראה את readme.md להוראות",
|
||||||
"See what's new": "ראה מה חדש",
|
"See what's new": "ראה מה חדש",
|
||||||
@@ -434,6 +439,7 @@
|
|||||||
"Select a pipeline": "בחר קו צינור",
|
"Select a pipeline": "בחר קו צינור",
|
||||||
"Select a pipeline url": "בחר כתובת URL של קו צינור",
|
"Select a pipeline url": "בחר כתובת URL של קו צינור",
|
||||||
"Select an Ollama instance": "בחר מופע של Ollama",
|
"Select an Ollama instance": "בחר מופע של Ollama",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "בחר מודל",
|
"Select model": "בחר מודל",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "דגמים נבחרים אינם תומכים בקלט תמונה",
|
"Selected model(s) do not support image inputs": "דגמים נבחרים אינם תומכים בקלט תמונה",
|
||||||
@@ -442,6 +448,7 @@
|
|||||||
"Send message": "שלח הודעה",
|
"Send message": "שלח הודעה",
|
||||||
"September": "ספטמבר",
|
"September": "ספטמבר",
|
||||||
"Serper API Key": "מפתח Serper API",
|
"Serper API Key": "מפתח Serper API",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "מפתח API של Serpstack",
|
"Serpstack API Key": "מפתח API של Serpstack",
|
||||||
"Server connection verified": "החיבור לשרת אומת",
|
"Server connection verified": "החיבור לשרת אומת",
|
||||||
"Set as default": "הגדר כברירת מחדל",
|
"Set as default": "הגדר כברירת מחדל",
|
||||||
@@ -506,10 +513,13 @@
|
|||||||
"To access the available model names for downloading,": "כדי לגשת לשמות הדגמים הזמינים להורדה,",
|
"To access the available model names for downloading,": "כדי לגשת לשמות הדגמים הזמינים להורדה,",
|
||||||
"To access the GGUF models available for downloading,": "כדי לגשת לדגמי GGUF הזמינים להורדה,",
|
"To access the GGUF models available for downloading,": "כדי לגשת לדגמי GGUF הזמינים להורדה,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "לקלטת שיחה.",
|
"to chat input.": "לקלטת שיחה.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "היום",
|
"Today": "היום",
|
||||||
"Toggle settings": "החלפת מצב של הגדרות",
|
"Toggle settings": "החלפת מצב של הגדרות",
|
||||||
"Toggle sidebar": "החלפת מצב של סרגל הצד",
|
"Toggle sidebar": "החלפת מצב של סרגל הצד",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "קשה לגשת לOllama?",
|
"Trouble accessing Ollama?": "קשה לגשת לOllama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "व्यवस्थापक पैनल",
|
"Admin Panel": "व्यवस्थापक पैनल",
|
||||||
"Admin Settings": "व्यवस्थापक सेटिंग्स",
|
"Admin Settings": "व्यवस्थापक सेटिंग्स",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "उन्नत पैरामीटर",
|
"Advanced Parameters": "उन्नत पैरामीटर",
|
||||||
"Advanced Params": "उन्नत परम",
|
"Advanced Params": "उन्नत परम",
|
||||||
"all": "सभी",
|
"all": "सभी",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "स्कोर दर्ज करें",
|
"Enter Score": "स्कोर दर्ज करें",
|
||||||
"Enter Searxng Query URL": "Searxng क्वेरी URL दर्ज करें",
|
"Enter Searxng Query URL": "Searxng क्वेरी URL दर्ज करें",
|
||||||
"Enter Serper API Key": "Serper API कुंजी दर्ज करें",
|
"Enter Serper API Key": "Serper API कुंजी दर्ज करें",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "सर्पस्टैक एपीआई कुंजी दर्ज करें",
|
"Enter Serpstack API Key": "सर्पस्टैक एपीआई कुंजी दर्ज करें",
|
||||||
"Enter stop sequence": "स्टॉप अनुक्रम दर्ज करें",
|
"Enter stop sequence": "स्टॉप अनुक्रम दर्ज करें",
|
||||||
"Enter Top K": "शीर्ष K दर्ज करें",
|
"Enter Top K": "शीर्ष K दर्ज करें",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "निर्यात दस्तावेज़ मैपिंग",
|
"Export Documents Mapping": "निर्यात दस्तावेज़ मैपिंग",
|
||||||
"Export Models": "निर्यात मॉडल",
|
"Export Models": "निर्यात मॉडल",
|
||||||
"Export Prompts": "प्रॉम्प्ट निर्यात करें",
|
"Export Prompts": "प्रॉम्प्ट निर्यात करें",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "एपीआई कुंजी बनाने में विफल.",
|
"Failed to create API Key.": "एपीआई कुंजी बनाने में विफल.",
|
||||||
"Failed to read clipboard contents": "क्लिपबोर्ड सामग्री पढ़ने में विफल",
|
"Failed to read clipboard contents": "क्लिपबोर्ड सामग्री पढ़ने में विफल",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "दस्तावेज़ मैपिंग आयात करें",
|
"Import Documents Mapping": "दस्तावेज़ मैपिंग आयात करें",
|
||||||
"Import Models": "आयात मॉडल",
|
"Import Models": "आयात मॉडल",
|
||||||
"Import Prompts": "प्रॉम्प्ट आयात करें",
|
"Import Prompts": "प्रॉम्प्ट आयात करें",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui चलाते समय `--api` ध्वज शामिल करें",
|
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui चलाते समय `--api` ध्वज शामिल करें",
|
||||||
"Info": "सूचना-विषयक",
|
"Info": "सूचना-विषयक",
|
||||||
"Input commands": "इनपुट क命",
|
"Input commands": "इनपुट क命",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "खोज परिणामों की संख्या",
|
"Search Result Count": "खोज परिणामों की संख्या",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "{{count}} sites_one खोजा गया",
|
"Searched {{count}} sites_one": "{{count}} sites_one खोजा गया",
|
||||||
"Searched {{count}} sites_other": "{{count}} sites_other खोजा गया",
|
"Searched {{count}} sites_other": "{{count}} sites_other खोजा गया",
|
||||||
"Searching the web for '{{searchQuery}}'": "वेब पर '{{searchQuery}}' खोजना",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng क्वेरी URL",
|
"Searxng Query URL": "Searxng क्वेरी URL",
|
||||||
"See readme.md for instructions": "निर्देशों के लिए readme.md देखें",
|
"See readme.md for instructions": "निर्देशों के लिए readme.md देखें",
|
||||||
"See what's new": "देखें, क्या नया है",
|
"See what's new": "देखें, क्या नया है",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "एक पाइपलाइन का चयन करें",
|
"Select a pipeline": "एक पाइपलाइन का चयन करें",
|
||||||
"Select a pipeline url": "एक पाइपलाइन url चुनें",
|
"Select a pipeline url": "एक पाइपलाइन url चुनें",
|
||||||
"Select an Ollama instance": "एक Ollama Instance चुनें",
|
"Select an Ollama instance": "एक Ollama Instance चुनें",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "मॉडल चुनें",
|
"Select model": "मॉडल चुनें",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "चयनित मॉडल छवि इनपुट का समर्थन नहीं करते हैं",
|
"Selected model(s) do not support image inputs": "चयनित मॉडल छवि इनपुट का समर्थन नहीं करते हैं",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "मेसेज भेजें",
|
"Send message": "मेसेज भेजें",
|
||||||
"September": "सितंबर",
|
"September": "सितंबर",
|
||||||
"Serper API Key": "Serper API कुंजी",
|
"Serper API Key": "Serper API कुंजी",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "सर्पस्टैक एपीआई कुंजी",
|
"Serpstack API Key": "सर्पस्टैक एपीआई कुंजी",
|
||||||
"Server connection verified": "सर्वर कनेक्शन सत्यापित",
|
"Server connection verified": "सर्वर कनेक्शन सत्यापित",
|
||||||
"Set as default": "डिफाल्ट के रूप में सेट",
|
"Set as default": "डिफाल्ट के रूप में सेट",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "डाउनलोड करने के लिए उपलब्ध मॉडल नामों तक पहुंचने के लिए,",
|
"To access the available model names for downloading,": "डाउनलोड करने के लिए उपलब्ध मॉडल नामों तक पहुंचने के लिए,",
|
||||||
"To access the GGUF models available for downloading,": "डाउनलोडिंग के लिए उपलब्ध GGUF मॉडल तक पहुँचने के लिए,",
|
"To access the GGUF models available for downloading,": "डाउनलोडिंग के लिए उपलब्ध GGUF मॉडल तक पहुँचने के लिए,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "इनपुट चैट करने के लिए.",
|
"to chat input.": "इनपुट चैट करने के लिए.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "आज",
|
"Today": "आज",
|
||||||
"Toggle settings": "सेटिंग्स टॉगल करें",
|
"Toggle settings": "सेटिंग्स टॉगल करें",
|
||||||
"Toggle sidebar": "साइडबार टॉगल करें",
|
"Toggle sidebar": "साइडबार टॉगल करें",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "शीर्ष K",
|
"Top K": "शीर्ष K",
|
||||||
"Top P": "शीर्ष P",
|
"Top P": "शीर्ष P",
|
||||||
"Trouble accessing Ollama?": "Ollama तक पहुँचने में परेशानी हो रही है?",
|
"Trouble accessing Ollama?": "Ollama तक पहुँचने में परेशानी हो रही है?",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"(e.g. `sh webui.sh --api`)": "(npr. `sh webui.sh --api`)",
|
"(e.g. `sh webui.sh --api`)": "(npr. `sh webui.sh --api`)",
|
||||||
"(latest)": "(najnovije)",
|
"(latest)": "(najnovije)",
|
||||||
"{{ models }}": "{{ modeli }}",
|
"{{ models }}": "{{ modeli }}",
|
||||||
"{{ owner }}: You cannot delete a base model": "{{ vlasnik }}: ne možete izbrisati osnovni model",
|
"{{ owner }}: You cannot delete a base model": "{{ owner }}: Ne možete obrisati osnovni model",
|
||||||
"{{modelName}} is thinking...": "{{modelName}} razmišlja...",
|
"{{modelName}} is thinking...": "{{modelName}} razmišlja...",
|
||||||
"{{user}}'s Chats": "Razgovori korisnika {{user}}",
|
"{{user}}'s Chats": "Razgovori korisnika {{user}}",
|
||||||
"{{webUIName}} Backend Required": "{{webUIName}} Backend je potreban",
|
"{{webUIName}} Backend Required": "{{webUIName}} Backend je potreban",
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
"Account": "Račun",
|
"Account": "Račun",
|
||||||
"Account Activation Pending": "",
|
"Account Activation Pending": "",
|
||||||
"Accurate information": "Točne informacije",
|
"Accurate information": "Točne informacije",
|
||||||
"Active Users": "",
|
"Active Users": "Aktivni korisnici",
|
||||||
"Add": "Dodaj",
|
"Add": "Dodaj",
|
||||||
"Add a model id": "Dodavanje ID-a modela",
|
"Add a model id": "Dodavanje ID-a modela",
|
||||||
"Add a short description about what this model does": "Dodajte kratak opis funkcija ovog modela",
|
"Add a short description about what this model does": "Dodajte kratak opis funkcija ovog modela",
|
||||||
@@ -30,17 +30,18 @@
|
|||||||
"Add User": "Dodaj korisnika",
|
"Add User": "Dodaj korisnika",
|
||||||
"Adjusting these settings will apply changes universally to all users.": "Podešavanje će se primijeniti univerzalno na sve korisnike.",
|
"Adjusting these settings will apply changes universally to all users.": "Podešavanje će se primijeniti univerzalno na sve korisnike.",
|
||||||
"admin": "administrator",
|
"admin": "administrator",
|
||||||
"Admin": "",
|
"Admin": "Admin",
|
||||||
"Admin Panel": "Administratorska ploča",
|
"Admin Panel": "Admin ploča",
|
||||||
"Admin Settings": "Administratorske postavke",
|
"Admin Settings": "Admin postavke",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Napredni parametri",
|
"Advanced Parameters": "Napredni parametri",
|
||||||
"Advanced Params": "Napredni parami",
|
"Advanced Params": "Napredni parametri",
|
||||||
"all": "sve",
|
"all": "sve",
|
||||||
"All Documents": "Svi dokumenti",
|
"All Documents": "Svi dokumenti",
|
||||||
"All Users": "Svi korisnici",
|
"All Users": "Svi korisnici",
|
||||||
"Allow": "Dopusti",
|
"Allow": "Dopusti",
|
||||||
"Allow Chat Deletion": "Dopusti brisanje razgovora",
|
"Allow Chat Deletion": "Dopusti brisanje razgovora",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "Dopusti nelokalne glasove",
|
||||||
"alphanumeric characters and hyphens": "alfanumerički znakovi i crtice",
|
"alphanumeric characters and hyphens": "alfanumerički znakovi i crtice",
|
||||||
"Already have an account?": "Već imate račun?",
|
"Already have an account?": "Već imate račun?",
|
||||||
"an assistant": "asistent",
|
"an assistant": "asistent",
|
||||||
@@ -52,7 +53,7 @@
|
|||||||
"API keys": "API ključevi",
|
"API keys": "API ključevi",
|
||||||
"April": "Travanj",
|
"April": "Travanj",
|
||||||
"Archive": "Arhiva",
|
"Archive": "Arhiva",
|
||||||
"Archive All Chats": "Arhiviraj sve razgovore",
|
"Archive All Chats": "Arhivirajte sve razgovore",
|
||||||
"Archived Chats": "Arhivirani razgovori",
|
"Archived Chats": "Arhivirani razgovori",
|
||||||
"are allowed - Activate this command by typing": "su dopušteni - Aktivirajte ovu naredbu upisivanjem",
|
"are allowed - Activate this command by typing": "su dopušteni - Aktivirajte ovu naredbu upisivanjem",
|
||||||
"Are you sure?": "Jeste li sigurni?",
|
"Are you sure?": "Jeste li sigurni?",
|
||||||
@@ -66,15 +67,15 @@
|
|||||||
"available!": "dostupno!",
|
"available!": "dostupno!",
|
||||||
"Back": "Natrag",
|
"Back": "Natrag",
|
||||||
"Bad Response": "Loš odgovor",
|
"Bad Response": "Loš odgovor",
|
||||||
"Banners": "Bannere",
|
"Banners": "Baneri",
|
||||||
"Base Model (From)": "Osnovni model (šalje)",
|
"Base Model (From)": "Osnovni model (Od)",
|
||||||
"before": "prije",
|
"before": "prije",
|
||||||
"Being lazy": "Biti lijen",
|
"Being lazy": "Biti lijen",
|
||||||
"Brave Search API Key": "Ključ API-ja za hrabro pretraživanje",
|
"Brave Search API Key": "Brave tražilica - API ključ",
|
||||||
"Bypass SSL verification for Websites": "Zaobiđi SSL provjeru za web stranice",
|
"Bypass SSL verification for Websites": "Zaobiđi SSL provjeru za web stranice",
|
||||||
"Call": "",
|
"Call": "Poziv",
|
||||||
"Call feature is not supported when using Web STT engine": "",
|
"Call feature is not supported when using Web STT engine": "Značajka poziva nije podržana kada se koristi Web STT mehanizam",
|
||||||
"Camera": "",
|
"Camera": "Kamera",
|
||||||
"Cancel": "Otkaži",
|
"Cancel": "Otkaži",
|
||||||
"Capabilities": "Mogućnosti",
|
"Capabilities": "Mogućnosti",
|
||||||
"Change Password": "Promijeni lozinku",
|
"Change Password": "Promijeni lozinku",
|
||||||
@@ -92,7 +93,7 @@
|
|||||||
"Chunk Params": "Parametri dijelova",
|
"Chunk Params": "Parametri dijelova",
|
||||||
"Chunk Size": "Veličina dijela",
|
"Chunk Size": "Veličina dijela",
|
||||||
"Citation": "Citiranje",
|
"Citation": "Citiranje",
|
||||||
"Clear memory": "",
|
"Clear memory": "Očisti memoriju",
|
||||||
"Click here for help.": "Kliknite ovdje za pomoć.",
|
"Click here for help.": "Kliknite ovdje za pomoć.",
|
||||||
"Click here to": "Kliknite ovdje za",
|
"Click here to": "Kliknite ovdje za",
|
||||||
"Click here to select": "Kliknite ovdje za odabir",
|
"Click here to select": "Kliknite ovdje za odabir",
|
||||||
@@ -101,7 +102,7 @@
|
|||||||
"Click here to select documents.": "Kliknite ovdje da odaberete dokumente.",
|
"Click here to select documents.": "Kliknite ovdje da odaberete dokumente.",
|
||||||
"click here.": "kliknite ovdje.",
|
"click here.": "kliknite ovdje.",
|
||||||
"Click on the user role button to change a user's role.": "Kliknite na gumb uloge korisnika za promjenu uloge korisnika.",
|
"Click on the user role button to change a user's role.": "Kliknite na gumb uloge korisnika za promjenu uloge korisnika.",
|
||||||
"Clone": "Klon",
|
"Clone": "Kloniraj",
|
||||||
"Close": "Zatvori",
|
"Close": "Zatvori",
|
||||||
"Collection": "Kolekcija",
|
"Collection": "Kolekcija",
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
@@ -111,7 +112,7 @@
|
|||||||
"Concurrent Requests": "Istodobni zahtjevi",
|
"Concurrent Requests": "Istodobni zahtjevi",
|
||||||
"Confirm Password": "Potvrdite lozinku",
|
"Confirm Password": "Potvrdite lozinku",
|
||||||
"Connections": "Povezivanja",
|
"Connections": "Povezivanja",
|
||||||
"Contact Admin for WebUI Access": "",
|
"Contact Admin for WebUI Access": "Kontaktirajte admina za WebUI pristup",
|
||||||
"Content": "Sadržaj",
|
"Content": "Sadržaj",
|
||||||
"Context Length": "Dužina konteksta",
|
"Context Length": "Dužina konteksta",
|
||||||
"Continue Response": "Nastavi odgovor",
|
"Continue Response": "Nastavi odgovor",
|
||||||
@@ -121,7 +122,7 @@
|
|||||||
"Copy last response": "Kopiraj zadnji odgovor",
|
"Copy last response": "Kopiraj zadnji odgovor",
|
||||||
"Copy Link": "Kopiraj vezu",
|
"Copy Link": "Kopiraj vezu",
|
||||||
"Copying to clipboard was successful!": "Kopiranje u međuspremnik je uspješno!",
|
"Copying to clipboard was successful!": "Kopiranje u međuspremnik je uspješno!",
|
||||||
"Create a model": "Stvaranje modela",
|
"Create a model": "Izradite model",
|
||||||
"Create Account": "Stvori račun",
|
"Create Account": "Stvori račun",
|
||||||
"Create new key": "Stvori novi ključ",
|
"Create new key": "Stvori novi ključ",
|
||||||
"Create new secret key": "Stvori novi tajni ključ",
|
"Create new secret key": "Stvori novi tajni ključ",
|
||||||
@@ -132,7 +133,7 @@
|
|||||||
"Custom": "Prilagođeno",
|
"Custom": "Prilagođeno",
|
||||||
"Customize models for a specific purpose": "Prilagodba modela za određenu svrhu",
|
"Customize models for a specific purpose": "Prilagodba modela za određenu svrhu",
|
||||||
"Dark": "Tamno",
|
"Dark": "Tamno",
|
||||||
"Dashboard": "",
|
"Dashboard": "Radna ploča",
|
||||||
"Database": "Baza podataka",
|
"Database": "Baza podataka",
|
||||||
"December": "Prosinac",
|
"December": "Prosinac",
|
||||||
"Default": "Zadano",
|
"Default": "Zadano",
|
||||||
@@ -158,11 +159,11 @@
|
|||||||
"Discover a prompt": "Otkrijte prompt",
|
"Discover a prompt": "Otkrijte prompt",
|
||||||
"Discover, download, and explore custom prompts": "Otkrijte, preuzmite i istražite prilagođene prompte",
|
"Discover, download, and explore custom prompts": "Otkrijte, preuzmite i istražite prilagođene prompte",
|
||||||
"Discover, download, and explore model presets": "Otkrijte, preuzmite i istražite unaprijed postavljene modele",
|
"Discover, download, and explore model presets": "Otkrijte, preuzmite i istražite unaprijed postavljene modele",
|
||||||
"Dismissible": "",
|
"Dismissible": "Odbaciti",
|
||||||
"Display the username instead of You in the Chat": "Prikaži korisničko ime umjesto Vas u razgovoru",
|
"Display the username instead of You in the Chat": "Prikaži korisničko ime umjesto Vas u razgovoru",
|
||||||
"Document": "Dokument",
|
"Document": "Dokument",
|
||||||
"Document Settings": "Postavke dokumenta",
|
"Document Settings": "Postavke dokumenta",
|
||||||
"Documentation": "",
|
"Documentation": "Dokumentacija",
|
||||||
"Documents": "Dokumenti",
|
"Documents": "Dokumenti",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "ne uspostavlja vanjske veze, a vaši podaci ostaju sigurno na vašem lokalno hostiranom poslužitelju.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "ne uspostavlja vanjske veze, a vaši podaci ostaju sigurno na vašem lokalno hostiranom poslužitelju.",
|
||||||
"Don't Allow": "Ne dopuštaj",
|
"Don't Allow": "Ne dopuštaj",
|
||||||
@@ -177,7 +178,7 @@
|
|||||||
"Edit Doc": "Uredi dokument",
|
"Edit Doc": "Uredi dokument",
|
||||||
"Edit User": "Uredi korisnika",
|
"Edit User": "Uredi korisnika",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
"Embedding Batch Size": "",
|
"Embedding Batch Size": "Embedding - Veličina batch-a",
|
||||||
"Embedding Model": "Embedding model",
|
"Embedding Model": "Embedding model",
|
||||||
"Embedding Model Engine": "Embedding model pogon",
|
"Embedding Model Engine": "Embedding model pogon",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Embedding model postavljen na \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Embedding model postavljen na \"{{embedding_model}}\"",
|
||||||
@@ -188,7 +189,7 @@
|
|||||||
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Provjerite da vaša CSV datoteka uključuje 4 stupca u ovom redoslijedu: Name, Email, Password, Role.",
|
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Provjerite da vaša CSV datoteka uključuje 4 stupca u ovom redoslijedu: Name, Email, Password, Role.",
|
||||||
"Enter {{role}} message here": "Unesite {{role}} poruku ovdje",
|
"Enter {{role}} message here": "Unesite {{role}} poruku ovdje",
|
||||||
"Enter a detail about yourself for your LLMs to recall": "Unesite pojedinosti o sebi da bi učitali memoriju u LLM",
|
"Enter a detail about yourself for your LLMs to recall": "Unesite pojedinosti o sebi da bi učitali memoriju u LLM",
|
||||||
"Enter Brave Search API Key": "Unesite ključ API-ja za hrabro pretraživanje",
|
"Enter Brave Search API Key": "Unesite Brave Search API ključ",
|
||||||
"Enter Chunk Overlap": "Unesite preklapanje dijelova",
|
"Enter Chunk Overlap": "Unesite preklapanje dijelova",
|
||||||
"Enter Chunk Size": "Unesite veličinu dijela",
|
"Enter Chunk Size": "Unesite veličinu dijela",
|
||||||
"Enter Github Raw URL": "Unesite Github sirovi URL",
|
"Enter Github Raw URL": "Unesite Github sirovi URL",
|
||||||
@@ -199,9 +200,10 @@
|
|||||||
"Enter model tag (e.g. {{modelTag}})": "Unesite oznaku modela (npr. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Unesite oznaku modela (npr. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Unesite broj koraka (npr. 50)",
|
"Enter Number of Steps (e.g. 50)": "Unesite broj koraka (npr. 50)",
|
||||||
"Enter Score": "Unesite ocjenu",
|
"Enter Score": "Unesite ocjenu",
|
||||||
"Enter Searxng Query URL": "Unos URL-a upita Searxng",
|
"Enter Searxng Query URL": "Unesite URL upita Searxng",
|
||||||
"Enter Serper API Key": "Unesite API ključ serpera",
|
"Enter Serper API Key": "Unesite Serper API ključ",
|
||||||
"Enter Serpstack API Key": "Unesite API ključ Serpstack",
|
"Enter Serply API Key": "Unesite Serply API ključ",
|
||||||
|
"Enter Serpstack API Key": "Unesite Serpstack API ključ",
|
||||||
"Enter stop sequence": "Unesite sekvencu zaustavljanja",
|
"Enter stop sequence": "Unesite sekvencu zaustavljanja",
|
||||||
"Enter Top K": "Unesite Top K",
|
"Enter Top K": "Unesite Top K",
|
||||||
"Enter URL (e.g. http://127.0.0.1:7860/)": "Unesite URL (npr. http://127.0.0.1:7860/)",
|
"Enter URL (e.g. http://127.0.0.1:7860/)": "Unesite URL (npr. http://127.0.0.1:7860/)",
|
||||||
@@ -214,15 +216,16 @@
|
|||||||
"Experimental": "Eksperimentalno",
|
"Experimental": "Eksperimentalno",
|
||||||
"Export": "Izvoz",
|
"Export": "Izvoz",
|
||||||
"Export All Chats (All Users)": "Izvoz svih razgovora (svi korisnici)",
|
"Export All Chats (All Users)": "Izvoz svih razgovora (svi korisnici)",
|
||||||
"Export chat (.json)": "",
|
"Export chat (.json)": "Izvoz četa (.json)",
|
||||||
"Export Chats": "Izvoz razgovora",
|
"Export Chats": "Izvoz razgovora",
|
||||||
"Export Documents Mapping": "Izvoz mapiranja dokumenata",
|
"Export Documents Mapping": "Izvoz mapiranja dokumenata",
|
||||||
"Export Models": "Izvezi modele",
|
"Export Models": "Izvoz modela",
|
||||||
"Export Prompts": "Izvoz prompta",
|
"Export Prompts": "Izvoz prompta",
|
||||||
"External Models": "",
|
"Export Tools": "Izvoz alata",
|
||||||
|
"External Models": "Vanjski modeli",
|
||||||
"Failed to create API Key.": "Neuspješno stvaranje API ključa.",
|
"Failed to create API Key.": "Neuspješno stvaranje API ključa.",
|
||||||
"Failed to read clipboard contents": "Neuspješno čitanje sadržaja međuspremnika",
|
"Failed to read clipboard contents": "Neuspješno čitanje sadržaja međuspremnika",
|
||||||
"Failed to update settings": "",
|
"Failed to update settings": "Greška kod ažuriranja postavki",
|
||||||
"February": "Veljača",
|
"February": "Veljača",
|
||||||
"Feel free to add specific details": "Slobodno dodajte specifične detalje",
|
"Feel free to add specific details": "Slobodno dodajte specifične detalje",
|
||||||
"File Mode": "Način datoteke",
|
"File Mode": "Način datoteke",
|
||||||
@@ -235,7 +238,7 @@
|
|||||||
"Frequency Penalty": "Kazna za učestalost",
|
"Frequency Penalty": "Kazna za učestalost",
|
||||||
"General": "Općenito",
|
"General": "Općenito",
|
||||||
"General Settings": "Opće postavke",
|
"General Settings": "Opće postavke",
|
||||||
"Generate Image": "",
|
"Generate Image": "Gneriraj sliku",
|
||||||
"Generating search query": "Generiranje upita za pretraživanje",
|
"Generating search query": "Generiranje upita za pretraživanje",
|
||||||
"Generation Info": "Informacije o generaciji",
|
"Generation Info": "Informacije o generaciji",
|
||||||
"Good Response": "Dobar odgovor",
|
"Good Response": "Dobar odgovor",
|
||||||
@@ -256,11 +259,12 @@
|
|||||||
"Import Documents Mapping": "Uvoz mapiranja dokumenata",
|
"Import Documents Mapping": "Uvoz mapiranja dokumenata",
|
||||||
"Import Models": "Uvoz modela",
|
"Import Models": "Uvoz modela",
|
||||||
"Import Prompts": "Uvoz prompta",
|
"Import Prompts": "Uvoz prompta",
|
||||||
|
"Import Tools": "Uvoz alata",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Uključite zastavicu `--api` prilikom pokretanja stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Uključite zastavicu `--api` prilikom pokretanja stable-diffusion-webui",
|
||||||
"Info": "Informacije",
|
"Info": "Informacije",
|
||||||
"Input commands": "Unos naredbi",
|
"Input commands": "Unos naredbi",
|
||||||
"Install from Github URL": "Instaliraj s Github URL-a",
|
"Install from Github URL": "Instaliraj s Github URL-a",
|
||||||
"Instant Auto-Send After Voice Transcription": "",
|
"Instant Auto-Send After Voice Transcription": "Trenutačno automatsko slanje nakon glasovne transkripcije",
|
||||||
"Interface": "Sučelje",
|
"Interface": "Sučelje",
|
||||||
"Invalid Tag": "Nevažeća oznaka",
|
"Invalid Tag": "Nevažeća oznaka",
|
||||||
"January": "Siječanj",
|
"January": "Siječanj",
|
||||||
@@ -273,17 +277,17 @@
|
|||||||
"JWT Token": "JWT token",
|
"JWT Token": "JWT token",
|
||||||
"Keep Alive": "Održavanje živim",
|
"Keep Alive": "Održavanje živim",
|
||||||
"Keyboard shortcuts": "Tipkovnički prečaci",
|
"Keyboard shortcuts": "Tipkovnički prečaci",
|
||||||
"Knowledge": "",
|
"Knowledge": "Znanje",
|
||||||
"Language": "Jezik",
|
"Language": "Jezik",
|
||||||
"Last Active": "Zadnja aktivnost",
|
"Last Active": "Zadnja aktivnost",
|
||||||
"Light": "Svijetlo",
|
"Light": "Svijetlo",
|
||||||
"Listening...": "",
|
"Listening...": "Slušam...",
|
||||||
"LLMs can make mistakes. Verify important information.": "LLM-ovi mogu pogriješiti. Provjerite važne informacije.",
|
"LLMs can make mistakes. Verify important information.": "LLM-ovi mogu pogriješiti. Provjerite važne informacije.",
|
||||||
"Local Models": "",
|
"Local Models": "Lokalni modeli",
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Izradio OpenWebUI Community",
|
"Made by OpenWebUI Community": "Izradio OpenWebUI Community",
|
||||||
"Make sure to enclose them with": "Provjerite da ih zatvorite s",
|
"Make sure to enclose them with": "Provjerite da ih zatvorite s",
|
||||||
"Manage": "",
|
"Manage": "Upravljaj",
|
||||||
"Manage Models": "Upravljanje modelima",
|
"Manage Models": "Upravljanje modelima",
|
||||||
"Manage Ollama Models": "Upravljanje Ollama modelima",
|
"Manage Ollama Models": "Upravljanje Ollama modelima",
|
||||||
"Manage Pipelines": "Upravljanje cjevovodima",
|
"Manage Pipelines": "Upravljanje cjevovodima",
|
||||||
@@ -303,13 +307,13 @@
|
|||||||
"Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' je uspješno preuzet.",
|
"Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' je uspješno preuzet.",
|
||||||
"Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' je već u redu za preuzimanje.",
|
"Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' je već u redu za preuzimanje.",
|
||||||
"Model {{modelId}} not found": "Model {{modelId}} nije pronađen",
|
"Model {{modelId}} not found": "Model {{modelId}} nije pronađen",
|
||||||
"Model {{modelName}} is not vision capable": "Model {{modelName}} nije sposoban za vid",
|
"Model {{modelName}} is not vision capable": "Model {{modelName}} ne čita vizualne impute",
|
||||||
"Model {{name}} is now {{status}}": "Model {{name}} sada je {{status}}",
|
"Model {{name}} is now {{status}}": "Model {{name}} sada je {{status}}",
|
||||||
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Otkriven put datotečnog sustava modela. Kratko ime modela je potrebno za ažuriranje, nije moguće nastaviti.",
|
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Otkriven put datotečnog sustava modela. Kratko ime modela je potrebno za ažuriranje, nije moguće nastaviti.",
|
||||||
"Model ID": "ID modela",
|
"Model ID": "ID modela",
|
||||||
"Model not selected": "Model nije odabran",
|
"Model not selected": "Model nije odabran",
|
||||||
"Model Params": "Model Params",
|
"Model Params": "Model parametri",
|
||||||
"Model Whitelisting": "Bijela lista modela",
|
"Model Whitelisting": "Model - Bijela lista",
|
||||||
"Model(s) Whitelisted": "Model(i) na bijeloj listi",
|
"Model(s) Whitelisted": "Model(i) na bijeloj listi",
|
||||||
"Modelfile Content": "Sadržaj datoteke modela",
|
"Modelfile Content": "Sadržaj datoteke modela",
|
||||||
"Models": "Modeli",
|
"Models": "Modeli",
|
||||||
@@ -319,11 +323,11 @@
|
|||||||
"Name your model": "Dodijelite naziv modelu",
|
"Name your model": "Dodijelite naziv modelu",
|
||||||
"New Chat": "Novi razgovor",
|
"New Chat": "Novi razgovor",
|
||||||
"New Password": "Nova lozinka",
|
"New Password": "Nova lozinka",
|
||||||
"No documents found": "",
|
"No documents found": "Dokumenti nisu pronađeni",
|
||||||
"No results found": "Nema rezultata",
|
"No results found": "Nema rezultata",
|
||||||
"No search query generated": "Nije generiran upit za pretraživanje",
|
"No search query generated": "Nije generiran upit za pretraživanje",
|
||||||
"No source available": "Nema dostupnog izvora",
|
"No source available": "Nema dostupnog izvora",
|
||||||
"None": "Nijedan",
|
"None": "Ništa",
|
||||||
"Not factually correct": "Nije činjenično točno",
|
"Not factually correct": "Nije činjenično točno",
|
||||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Napomena: Ako postavite minimalnu ocjenu, pretraga će vratiti samo dokumente s ocjenom većom ili jednakom minimalnoj ocjeni.",
|
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Napomena: Ako postavite minimalnu ocjenu, pretraga će vratiti samo dokumente s ocjenom većom ili jednakom minimalnoj ocjeni.",
|
||||||
"Notifications": "Obavijesti",
|
"Notifications": "Obavijesti",
|
||||||
@@ -336,7 +340,7 @@
|
|||||||
"Ollama": "Ollama",
|
"Ollama": "Ollama",
|
||||||
"Ollama API": "Ollama API",
|
"Ollama API": "Ollama API",
|
||||||
"Ollama API disabled": "Ollama API je onemogućen",
|
"Ollama API disabled": "Ollama API je onemogućen",
|
||||||
"Ollama API is disabled": "",
|
"Ollama API is disabled": "Ollama API je onemogućen",
|
||||||
"Ollama Version": "Ollama verzija",
|
"Ollama Version": "Ollama verzija",
|
||||||
"On": "Uključeno",
|
"On": "Uključeno",
|
||||||
"Only": "Samo",
|
"Only": "Samo",
|
||||||
@@ -359,12 +363,12 @@
|
|||||||
"PDF document (.pdf)": "PDF dokument (.pdf)",
|
"PDF document (.pdf)": "PDF dokument (.pdf)",
|
||||||
"PDF Extract Images (OCR)": "PDF izdvajanje slika (OCR)",
|
"PDF Extract Images (OCR)": "PDF izdvajanje slika (OCR)",
|
||||||
"pending": "u tijeku",
|
"pending": "u tijeku",
|
||||||
"Permission denied when accessing media devices": "",
|
"Permission denied when accessing media devices": "Dopuštenje je odbijeno prilikom pristupa medijskim uređajima",
|
||||||
"Permission denied when accessing microphone": "",
|
"Permission denied when accessing microphone": "Dopuštenje je odbijeno prilikom pristupa mikrofonu",
|
||||||
"Permission denied when accessing microphone: {{error}}": "Pristup mikrofonu odbijen: {{error}}",
|
"Permission denied when accessing microphone: {{error}}": "Pristup mikrofonu odbijen: {{error}}",
|
||||||
"Personalization": "Prilagodba",
|
"Personalization": "Prilagodba",
|
||||||
"Pipelines": "Cjevovodima",
|
"Pipelines": "Cjevovodi",
|
||||||
"Pipelines Valves": "Cjevovodi, ventili",
|
"Pipelines Valves": "Ventili za cjevovode",
|
||||||
"Plain text (.txt)": "Običan tekst (.txt)",
|
"Plain text (.txt)": "Običan tekst (.txt)",
|
||||||
"Playground": "Igralište",
|
"Playground": "Igralište",
|
||||||
"Positive attitude": "Pozitivan stav",
|
"Positive attitude": "Pozitivan stav",
|
||||||
@@ -383,7 +387,7 @@
|
|||||||
"Read Aloud": "Čitaj naglas",
|
"Read Aloud": "Čitaj naglas",
|
||||||
"Record voice": "Snimanje glasa",
|
"Record voice": "Snimanje glasa",
|
||||||
"Redirecting you to OpenWebUI Community": "Preusmjeravanje na OpenWebUI zajednicu",
|
"Redirecting you to OpenWebUI Community": "Preusmjeravanje na OpenWebUI zajednicu",
|
||||||
"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "",
|
"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Nazivajte se \"Korisnik\" (npr. \"Korisnik uči španjolski\")",
|
||||||
"Refused when it shouldn't have": "Odbijen kada nije trebao biti",
|
"Refused when it shouldn't have": "Odbijen kada nije trebao biti",
|
||||||
"Regenerate": "Regeneriraj",
|
"Regenerate": "Regeneriraj",
|
||||||
"Release Notes": "Bilješke o izdanju",
|
"Release Notes": "Bilješke o izdanju",
|
||||||
@@ -395,14 +399,14 @@
|
|||||||
"Reranking Model": "Model za ponovno rangiranje",
|
"Reranking Model": "Model za ponovno rangiranje",
|
||||||
"Reranking model disabled": "Model za ponovno rangiranje onemogućen",
|
"Reranking model disabled": "Model za ponovno rangiranje onemogućen",
|
||||||
"Reranking model set to \"{{reranking_model}}\"": "Model za ponovno rangiranje postavljen na \"{{reranking_model}}\"",
|
"Reranking model set to \"{{reranking_model}}\"": "Model za ponovno rangiranje postavljen na \"{{reranking_model}}\"",
|
||||||
"Reset Upload Directory": "",
|
"Reset Upload Directory": "Poništi upload direktorij",
|
||||||
"Reset Vector Storage": "Resetiraj pohranu vektora",
|
"Reset Vector Storage": "Resetiraj pohranu vektora",
|
||||||
"Response AutoCopy to Clipboard": "Automatsko kopiranje odgovora u međuspremnik",
|
"Response AutoCopy to Clipboard": "Automatsko kopiranje odgovora u međuspremnik",
|
||||||
"Role": "Uloga",
|
"Role": "Uloga",
|
||||||
"Rosé Pine": "Rosé Pine",
|
"Rosé Pine": "Rosé Pine",
|
||||||
"Rosé Pine Dawn": "Rosé Pine Dawn",
|
"Rosé Pine Dawn": "Rosé Pine Dawn",
|
||||||
"RTL": "RTL",
|
"RTL": "RTL",
|
||||||
"Running": "",
|
"Running": "Pokrenuto",
|
||||||
"Save": "Spremi",
|
"Save": "Spremi",
|
||||||
"Save & Create": "Spremi i stvori",
|
"Save & Create": "Spremi i stvori",
|
||||||
"Save & Update": "Spremi i ažuriraj",
|
"Save & Update": "Spremi i ažuriraj",
|
||||||
@@ -414,35 +418,38 @@
|
|||||||
"Search a model": "Pretraži model",
|
"Search a model": "Pretraži model",
|
||||||
"Search Chats": "Pretraži razgovore",
|
"Search Chats": "Pretraži razgovore",
|
||||||
"Search Documents": "Pretraga dokumenata",
|
"Search Documents": "Pretraga dokumenata",
|
||||||
"Search Models": "Modeli pretraživanja",
|
"Search Models": "Pretražite modele",
|
||||||
"Search Prompts": "Pretraga prompta",
|
"Search Prompts": "Pretraga prompta",
|
||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "Upit za generiranje upita za pretraživanje",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "Prag duljine upita za generiranje upita za pretraživanje",
|
||||||
"Search Result Count": "Broj rezultata pretraživanja",
|
"Search Result Count": "Broj rezultata pretraživanja",
|
||||||
|
"Search Tools": "Alati za pretraživanje",
|
||||||
"Searched {{count}} sites_one": "Pretraženo {{count}} sites_one",
|
"Searched {{count}} sites_one": "Pretraženo {{count}} sites_one",
|
||||||
"Searched {{count}} sites_few": "Pretraženo {{count}} sites_few",
|
"Searched {{count}} sites_few": "Pretraženo {{count}} sites_few",
|
||||||
"Searched {{count}} sites_other": "Pretraženo {{count}} sites_other",
|
"Searched {{count}} sites_other": "Pretraženo {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Traženje '{{searchQuery}}' na webu",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "URL upita Searxng",
|
"Searxng Query URL": "Searxng URL upita",
|
||||||
"See readme.md for instructions": "Pogledajte readme.md za upute",
|
"See readme.md for instructions": "Pogledajte readme.md za upute",
|
||||||
"See what's new": "Pogledajte što je novo",
|
"See what's new": "Pogledajte što je novo",
|
||||||
"Seed": "Sjeme",
|
"Seed": "Sjeme",
|
||||||
"Select a base model": "Odabir osnovnog modela",
|
"Select a base model": "Odabir osnovnog modela",
|
||||||
"Select a engine": "",
|
"Select a engine": "Odaberite pogon",
|
||||||
"Select a mode": "Odaberite način",
|
"Select a mode": "Odaberite način",
|
||||||
"Select a model": "Odaberite model",
|
"Select a model": "Odaberite model",
|
||||||
"Select a pipeline": "Odabir kanala",
|
"Select a pipeline": "Odabir kanala",
|
||||||
"Select a pipeline url": "Odabir URL-a kanala",
|
"Select a pipeline url": "Odabir URL-a kanala",
|
||||||
"Select an Ollama instance": "Odaberite Ollama instancu",
|
"Select an Ollama instance": "Odaberite Ollama instancu",
|
||||||
|
"Select Documents": "Odaberite dokumente",
|
||||||
"Select model": "Odaberite model",
|
"Select model": "Odaberite model",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "Odaberite samo jedan model za poziv",
|
||||||
"Selected model(s) do not support image inputs": "Odabrani modeli ne podržavaju unose slika",
|
"Selected model(s) do not support image inputs": "Odabrani modeli ne podržavaju unose slika",
|
||||||
"Send": "Pošalji",
|
"Send": "Pošalji",
|
||||||
"Send a Message": "Pošaljite poruku",
|
"Send a Message": "Pošaljite poruku",
|
||||||
"Send message": "Pošalji poruku",
|
"Send message": "Pošalji poruku",
|
||||||
"September": "Rujan",
|
"September": "Rujan",
|
||||||
"Serper API Key": "Serper API ključ",
|
"Serper API Key": "Serper API ključ",
|
||||||
"Serpstack API Key": "Tipka API za serpstack",
|
"Serply API Key": "Serply API ključ",
|
||||||
|
"Serpstack API Key": "Serpstack API API ključ",
|
||||||
"Server connection verified": "Veza s poslužiteljem potvrđena",
|
"Server connection verified": "Veza s poslužiteljem potvrđena",
|
||||||
"Set as default": "Postavi kao zadano",
|
"Set as default": "Postavi kao zadano",
|
||||||
"Set Default Model": "Postavi zadani model",
|
"Set Default Model": "Postavi zadani model",
|
||||||
@@ -450,11 +457,11 @@
|
|||||||
"Set Image Size": "Postavi veličinu slike",
|
"Set Image Size": "Postavi veličinu slike",
|
||||||
"Set reranking model (e.g. {{model}})": "Postavi model za ponovno rangiranje (npr. {{model}})",
|
"Set reranking model (e.g. {{model}})": "Postavi model za ponovno rangiranje (npr. {{model}})",
|
||||||
"Set Steps": "Postavi korake",
|
"Set Steps": "Postavi korake",
|
||||||
"Set Task Model": "Postavi model zadatka",
|
"Set Task Model": "Postavite model zadatka",
|
||||||
"Set Voice": "Postavi glas",
|
"Set Voice": "Postavi glas",
|
||||||
"Settings": "Postavke",
|
"Settings": "Postavke",
|
||||||
"Settings saved successfully!": "Postavke su uspješno spremljene!",
|
"Settings saved successfully!": "Postavke su uspješno spremljene!",
|
||||||
"Settings updated successfully": "",
|
"Settings updated successfully": "Postavke uspješno ažurirane",
|
||||||
"Share": "Podijeli",
|
"Share": "Podijeli",
|
||||||
"Share Chat": "Podijeli razgovor",
|
"Share Chat": "Podijeli razgovor",
|
||||||
"Share to OpenWebUI Community": "Podijeli u OpenWebUI zajednici",
|
"Share to OpenWebUI Community": "Podijeli u OpenWebUI zajednici",
|
||||||
@@ -472,7 +479,7 @@
|
|||||||
"Speech recognition error: {{error}}": "Pogreška prepoznavanja govora: {{error}}",
|
"Speech recognition error: {{error}}": "Pogreška prepoznavanja govora: {{error}}",
|
||||||
"Speech-to-Text Engine": "Stroj za prepoznavanje govora",
|
"Speech-to-Text Engine": "Stroj za prepoznavanje govora",
|
||||||
"Stop Sequence": "Zaustavi sekvencu",
|
"Stop Sequence": "Zaustavi sekvencu",
|
||||||
"STT Model": "",
|
"STT Model": "STT model",
|
||||||
"STT Settings": "STT postavke",
|
"STT Settings": "STT postavke",
|
||||||
"Submit": "Pošalji",
|
"Submit": "Pošalji",
|
||||||
"Subtitle (e.g. about the Roman Empire)": "Podnaslov (npr. o Rimskom carstvu)",
|
"Subtitle (e.g. about the Roman Empire)": "Podnaslov (npr. o Rimskom carstvu)",
|
||||||
@@ -491,9 +498,9 @@
|
|||||||
"Thanks for your feedback!": "Hvala na povratnim informacijama!",
|
"Thanks for your feedback!": "Hvala na povratnim informacijama!",
|
||||||
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Ocjena treba biti vrijednost između 0,0 (0%) i 1,0 (100%).",
|
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Ocjena treba biti vrijednost između 0,0 (0%) i 1,0 (100%).",
|
||||||
"Theme": "Tema",
|
"Theme": "Tema",
|
||||||
"Thinking...": "",
|
"Thinking...": "Razmišljam",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ovo osigurava da su vaši vrijedni razgovori sigurno spremljeni u bazu podataka. Hvala vam!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ovo osigurava da su vaši vrijedni razgovori sigurno spremljeni u bazu podataka. Hvala vam!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Ovo je eksperimentalna značajka, možda neće funkcionirati prema očekivanjima i podložna je promjenama u bilo kojem trenutku.",
|
||||||
"This setting does not sync across browsers or devices.": "Ova postavka se ne sinkronizira između preglednika ili uređaja.",
|
"This setting does not sync across browsers or devices.": "Ova postavka se ne sinkronizira između preglednika ili uređaja.",
|
||||||
"Thorough explanation": "Detaljno objašnjenje",
|
"Thorough explanation": "Detaljno objašnjenje",
|
||||||
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Savjet: Ažurirajte više mjesta za varijable uzastopno pritiskom na tipku tab u unosu razgovora nakon svake zamjene.",
|
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Savjet: Ažurirajte više mjesta za varijable uzastopno pritiskom na tipku tab u unosu razgovora nakon svake zamjene.",
|
||||||
@@ -505,17 +512,20 @@
|
|||||||
"to": "do",
|
"to": "do",
|
||||||
"To access the available model names for downloading,": "Za pristup dostupnim nazivima modela za preuzimanje,",
|
"To access the available model names for downloading,": "Za pristup dostupnim nazivima modela za preuzimanje,",
|
||||||
"To access the GGUF models available for downloading,": "Za pristup GGUF modelima dostupnim za preuzimanje,",
|
"To access the GGUF models available for downloading,": "Za pristup GGUF modelima dostupnim za preuzimanje,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Za pristup WebUI-u obratite se administratoru. Administratori mogu upravljati statusima korisnika s Admin panela.",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "Da biste ovdje dodali dokumente, prvo ih prenesite u radni prostor \"Dokumenti\".",
|
||||||
"to chat input.": "u unos razgovora.",
|
"to chat input.": "u unos razgovora.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Danas",
|
"Today": "Danas",
|
||||||
"Toggle settings": "Prebaci postavke",
|
"Toggle settings": "Prebaci postavke",
|
||||||
"Toggle sidebar": "Prebaci bočnu traku",
|
"Toggle sidebar": "Prebaci bočnu traku",
|
||||||
|
"Tools": "Alati",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Problemi s pristupom Ollama?",
|
"Trouble accessing Ollama?": "Problemi s pristupom Ollama?",
|
||||||
"TTS Model": "",
|
"TTS Model": "TTS model",
|
||||||
"TTS Settings": "TTS postavke",
|
"TTS Settings": "TTS postavke",
|
||||||
"TTS Voice": "",
|
"TTS Voice": "TTS glas",
|
||||||
"Type": "Tip",
|
"Type": "Tip",
|
||||||
"Type Hugging Face Resolve (Download) URL": "Upišite Hugging Face Resolve (Download) URL",
|
"Type Hugging Face Resolve (Download) URL": "Upišite Hugging Face Resolve (Download) URL",
|
||||||
"Uh-oh! There was an issue connecting to {{provider}}.": "Uh-oh! Pojavio se problem s povezivanjem na {{provider}}.",
|
"Uh-oh! There was an issue connecting to {{provider}}.": "Uh-oh! Pojavio se problem s povezivanjem na {{provider}}.",
|
||||||
@@ -523,8 +533,8 @@
|
|||||||
"Update and Copy Link": "Ažuriraj i kopiraj vezu",
|
"Update and Copy Link": "Ažuriraj i kopiraj vezu",
|
||||||
"Update password": "Ažuriraj lozinku",
|
"Update password": "Ažuriraj lozinku",
|
||||||
"Upload a GGUF model": "Učitaj GGUF model",
|
"Upload a GGUF model": "Učitaj GGUF model",
|
||||||
"Upload Files": "Prenesi datoteke",
|
"Upload Files": "Prijenos datoteka",
|
||||||
"Upload Pipeline": "",
|
"Upload Pipeline": "Prijenos kanala",
|
||||||
"Upload Progress": "Napredak učitavanja",
|
"Upload Progress": "Napredak učitavanja",
|
||||||
"URL Mode": "URL način",
|
"URL Mode": "URL način",
|
||||||
"Use '#' in the prompt input to load and select your documents.": "Koristite '#' u unosu prompta za učitavanje i odabir vaših dokumenata.",
|
"Use '#' in the prompt input to load and select your documents.": "Koristite '#' u unosu prompta za učitavanje i odabir vaših dokumenata.",
|
||||||
@@ -543,31 +553,31 @@
|
|||||||
"Warning": "Upozorenje",
|
"Warning": "Upozorenje",
|
||||||
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Upozorenje: Ako ažurirate ili promijenite svoj model za umetanje, morat ćete ponovno uvesti sve dokumente.",
|
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Upozorenje: Ako ažurirate ili promijenite svoj model za umetanje, morat ćete ponovno uvesti sve dokumente.",
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "",
|
"Web API": "Web API",
|
||||||
"Web Loader Settings": "Postavke web učitavanja",
|
"Web Loader Settings": "Postavke web učitavanja",
|
||||||
"Web Params": "Web parametri",
|
"Web Params": "Web parametri",
|
||||||
"Web Search": "Web-pretraživanje",
|
"Web Search": "Internet pretraga",
|
||||||
"Web Search Engine": "Web-tražilica",
|
"Web Search Engine": "Web tražilica",
|
||||||
"Webhook URL": "URL webkuke",
|
"Webhook URL": "URL webkuke",
|
||||||
"WebUI Add-ons": "Dodaci za WebUI",
|
"WebUI Add-ons": "Dodaci za WebUI",
|
||||||
"WebUI Settings": "WebUI postavke",
|
"WebUI Settings": "WebUI postavke",
|
||||||
"WebUI will make requests to": "WebUI će slati zahtjeve na",
|
"WebUI will make requests to": "WebUI će slati zahtjeve na",
|
||||||
"What’s New in": "Što je novo u",
|
"What’s New in": "Što je novo u",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kada je povijest isključena, novi razgovori na ovom pregledniku neće se pojaviti u vašoj povijesti na bilo kojem od vaših uređaja.",
|
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kada je povijest isključena, novi razgovori na ovom pregledniku neće se pojaviti u vašoj povijesti na bilo kojem od vaših uređaja.",
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "Whisper (lokalno)",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "Mod širokog zaslona",
|
||||||
"Workspace": "Radna ploča",
|
"Workspace": "Radna ploča",
|
||||||
"Write a prompt suggestion (e.g. Who are you?)": "Napišite prijedlog prompta (npr. Tko si ti?)",
|
"Write a prompt suggestion (e.g. Who are you?)": "Napišite prijedlog prompta (npr. Tko si ti?)",
|
||||||
"Write a summary in 50 words that summarizes [topic or keyword].": "Napišite sažetak u 50 riječi koji sažima [temu ili ključnu riječ].",
|
"Write a summary in 50 words that summarizes [topic or keyword].": "Napišite sažetak u 50 riječi koji sažima [temu ili ključnu riječ].",
|
||||||
"Yesterday": "Jučer",
|
"Yesterday": "Jučer",
|
||||||
"You": "Vi",
|
"You": "Vi",
|
||||||
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "",
|
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Možete personalizirati svoje interakcije s LLM-ima dodavanjem uspomena putem gumba 'Upravljanje' u nastavku, čineći ih korisnijima i prilagođenijima vama.",
|
||||||
"You cannot clone a base model": "Ne možete klonirati osnovni model",
|
"You cannot clone a base model": "Ne možete klonirati osnovni model",
|
||||||
"You have no archived conversations.": "Nemate arhiviranih razgovora.",
|
"You have no archived conversations.": "Nemate arhiviranih razgovora.",
|
||||||
"You have shared this chat": "Podijelili ste ovaj razgovor",
|
"You have shared this chat": "Podijelili ste ovaj razgovor",
|
||||||
"You're a helpful assistant.": "Vi ste korisni asistent.",
|
"You're a helpful assistant.": "Vi ste korisni asistent.",
|
||||||
"You're now logged in.": "Sada ste prijavljeni.",
|
"You're now logged in.": "Sada ste prijavljeni.",
|
||||||
"Your account status is currently pending activation.": "",
|
"Your account status is currently pending activation.": "Status vašeg računa trenutno čeka aktivaciju.",
|
||||||
"Youtube": "YouTube",
|
"Youtube": "YouTube",
|
||||||
"Youtube Loader Settings": "YouTube postavke učitavanja"
|
"Youtube Loader Settings": "YouTube postavke učitavanja"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Pannello di amministrazione",
|
"Admin Panel": "Pannello di amministrazione",
|
||||||
"Admin Settings": "Impostazioni amministratore",
|
"Admin Settings": "Impostazioni amministratore",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Parametri avanzati",
|
"Advanced Parameters": "Parametri avanzati",
|
||||||
"Advanced Params": "Parametri avanzati",
|
"Advanced Params": "Parametri avanzati",
|
||||||
"all": "tutti",
|
"all": "tutti",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Inserisci il punteggio",
|
"Enter Score": "Inserisci il punteggio",
|
||||||
"Enter Searxng Query URL": "Immettere l'URL della query Searxng",
|
"Enter Searxng Query URL": "Immettere l'URL della query Searxng",
|
||||||
"Enter Serper API Key": "Inserisci la chiave API Serper",
|
"Enter Serper API Key": "Inserisci la chiave API Serper",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Inserisci la chiave API Serpstack",
|
"Enter Serpstack API Key": "Inserisci la chiave API Serpstack",
|
||||||
"Enter stop sequence": "Inserisci la sequenza di arresto",
|
"Enter stop sequence": "Inserisci la sequenza di arresto",
|
||||||
"Enter Top K": "Inserisci Top K",
|
"Enter Top K": "Inserisci Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Esporta mappatura documenti",
|
"Export Documents Mapping": "Esporta mappatura documenti",
|
||||||
"Export Models": "Esporta modelli",
|
"Export Models": "Esporta modelli",
|
||||||
"Export Prompts": "Esporta prompt",
|
"Export Prompts": "Esporta prompt",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Impossibile creare la chiave API.",
|
"Failed to create API Key.": "Impossibile creare la chiave API.",
|
||||||
"Failed to read clipboard contents": "Impossibile leggere il contenuto degli appunti",
|
"Failed to read clipboard contents": "Impossibile leggere il contenuto degli appunti",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Importa mappatura documenti",
|
"Import Documents Mapping": "Importa mappatura documenti",
|
||||||
"Import Models": "Importazione di modelli",
|
"Import Models": "Importazione di modelli",
|
||||||
"Import Prompts": "Importa prompt",
|
"Import Prompts": "Importa prompt",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Includi il flag `--api` quando esegui stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Includi il flag `--api` quando esegui stable-diffusion-webui",
|
||||||
"Info": "Informazioni",
|
"Info": "Informazioni",
|
||||||
"Input commands": "Comandi di input",
|
"Input commands": "Comandi di input",
|
||||||
@@ -419,10 +423,11 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Conteggio dei risultati della ricerca",
|
"Search Result Count": "Conteggio dei risultati della ricerca",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Ricercato {{count}} sites_one",
|
"Searched {{count}} sites_one": "Ricercato {{count}} sites_one",
|
||||||
"Searched {{count}} sites_many": "Ricercato {{count}} sites_many",
|
"Searched {{count}} sites_many": "Ricercato {{count}} sites_many",
|
||||||
"Searched {{count}} sites_other": "Ricercato {{count}} sites_other",
|
"Searched {{count}} sites_other": "Ricercato {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Ricerca sul web di '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng Query URL",
|
"Searxng Query URL": "Searxng Query URL",
|
||||||
"See readme.md for instructions": "Vedi readme.md per le istruzioni",
|
"See readme.md for instructions": "Vedi readme.md per le istruzioni",
|
||||||
"See what's new": "Guarda le novità",
|
"See what's new": "Guarda le novità",
|
||||||
@@ -434,6 +439,7 @@
|
|||||||
"Select a pipeline": "Selezionare una tubazione",
|
"Select a pipeline": "Selezionare una tubazione",
|
||||||
"Select a pipeline url": "Selezionare l'URL di una pipeline",
|
"Select a pipeline url": "Selezionare l'URL di una pipeline",
|
||||||
"Select an Ollama instance": "Seleziona un'istanza Ollama",
|
"Select an Ollama instance": "Seleziona un'istanza Ollama",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Seleziona modello",
|
"Select model": "Seleziona modello",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "I modelli selezionati non supportano l'input di immagini",
|
"Selected model(s) do not support image inputs": "I modelli selezionati non supportano l'input di immagini",
|
||||||
@@ -442,6 +448,7 @@
|
|||||||
"Send message": "Invia messaggio",
|
"Send message": "Invia messaggio",
|
||||||
"September": "Settembre",
|
"September": "Settembre",
|
||||||
"Serper API Key": "Chiave API Serper",
|
"Serper API Key": "Chiave API Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Chiave API Serpstack",
|
"Serpstack API Key": "Chiave API Serpstack",
|
||||||
"Server connection verified": "Connessione al server verificata",
|
"Server connection verified": "Connessione al server verificata",
|
||||||
"Set as default": "Imposta come predefinito",
|
"Set as default": "Imposta come predefinito",
|
||||||
@@ -506,10 +513,13 @@
|
|||||||
"To access the available model names for downloading,": "Per accedere ai nomi dei modelli disponibili per il download,",
|
"To access the available model names for downloading,": "Per accedere ai nomi dei modelli disponibili per il download,",
|
||||||
"To access the GGUF models available for downloading,": "Per accedere ai modelli GGUF disponibili per il download,",
|
"To access the GGUF models available for downloading,": "Per accedere ai modelli GGUF disponibili per il download,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "all'input della chat.",
|
"to chat input.": "all'input della chat.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Oggi",
|
"Today": "Oggi",
|
||||||
"Toggle settings": "Attiva/disattiva impostazioni",
|
"Toggle settings": "Attiva/disattiva impostazioni",
|
||||||
"Toggle sidebar": "Attiva/disattiva barra laterale",
|
"Toggle sidebar": "Attiva/disattiva barra laterale",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Problemi di accesso a Ollama?",
|
"Trouble accessing Ollama?": "Problemi di accesso a Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "管理者パネル",
|
"Admin Panel": "管理者パネル",
|
||||||
"Admin Settings": "管理者設定",
|
"Admin Settings": "管理者設定",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "詳細パラメーター",
|
"Advanced Parameters": "詳細パラメーター",
|
||||||
"Advanced Params": "高度なパラメータ",
|
"Advanced Params": "高度なパラメータ",
|
||||||
"all": "すべて",
|
"all": "すべて",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "スコアを入力してください",
|
"Enter Score": "スコアを入力してください",
|
||||||
"Enter Searxng Query URL": "SearxngクエリURLを入力",
|
"Enter Searxng Query URL": "SearxngクエリURLを入力",
|
||||||
"Enter Serper API Key": "Serper APIキーの入力",
|
"Enter Serper API Key": "Serper APIキーの入力",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Serpstack APIキーの入力",
|
"Enter Serpstack API Key": "Serpstack APIキーの入力",
|
||||||
"Enter stop sequence": "ストップシーケンスを入力してください",
|
"Enter stop sequence": "ストップシーケンスを入力してください",
|
||||||
"Enter Top K": "トップ K を入力してください",
|
"Enter Top K": "トップ K を入力してください",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "ドキュメントマッピングをエクスポート",
|
"Export Documents Mapping": "ドキュメントマッピングをエクスポート",
|
||||||
"Export Models": "モデルのエクスポート",
|
"Export Models": "モデルのエクスポート",
|
||||||
"Export Prompts": "プロンプトをエクスポート",
|
"Export Prompts": "プロンプトをエクスポート",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "APIキーの作成に失敗しました。",
|
"Failed to create API Key.": "APIキーの作成に失敗しました。",
|
||||||
"Failed to read clipboard contents": "クリップボードの内容を読み取れませんでした",
|
"Failed to read clipboard contents": "クリップボードの内容を読み取れませんでした",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "ドキュメントマッピングをインポート",
|
"Import Documents Mapping": "ドキュメントマッピングをインポート",
|
||||||
"Import Models": "モデルのインポート",
|
"Import Models": "モデルのインポート",
|
||||||
"Import Prompts": "プロンプトをインポート",
|
"Import Prompts": "プロンプトをインポート",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webuiを実行する際に`--api`フラグを含める",
|
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webuiを実行する際に`--api`フラグを含める",
|
||||||
"Info": "情報",
|
"Info": "情報",
|
||||||
"Input commands": "入力コマンド",
|
"Input commands": "入力コマンド",
|
||||||
@@ -419,8 +423,9 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "検索結果数",
|
"Search Result Count": "検索結果数",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_other": "{{count}} sites_other検索",
|
"Searched {{count}} sites_other": "{{count}} sites_other検索",
|
||||||
"Searching the web for '{{searchQuery}}'": "ウェブで '{{searchQuery}}' を検索する",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng クエリ URL",
|
"Searxng Query URL": "Searxng クエリ URL",
|
||||||
"See readme.md for instructions": "手順については readme.md を参照してください",
|
"See readme.md for instructions": "手順については readme.md を参照してください",
|
||||||
"See what's new": "新機能を見る",
|
"See what's new": "新機能を見る",
|
||||||
@@ -432,6 +437,7 @@
|
|||||||
"Select a pipeline": "パイプラインの選択",
|
"Select a pipeline": "パイプラインの選択",
|
||||||
"Select a pipeline url": "パイプラインの URL を選択する",
|
"Select a pipeline url": "パイプラインの URL を選択する",
|
||||||
"Select an Ollama instance": "Ollama インスタンスを選択",
|
"Select an Ollama instance": "Ollama インスタンスを選択",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "モデルを選択",
|
"Select model": "モデルを選択",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "一部のモデルは画像入力をサポートしていません",
|
"Selected model(s) do not support image inputs": "一部のモデルは画像入力をサポートしていません",
|
||||||
@@ -440,6 +446,7 @@
|
|||||||
"Send message": "メッセージを送信",
|
"Send message": "メッセージを送信",
|
||||||
"September": "9月",
|
"September": "9月",
|
||||||
"Serper API Key": "Serper APIキー",
|
"Serper API Key": "Serper APIキー",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack APIキー",
|
"Serpstack API Key": "Serpstack APIキー",
|
||||||
"Server connection verified": "サーバー接続が確認されました",
|
"Server connection verified": "サーバー接続が確認されました",
|
||||||
"Set as default": "デフォルトに設定",
|
"Set as default": "デフォルトに設定",
|
||||||
@@ -504,10 +511,13 @@
|
|||||||
"To access the available model names for downloading,": "ダウンロード可能なモデル名にアクセスするには、",
|
"To access the available model names for downloading,": "ダウンロード可能なモデル名にアクセスするには、",
|
||||||
"To access the GGUF models available for downloading,": "ダウンロード可能な GGUF モデルにアクセスするには、",
|
"To access the GGUF models available for downloading,": "ダウンロード可能な GGUF モデルにアクセスするには、",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "チャット入力へ。",
|
"to chat input.": "チャット入力へ。",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "今日",
|
"Today": "今日",
|
||||||
"Toggle settings": "設定を切り替え",
|
"Toggle settings": "設定を切り替え",
|
||||||
"Toggle sidebar": "サイドバーを切り替え",
|
"Toggle sidebar": "サイドバーを切り替え",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "トップ K",
|
"Top K": "トップ K",
|
||||||
"Top P": "トップ P",
|
"Top P": "トップ P",
|
||||||
"Trouble accessing Ollama?": "Ollama へのアクセスに問題がありますか?",
|
"Trouble accessing Ollama?": "Ollama へのアクセスに問題がありますか?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "ადმინ პანელი",
|
"Admin Panel": "ადმინ პანელი",
|
||||||
"Admin Settings": "ადმინისტრატორის ხელსაწყოები",
|
"Admin Settings": "ადმინისტრატორის ხელსაწყოები",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "დამატებითი პარამეტრები",
|
"Advanced Parameters": "დამატებითი პარამეტრები",
|
||||||
"Advanced Params": "მოწინავე პარამები",
|
"Advanced Params": "მოწინავე პარამები",
|
||||||
"all": "ყველა",
|
"all": "ყველა",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "შეიყვანეთ ქულა",
|
"Enter Score": "შეიყვანეთ ქულა",
|
||||||
"Enter Searxng Query URL": "შეიყვანეთ Searxng Query URL",
|
"Enter Searxng Query URL": "შეიყვანეთ Searxng Query URL",
|
||||||
"Enter Serper API Key": "შეიყვანეთ Serper API Key",
|
"Enter Serper API Key": "შეიყვანეთ Serper API Key",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "შეიყვანეთ Serpstack API Key",
|
"Enter Serpstack API Key": "შეიყვანეთ Serpstack API Key",
|
||||||
"Enter stop sequence": "შეიყვანეთ ტოპ თანმიმდევრობა",
|
"Enter stop sequence": "შეიყვანეთ ტოპ თანმიმდევრობა",
|
||||||
"Enter Top K": "შეიყვანეთ Top K",
|
"Enter Top K": "შეიყვანეთ Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "დოკუმენტების კავშირის ექსპორტი",
|
"Export Documents Mapping": "დოკუმენტების კავშირის ექსპორტი",
|
||||||
"Export Models": "ექსპორტის მოდელები",
|
"Export Models": "ექსპორტის მოდელები",
|
||||||
"Export Prompts": "მოთხოვნების ექსპორტი",
|
"Export Prompts": "მოთხოვნების ექსპორტი",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "API ღილაკის შექმნა ვერ მოხერხდა.",
|
"Failed to create API Key.": "API ღილაკის შექმნა ვერ მოხერხდა.",
|
||||||
"Failed to read clipboard contents": "ბუფერში შიგთავსის წაკითხვა ვერ მოხერხდა",
|
"Failed to read clipboard contents": "ბუფერში შიგთავსის წაკითხვა ვერ მოხერხდა",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "დოკუმენტების კავშირის იმპორტი",
|
"Import Documents Mapping": "დოკუმენტების კავშირის იმპორტი",
|
||||||
"Import Models": "იმპორტის მოდელები",
|
"Import Models": "იმპორტის მოდელები",
|
||||||
"Import Prompts": "მოთხოვნების იმპორტი",
|
"Import Prompts": "მოთხოვნების იმპორტი",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "ჩართეთ `--api` დროშა stable-diffusion-webui-ის გაშვებისას",
|
"Include `--api` flag when running stable-diffusion-webui": "ჩართეთ `--api` დროშა stable-diffusion-webui-ის გაშვებისას",
|
||||||
"Info": "ინფორმაცია",
|
"Info": "ინფორმაცია",
|
||||||
"Input commands": "შეყვანით ბრძანებებს",
|
"Input commands": "შეყვანით ბრძანებებს",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "ძიების შედეგების რაოდენობა",
|
"Search Result Count": "ძიების შედეგების რაოდენობა",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Searched {{count}} sites_one",
|
"Searched {{count}} sites_one": "Searched {{count}} sites_one",
|
||||||
"Searched {{count}} sites_other": "Searched {{count}} sites_other",
|
"Searched {{count}} sites_other": "Searched {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "ეძებს ვებ '{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng Query URL",
|
"Searxng Query URL": "Searxng Query URL",
|
||||||
"See readme.md for instructions": "იხილეთ readme.md ინსტრუქციებისთვის",
|
"See readme.md for instructions": "იხილეთ readme.md ინსტრუქციებისთვის",
|
||||||
"See what's new": "სიახლეების ნახვა",
|
"See what's new": "სიახლეების ნახვა",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "აირჩიეთ მილსადენი",
|
"Select a pipeline": "აირჩიეთ მილსადენი",
|
||||||
"Select a pipeline url": "აირჩიეთ მილსადენის url",
|
"Select a pipeline url": "აირჩიეთ მილსადენის url",
|
||||||
"Select an Ollama instance": "Ollama ინსტანსის არჩევა",
|
"Select an Ollama instance": "Ollama ინსტანსის არჩევა",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "მოდელის არჩევა",
|
"Select model": "მოდელის არჩევა",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "შერჩეული მოდელი (ებ) ი არ უჭერს მხარს გამოსახულების შეყვანას",
|
"Selected model(s) do not support image inputs": "შერჩეული მოდელი (ებ) ი არ უჭერს მხარს გამოსახულების შეყვანას",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "შეტყობინების გაგზავნა",
|
"Send message": "შეტყობინების გაგზავნა",
|
||||||
"September": "სექტემბერი",
|
"September": "სექტემბერი",
|
||||||
"Serper API Key": "Serper API Key",
|
"Serper API Key": "Serper API Key",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API Key",
|
"Serpstack API Key": "Serpstack API Key",
|
||||||
"Server connection verified": "სერვერთან კავშირი დადასტურებულია",
|
"Server connection verified": "სერვერთან კავშირი დადასტურებულია",
|
||||||
"Set as default": "დეფოლტად დაყენება",
|
"Set as default": "დეფოლტად დაყენება",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "ჩამოტვირთვისთვის ხელმისაწვდომი მოდელების სახელებზე წვდომისთვის",
|
"To access the available model names for downloading,": "ჩამოტვირთვისთვის ხელმისაწვდომი მოდელების სახელებზე წვდომისთვის",
|
||||||
"To access the GGUF models available for downloading,": "ჩასატვირთად ხელმისაწვდომი GGUF მოდელებზე წვდომისთვის",
|
"To access the GGUF models available for downloading,": "ჩასატვირთად ხელმისაწვდომი GGUF მოდელებზე წვდომისთვის",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "ჩატში",
|
"to chat input.": "ჩატში",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "დღეს",
|
"Today": "დღეს",
|
||||||
"Toggle settings": "პარამეტრების გადართვა",
|
"Toggle settings": "პარამეტრების გადართვა",
|
||||||
"Toggle sidebar": "გვერდითი ზოლის გადართვა",
|
"Toggle sidebar": "გვერდითი ზოლის გადართვა",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "ტოპ K",
|
"Top K": "ტოპ K",
|
||||||
"Top P": "ტოპ P",
|
"Top P": "ტოპ P",
|
||||||
"Trouble accessing Ollama?": "Ollama-ს ვერ უკავშირდები?",
|
"Trouble accessing Ollama?": "Ollama-ს ვერ უკავშირდები?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "관리자 패널",
|
"Admin Panel": "관리자 패널",
|
||||||
"Admin Settings": "관리자 설정",
|
"Admin Settings": "관리자 설정",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "고급 매개변수",
|
"Advanced Parameters": "고급 매개변수",
|
||||||
"Advanced Params": "고급 매개 변수",
|
"Advanced Params": "고급 매개 변수",
|
||||||
"all": "모두",
|
"all": "모두",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "점수 입력",
|
"Enter Score": "점수 입력",
|
||||||
"Enter Searxng Query URL": "Searxng 쿼리 URL 입력",
|
"Enter Searxng Query URL": "Searxng 쿼리 URL 입력",
|
||||||
"Enter Serper API Key": "Serper API Key 입력",
|
"Enter Serper API Key": "Serper API Key 입력",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Serpstack API Key 입력",
|
"Enter Serpstack API Key": "Serpstack API Key 입력",
|
||||||
"Enter stop sequence": "중지 시퀀스 입력",
|
"Enter stop sequence": "중지 시퀀스 입력",
|
||||||
"Enter Top K": "Top K 입력",
|
"Enter Top K": "Top K 입력",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "문서 매핑 내보내기",
|
"Export Documents Mapping": "문서 매핑 내보내기",
|
||||||
"Export Models": "모델 내보내기",
|
"Export Models": "모델 내보내기",
|
||||||
"Export Prompts": "프롬프트 내보내기",
|
"Export Prompts": "프롬프트 내보내기",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "API 키 생성에 실패했습니다.",
|
"Failed to create API Key.": "API 키 생성에 실패했습니다.",
|
||||||
"Failed to read clipboard contents": "클립보드 내용을 읽는 데 실패했습니다.",
|
"Failed to read clipboard contents": "클립보드 내용을 읽는 데 실패했습니다.",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "문서 매핑 가져오기",
|
"Import Documents Mapping": "문서 매핑 가져오기",
|
||||||
"Import Models": "모델 가져오기",
|
"Import Models": "모델 가져오기",
|
||||||
"Import Prompts": "프롬프트 가져오기",
|
"Import Prompts": "프롬프트 가져오기",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui를 실행할 때 '--api' 플래그 포함",
|
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui를 실행할 때 '--api' 플래그 포함",
|
||||||
"Info": "정보",
|
"Info": "정보",
|
||||||
"Input commands": "입력 명령",
|
"Input commands": "입력 명령",
|
||||||
@@ -419,8 +423,9 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "검색 결과 개수",
|
"Search Result Count": "검색 결과 개수",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_other": "{{count}} sites_other 검색됨",
|
"Searched {{count}} sites_other": "{{count}} sites_other 검색됨",
|
||||||
"Searching the web for '{{searchQuery}}'": "웹에서 '{{searchQuery}}' 검색",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng 쿼리 URL",
|
"Searxng Query URL": "Searxng 쿼리 URL",
|
||||||
"See readme.md for instructions": "설명은 readme.md를 참조하세요.",
|
"See readme.md for instructions": "설명은 readme.md를 참조하세요.",
|
||||||
"See what's new": "새로운 기능 보기",
|
"See what's new": "새로운 기능 보기",
|
||||||
@@ -432,6 +437,7 @@
|
|||||||
"Select a pipeline": "파이프라인 선택",
|
"Select a pipeline": "파이프라인 선택",
|
||||||
"Select a pipeline url": "파이프라인 URL 선택",
|
"Select a pipeline url": "파이프라인 URL 선택",
|
||||||
"Select an Ollama instance": "Ollama 인스턴스 선택",
|
"Select an Ollama instance": "Ollama 인스턴스 선택",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "모델 선택",
|
"Select model": "모델 선택",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "선택한 모델은 이미지 입력을 지원하지 않습니다.",
|
"Selected model(s) do not support image inputs": "선택한 모델은 이미지 입력을 지원하지 않습니다.",
|
||||||
@@ -440,6 +446,7 @@
|
|||||||
"Send message": "메시지 보내기",
|
"Send message": "메시지 보내기",
|
||||||
"September": "9월",
|
"September": "9월",
|
||||||
"Serper API Key": "Serper API 키",
|
"Serper API Key": "Serper API 키",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API 키",
|
"Serpstack API Key": "Serpstack API 키",
|
||||||
"Server connection verified": "서버 연결 확인됨",
|
"Server connection verified": "서버 연결 확인됨",
|
||||||
"Set as default": "기본값으로 설정",
|
"Set as default": "기본값으로 설정",
|
||||||
@@ -504,10 +511,13 @@
|
|||||||
"To access the available model names for downloading,": "다운로드 가능한 모델명을 확인하려면,",
|
"To access the available model names for downloading,": "다운로드 가능한 모델명을 확인하려면,",
|
||||||
"To access the GGUF models available for downloading,": "다운로드 가능한 GGUF 모델을 확인하려면,",
|
"To access the GGUF models available for downloading,": "다운로드 가능한 GGUF 모델을 확인하려면,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "채팅 입력으로.",
|
"to chat input.": "채팅 입력으로.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "오늘",
|
"Today": "오늘",
|
||||||
"Toggle settings": "설정 전환",
|
"Toggle settings": "설정 전환",
|
||||||
"Toggle sidebar": "사이드바 전환",
|
"Toggle sidebar": "사이드바 전환",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Ollama에 접근하는 데 문제가 있나요?",
|
"Trouble accessing Ollama?": "Ollama에 접근하는 데 문제가 있나요?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Administratorių panelė",
|
"Admin Panel": "Administratorių panelė",
|
||||||
"Admin Settings": "Administratorių nustatymai",
|
"Admin Settings": "Administratorių nustatymai",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Gilieji nustatymai",
|
"Advanced Parameters": "Gilieji nustatymai",
|
||||||
"Advanced Params": "",
|
"Advanced Params": "",
|
||||||
"all": "visi",
|
"all": "visi",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Įveskite rezultatą",
|
"Enter Score": "Įveskite rezultatą",
|
||||||
"Enter Searxng Query URL": "",
|
"Enter Searxng Query URL": "",
|
||||||
"Enter Serper API Key": "",
|
"Enter Serper API Key": "",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "",
|
"Enter Serpstack API Key": "",
|
||||||
"Enter stop sequence": "Įveskite pabaigos sekvenciją",
|
"Enter stop sequence": "Įveskite pabaigos sekvenciją",
|
||||||
"Enter Top K": "Įveskite Top K",
|
"Enter Top K": "Įveskite Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Eksportuoti dokumentų žemėlapį",
|
"Export Documents Mapping": "Eksportuoti dokumentų žemėlapį",
|
||||||
"Export Models": "",
|
"Export Models": "",
|
||||||
"Export Prompts": "Eksportuoti užklausas",
|
"Export Prompts": "Eksportuoti užklausas",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Nepavyko sukurti API rakto",
|
"Failed to create API Key.": "Nepavyko sukurti API rakto",
|
||||||
"Failed to read clipboard contents": "Nepavyko perskaityti kopijuoklės",
|
"Failed to read clipboard contents": "Nepavyko perskaityti kopijuoklės",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Importuoti dokumentų žemėlapį",
|
"Import Documents Mapping": "Importuoti dokumentų žemėlapį",
|
||||||
"Import Models": "",
|
"Import Models": "",
|
||||||
"Import Prompts": "Importuoti užklausas",
|
"Import Prompts": "Importuoti užklausas",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Pridėti `--api` kai vykdomas stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Pridėti `--api` kai vykdomas stable-diffusion-webui",
|
||||||
"Info": "",
|
"Info": "",
|
||||||
"Input commands": "Įvesties komandos",
|
"Input commands": "Įvesties komandos",
|
||||||
@@ -419,11 +423,12 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "",
|
"Search Result Count": "",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "",
|
"Searched {{count}} sites_one": "",
|
||||||
"Searched {{count}} sites_few": "",
|
"Searched {{count}} sites_few": "",
|
||||||
"Searched {{count}} sites_many": "",
|
"Searched {{count}} sites_many": "",
|
||||||
"Searched {{count}} sites_other": "",
|
"Searched {{count}} sites_other": "",
|
||||||
"Searching the web for '{{searchQuery}}'": "",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "",
|
"Searxng Query URL": "",
|
||||||
"See readme.md for instructions": "Žiūrėti readme.md papildomoms instrukcijoms",
|
"See readme.md for instructions": "Žiūrėti readme.md papildomoms instrukcijoms",
|
||||||
"See what's new": "Žiūrėti naujoves",
|
"See what's new": "Žiūrėti naujoves",
|
||||||
@@ -435,6 +440,7 @@
|
|||||||
"Select a pipeline": "",
|
"Select a pipeline": "",
|
||||||
"Select a pipeline url": "",
|
"Select a pipeline url": "",
|
||||||
"Select an Ollama instance": "Pasirinkti Ollama instanciją",
|
"Select an Ollama instance": "Pasirinkti Ollama instanciją",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Pasirinkti modelį",
|
"Select model": "Pasirinkti modelį",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "",
|
"Selected model(s) do not support image inputs": "",
|
||||||
@@ -443,6 +449,7 @@
|
|||||||
"Send message": "Siųsti žinutę",
|
"Send message": "Siųsti žinutę",
|
||||||
"September": "rugsėjis",
|
"September": "rugsėjis",
|
||||||
"Serper API Key": "",
|
"Serper API Key": "",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "",
|
"Serpstack API Key": "",
|
||||||
"Server connection verified": "Serverio sujungimas patvirtintas",
|
"Server connection verified": "Serverio sujungimas patvirtintas",
|
||||||
"Set as default": "Nustatyti numatytąjį",
|
"Set as default": "Nustatyti numatytąjį",
|
||||||
@@ -507,10 +514,13 @@
|
|||||||
"To access the available model names for downloading,": "Tam, kad prieiti prie galimų parsisiųsti modelių",
|
"To access the available model names for downloading,": "Tam, kad prieiti prie galimų parsisiųsti modelių",
|
||||||
"To access the GGUF models available for downloading,": "Tam, kad prieiti prie galimų parsisiųsti GGUF,",
|
"To access the GGUF models available for downloading,": "Tam, kad prieiti prie galimų parsisiųsti GGUF,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "į pokalbio įvestį",
|
"to chat input.": "į pokalbio įvestį",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Šiandien",
|
"Today": "Šiandien",
|
||||||
"Toggle settings": "Atverti/užverti parametrus",
|
"Toggle settings": "Atverti/užverti parametrus",
|
||||||
"Toggle sidebar": "Atverti/užverti šoninį meniu",
|
"Toggle sidebar": "Atverti/užverti šoninį meniu",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Problemos prieinant prie Ollama?",
|
"Trouble accessing Ollama?": "Problemos prieinant prie Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Administrasjonspanel",
|
"Admin Panel": "Administrasjonspanel",
|
||||||
"Admin Settings": "Administrasjonsinnstillinger",
|
"Admin Settings": "Administrasjonsinnstillinger",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Avanserte parametere",
|
"Advanced Parameters": "Avanserte parametere",
|
||||||
"Advanced Params": "Avanserte parametere",
|
"Advanced Params": "Avanserte parametere",
|
||||||
"all": "alle",
|
"all": "alle",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Skriv inn poengsum",
|
"Enter Score": "Skriv inn poengsum",
|
||||||
"Enter Searxng Query URL": "Skriv inn Searxng forespørsels-URL",
|
"Enter Searxng Query URL": "Skriv inn Searxng forespørsels-URL",
|
||||||
"Enter Serper API Key": "Skriv inn Serper API-nøkkel",
|
"Enter Serper API Key": "Skriv inn Serper API-nøkkel",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Skriv inn Serpstack API-nøkkel",
|
"Enter Serpstack API Key": "Skriv inn Serpstack API-nøkkel",
|
||||||
"Enter stop sequence": "Skriv inn stoppsekvens",
|
"Enter stop sequence": "Skriv inn stoppsekvens",
|
||||||
"Enter Top K": "Skriv inn Top K",
|
"Enter Top K": "Skriv inn Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Eksporter dokumentkartlegging",
|
"Export Documents Mapping": "Eksporter dokumentkartlegging",
|
||||||
"Export Models": "Eksporter modeller",
|
"Export Models": "Eksporter modeller",
|
||||||
"Export Prompts": "Eksporter prompts",
|
"Export Prompts": "Eksporter prompts",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Kunne ikke opprette API-nøkkel.",
|
"Failed to create API Key.": "Kunne ikke opprette API-nøkkel.",
|
||||||
"Failed to read clipboard contents": "Kunne ikke lese utklippstavleinnhold",
|
"Failed to read clipboard contents": "Kunne ikke lese utklippstavleinnhold",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Importer dokumentkartlegging",
|
"Import Documents Mapping": "Importer dokumentkartlegging",
|
||||||
"Import Models": "Importer modeller",
|
"Import Models": "Importer modeller",
|
||||||
"Import Prompts": "Importer prompts",
|
"Import Prompts": "Importer prompts",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Inkluder `--api`-flagget når du kjører stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Inkluder `--api`-flagget når du kjører stable-diffusion-webui",
|
||||||
"Info": "Info",
|
"Info": "Info",
|
||||||
"Input commands": "Inntast kommandoer",
|
"Input commands": "Inntast kommandoer",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Antall søkeresultater",
|
"Search Result Count": "Antall søkeresultater",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Søkte på {{count}} side",
|
"Searched {{count}} sites_one": "Søkte på {{count}} side",
|
||||||
"Searched {{count}} sites_other": "Søkte på {{count}} sider",
|
"Searched {{count}} sites_other": "Søkte på {{count}} sider",
|
||||||
"Searching the web for '{{searchQuery}}'": "Søker på nettet etter '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng forespørsels-URL",
|
"Searxng Query URL": "Searxng forespørsels-URL",
|
||||||
"See readme.md for instructions": "Se readme.md for instruksjoner",
|
"See readme.md for instructions": "Se readme.md for instruksjoner",
|
||||||
"See what's new": "Se hva som er nytt",
|
"See what's new": "Se hva som er nytt",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "Velg en pipeline",
|
"Select a pipeline": "Velg en pipeline",
|
||||||
"Select a pipeline url": "Velg en pipeline-URL",
|
"Select a pipeline url": "Velg en pipeline-URL",
|
||||||
"Select an Ollama instance": "Velg en Ollama-instans",
|
"Select an Ollama instance": "Velg en Ollama-instans",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Velg modell",
|
"Select model": "Velg modell",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Valgte modell(er) støtter ikke bildeforslag",
|
"Selected model(s) do not support image inputs": "Valgte modell(er) støtter ikke bildeforslag",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "Send melding",
|
"Send message": "Send melding",
|
||||||
"September": "September",
|
"September": "September",
|
||||||
"Serper API Key": "Serper API-nøkkel",
|
"Serper API Key": "Serper API-nøkkel",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API-nøkkel",
|
"Serpstack API Key": "Serpstack API-nøkkel",
|
||||||
"Server connection verified": "Servertilkobling bekreftet",
|
"Server connection verified": "Servertilkobling bekreftet",
|
||||||
"Set as default": "Sett som standard",
|
"Set as default": "Sett som standard",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "For å få tilgang til tilgjengelige modelnavn for nedlasting,",
|
"To access the available model names for downloading,": "For å få tilgang til tilgjengelige modelnavn for nedlasting,",
|
||||||
"To access the GGUF models available for downloading,": "For å få tilgang til GGUF-modellene som er tilgjengelige for nedlasting,",
|
"To access the GGUF models available for downloading,": "For å få tilgang til GGUF-modellene som er tilgjengelige for nedlasting,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "til chatinput.",
|
"to chat input.": "til chatinput.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "I dag",
|
"Today": "I dag",
|
||||||
"Toggle settings": "Veksle innstillinger",
|
"Toggle settings": "Veksle innstillinger",
|
||||||
"Toggle sidebar": "Veksle sidefelt",
|
"Toggle sidebar": "Veksle sidefelt",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Problemer med tilgang til Ollama?",
|
"Trouble accessing Ollama?": "Problemer med tilgang til Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Administratieve Paneel",
|
"Admin Panel": "Administratieve Paneel",
|
||||||
"Admin Settings": "Administratieve Settings",
|
"Admin Settings": "Administratieve Settings",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Geavanceerde Parameters",
|
"Advanced Parameters": "Geavanceerde Parameters",
|
||||||
"Advanced Params": "Geavanceerde parameters",
|
"Advanced Params": "Geavanceerde parameters",
|
||||||
"all": "alle",
|
"all": "alle",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Voeg score toe",
|
"Enter Score": "Voeg score toe",
|
||||||
"Enter Searxng Query URL": "Voer de URL van de Searxng-query in",
|
"Enter Searxng Query URL": "Voer de URL van de Searxng-query in",
|
||||||
"Enter Serper API Key": "Voer de Serper API-sleutel in",
|
"Enter Serper API Key": "Voer de Serper API-sleutel in",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Voer de Serpstack API-sleutel in",
|
"Enter Serpstack API Key": "Voer de Serpstack API-sleutel in",
|
||||||
"Enter stop sequence": "Zet stop sequentie",
|
"Enter stop sequence": "Zet stop sequentie",
|
||||||
"Enter Top K": "Voeg Top K toe",
|
"Enter Top K": "Voeg Top K toe",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Exporteer Documenten Mapping",
|
"Export Documents Mapping": "Exporteer Documenten Mapping",
|
||||||
"Export Models": "Modellen exporteren",
|
"Export Models": "Modellen exporteren",
|
||||||
"Export Prompts": "Exporteer Prompts",
|
"Export Prompts": "Exporteer Prompts",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Kan API Key niet aanmaken.",
|
"Failed to create API Key.": "Kan API Key niet aanmaken.",
|
||||||
"Failed to read clipboard contents": "Kan klembord inhoud niet lezen",
|
"Failed to read clipboard contents": "Kan klembord inhoud niet lezen",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Importeer Documenten Mapping",
|
"Import Documents Mapping": "Importeer Documenten Mapping",
|
||||||
"Import Models": "Modellen importeren",
|
"Import Models": "Modellen importeren",
|
||||||
"Import Prompts": "Importeer Prompts",
|
"Import Prompts": "Importeer Prompts",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Voeg `--api` vlag toe bij het uitvoeren van stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Voeg `--api` vlag toe bij het uitvoeren van stable-diffusion-webui",
|
||||||
"Info": "Info",
|
"Info": "Info",
|
||||||
"Input commands": "Voer commando's in",
|
"Input commands": "Voer commando's in",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Aantal zoekresultaten",
|
"Search Result Count": "Aantal zoekresultaten",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Gezocht op {{count}} sites_one",
|
"Searched {{count}} sites_one": "Gezocht op {{count}} sites_one",
|
||||||
"Searched {{count}} sites_other": "Gezocht op {{count}} sites_other",
|
"Searched {{count}} sites_other": "Gezocht op {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Zoeken op internet naar '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng Query URL",
|
"Searxng Query URL": "Searxng Query URL",
|
||||||
"See readme.md for instructions": "Zie readme.md voor instructies",
|
"See readme.md for instructions": "Zie readme.md voor instructies",
|
||||||
"See what's new": "Zie wat er nieuw is",
|
"See what's new": "Zie wat er nieuw is",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "Selecteer een pijplijn",
|
"Select a pipeline": "Selecteer een pijplijn",
|
||||||
"Select a pipeline url": "Selecteer een pijplijn-URL",
|
"Select a pipeline url": "Selecteer een pijplijn-URL",
|
||||||
"Select an Ollama instance": "Selecteer een Ollama instantie",
|
"Select an Ollama instance": "Selecteer een Ollama instantie",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Selecteer een model",
|
"Select model": "Selecteer een model",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Geselecteerde modellen ondersteunen geen beeldinvoer",
|
"Selected model(s) do not support image inputs": "Geselecteerde modellen ondersteunen geen beeldinvoer",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "Stuur bericht",
|
"Send message": "Stuur bericht",
|
||||||
"September": "September",
|
"September": "September",
|
||||||
"Serper API Key": "Serper API-sleutel",
|
"Serper API Key": "Serper API-sleutel",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API-sleutel",
|
"Serpstack API Key": "Serpstack API-sleutel",
|
||||||
"Server connection verified": "Server verbinding geverifieerd",
|
"Server connection verified": "Server verbinding geverifieerd",
|
||||||
"Set as default": "Stel in als standaard",
|
"Set as default": "Stel in als standaard",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "Om de beschikbare modelnamen voor downloaden te openen,",
|
"To access the available model names for downloading,": "Om de beschikbare modelnamen voor downloaden te openen,",
|
||||||
"To access the GGUF models available for downloading,": "Om toegang te krijgen tot de GGUF modellen die beschikbaar zijn voor downloaden,",
|
"To access the GGUF models available for downloading,": "Om toegang te krijgen tot de GGUF modellen die beschikbaar zijn voor downloaden,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "naar chat input.",
|
"to chat input.": "naar chat input.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Vandaag",
|
"Today": "Vandaag",
|
||||||
"Toggle settings": "Wissel instellingen",
|
"Toggle settings": "Wissel instellingen",
|
||||||
"Toggle sidebar": "Wissel sidebar",
|
"Toggle sidebar": "Wissel sidebar",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Problemen met toegang tot Ollama?",
|
"Trouble accessing Ollama?": "Problemen met toegang tot Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "ਪ੍ਰਬੰਧਕ ਪੈਨਲ",
|
"Admin Panel": "ਪ੍ਰਬੰਧਕ ਪੈਨਲ",
|
||||||
"Admin Settings": "ਪ੍ਰਬੰਧਕ ਸੈਟਿੰਗਾਂ",
|
"Admin Settings": "ਪ੍ਰਬੰਧਕ ਸੈਟਿੰਗਾਂ",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "ਉੱਚ ਸਤਰ ਦੇ ਪੈਰਾਮੀਟਰ",
|
"Advanced Parameters": "ਉੱਚ ਸਤਰ ਦੇ ਪੈਰਾਮੀਟਰ",
|
||||||
"Advanced Params": "ਐਡਵਾਂਸਡ ਪਰਮਜ਼",
|
"Advanced Params": "ਐਡਵਾਂਸਡ ਪਰਮਜ਼",
|
||||||
"all": "ਸਾਰੇ",
|
"all": "ਸਾਰੇ",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "ਸਕੋਰ ਦਰਜ ਕਰੋ",
|
"Enter Score": "ਸਕੋਰ ਦਰਜ ਕਰੋ",
|
||||||
"Enter Searxng Query URL": "Searxng Query URL ਦਾਖਲ ਕਰੋ",
|
"Enter Searxng Query URL": "Searxng Query URL ਦਾਖਲ ਕਰੋ",
|
||||||
"Enter Serper API Key": "Serper API ਕੁੰਜੀ ਦਾਖਲ ਕਰੋ",
|
"Enter Serper API Key": "Serper API ਕੁੰਜੀ ਦਾਖਲ ਕਰੋ",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Serpstack API ਕੁੰਜੀ ਦਾਖਲ ਕਰੋ",
|
"Enter Serpstack API Key": "Serpstack API ਕੁੰਜੀ ਦਾਖਲ ਕਰੋ",
|
||||||
"Enter stop sequence": "ਰੋਕਣ ਦਾ ਕ੍ਰਮ ਦਰਜ ਕਰੋ",
|
"Enter stop sequence": "ਰੋਕਣ ਦਾ ਕ੍ਰਮ ਦਰਜ ਕਰੋ",
|
||||||
"Enter Top K": "ਸਿਖਰ K ਦਰਜ ਕਰੋ",
|
"Enter Top K": "ਸਿਖਰ K ਦਰਜ ਕਰੋ",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "ਡਾਕੂਮੈਂਟ ਮੈਪਿੰਗ ਨਿਰਯਾਤ ਕਰੋ",
|
"Export Documents Mapping": "ਡਾਕੂਮੈਂਟ ਮੈਪਿੰਗ ਨਿਰਯਾਤ ਕਰੋ",
|
||||||
"Export Models": "ਨਿਰਯਾਤ ਮਾਡਲ",
|
"Export Models": "ਨਿਰਯਾਤ ਮਾਡਲ",
|
||||||
"Export Prompts": "ਪ੍ਰੰਪਟ ਨਿਰਯਾਤ ਕਰੋ",
|
"Export Prompts": "ਪ੍ਰੰਪਟ ਨਿਰਯਾਤ ਕਰੋ",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "API ਕੁੰਜੀ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ।",
|
"Failed to create API Key.": "API ਕੁੰਜੀ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ।",
|
||||||
"Failed to read clipboard contents": "ਕਲਿੱਪਬੋਰਡ ਸਮੱਗਰੀ ਪੜ੍ਹਣ ਵਿੱਚ ਅਸਫਲ",
|
"Failed to read clipboard contents": "ਕਲਿੱਪਬੋਰਡ ਸਮੱਗਰੀ ਪੜ੍ਹਣ ਵਿੱਚ ਅਸਫਲ",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "ਡਾਕੂਮੈਂਟ ਮੈਪਿੰਗ ਆਯਾਤ ਕਰੋ",
|
"Import Documents Mapping": "ਡਾਕੂਮੈਂਟ ਮੈਪਿੰਗ ਆਯਾਤ ਕਰੋ",
|
||||||
"Import Models": "ਮਾਡਲ ਆਯਾਤ ਕਰੋ",
|
"Import Models": "ਮਾਡਲ ਆਯਾਤ ਕਰੋ",
|
||||||
"Import Prompts": "ਪ੍ਰੰਪਟ ਆਯਾਤ ਕਰੋ",
|
"Import Prompts": "ਪ੍ਰੰਪਟ ਆਯਾਤ ਕਰੋ",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "ਸਟੇਬਲ-ਡਿਫਿਊਸ਼ਨ-ਵੈਬਯੂਆਈ ਚਲਾਉਣ ਸਮੇਂ `--api` ਝੰਡਾ ਸ਼ਾਮਲ ਕਰੋ",
|
"Include `--api` flag when running stable-diffusion-webui": "ਸਟੇਬਲ-ਡਿਫਿਊਸ਼ਨ-ਵੈਬਯੂਆਈ ਚਲਾਉਣ ਸਮੇਂ `--api` ਝੰਡਾ ਸ਼ਾਮਲ ਕਰੋ",
|
||||||
"Info": "ਜਾਣਕਾਰੀ",
|
"Info": "ਜਾਣਕਾਰੀ",
|
||||||
"Input commands": "ਇਨਪੁਟ ਕਮਾਂਡਾਂ",
|
"Input commands": "ਇਨਪੁਟ ਕਮਾਂਡਾਂ",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "ਖੋਜ ਨਤੀਜੇ ਦੀ ਗਿਣਤੀ",
|
"Search Result Count": "ਖੋਜ ਨਤੀਜੇ ਦੀ ਗਿਣਤੀ",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "ਖੋਜਿਆ {{count}} sites_one",
|
"Searched {{count}} sites_one": "ਖੋਜਿਆ {{count}} sites_one",
|
||||||
"Searched {{count}} sites_other": "ਖੋਜਿਆ {{count}} sites_other",
|
"Searched {{count}} sites_other": "ਖੋਜਿਆ {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "'{{searchQuery}}' ਲਈ ਵੈੱਬ 'ਤੇ ਖੋਜ ਕਰਨਾ",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng Query URL",
|
"Searxng Query URL": "Searxng Query URL",
|
||||||
"See readme.md for instructions": "ਹਦਾਇਤਾਂ ਲਈ readme.md ਵੇਖੋ",
|
"See readme.md for instructions": "ਹਦਾਇਤਾਂ ਲਈ readme.md ਵੇਖੋ",
|
||||||
"See what's new": "ਨਵਾਂ ਕੀ ਹੈ ਵੇਖੋ",
|
"See what's new": "ਨਵਾਂ ਕੀ ਹੈ ਵੇਖੋ",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "ਪਾਈਪਲਾਈਨ ਚੁਣੋ",
|
"Select a pipeline": "ਪਾਈਪਲਾਈਨ ਚੁਣੋ",
|
||||||
"Select a pipeline url": "ਪਾਈਪਲਾਈਨ URL ਚੁਣੋ",
|
"Select a pipeline url": "ਪਾਈਪਲਾਈਨ URL ਚੁਣੋ",
|
||||||
"Select an Ollama instance": "ਇੱਕ ਓਲਾਮਾ ਇੰਸਟੈਂਸ ਚੁਣੋ",
|
"Select an Ollama instance": "ਇੱਕ ਓਲਾਮਾ ਇੰਸਟੈਂਸ ਚੁਣੋ",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "ਮਾਡਲ ਚੁਣੋ",
|
"Select model": "ਮਾਡਲ ਚੁਣੋ",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "ਚੁਣੇ ਗਏ ਮਾਡਲ(ਆਂ) ਚਿੱਤਰ ਇਨਪੁੱਟਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ",
|
"Selected model(s) do not support image inputs": "ਚੁਣੇ ਗਏ ਮਾਡਲ(ਆਂ) ਚਿੱਤਰ ਇਨਪੁੱਟਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "ਸੁਨੇਹਾ ਭੇਜੋ",
|
"Send message": "ਸੁਨੇਹਾ ਭੇਜੋ",
|
||||||
"September": "ਸਤੰਬਰ",
|
"September": "ਸਤੰਬਰ",
|
||||||
"Serper API Key": "Serper API ਕੁੰਜੀ",
|
"Serper API Key": "Serper API ਕੁੰਜੀ",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API ਕੁੰਜੀ",
|
"Serpstack API Key": "Serpstack API ਕੁੰਜੀ",
|
||||||
"Server connection verified": "ਸਰਵਰ ਕਨੈਕਸ਼ਨ ਦੀ ਪੁਸ਼ਟੀ ਕੀਤੀ ਗਈ",
|
"Server connection verified": "ਸਰਵਰ ਕਨੈਕਸ਼ਨ ਦੀ ਪੁਸ਼ਟੀ ਕੀਤੀ ਗਈ",
|
||||||
"Set as default": "ਮੂਲ ਵਜੋਂ ਸੈੱਟ ਕਰੋ",
|
"Set as default": "ਮੂਲ ਵਜੋਂ ਸੈੱਟ ਕਰੋ",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਉਪਲਬਧ ਮਾਡਲ ਨਾਮਾਂ ਤੱਕ ਪਹੁੰਚਣ ਲਈ,",
|
"To access the available model names for downloading,": "ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਉਪਲਬਧ ਮਾਡਲ ਨਾਮਾਂ ਤੱਕ ਪਹੁੰਚਣ ਲਈ,",
|
||||||
"To access the GGUF models available for downloading,": "ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਉਪਲਬਧ GGUF ਮਾਡਲਾਂ ਤੱਕ ਪਹੁੰਚਣ ਲਈ,",
|
"To access the GGUF models available for downloading,": "ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਉਪਲਬਧ GGUF ਮਾਡਲਾਂ ਤੱਕ ਪਹੁੰਚਣ ਲਈ,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "ਗੱਲਬਾਤ ਇਨਪੁਟ ਲਈ।",
|
"to chat input.": "ਗੱਲਬਾਤ ਇਨਪੁਟ ਲਈ।",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "ਅੱਜ",
|
"Today": "ਅੱਜ",
|
||||||
"Toggle settings": "ਸੈਟਿੰਗਾਂ ਟੌਗਲ ਕਰੋ",
|
"Toggle settings": "ਸੈਟਿੰਗਾਂ ਟੌਗਲ ਕਰੋ",
|
||||||
"Toggle sidebar": "ਸਾਈਡਬਾਰ ਟੌਗਲ ਕਰੋ",
|
"Toggle sidebar": "ਸਾਈਡਬਾਰ ਟੌਗਲ ਕਰੋ",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "ਸਿਖਰ K",
|
"Top K": "ਸਿਖਰ K",
|
||||||
"Top P": "ਸਿਖਰ P",
|
"Top P": "ਸਿਖਰ P",
|
||||||
"Trouble accessing Ollama?": "ਓਲਾਮਾ ਤੱਕ ਪਹੁੰਚਣ ਵਿੱਚ ਮੁਸ਼ਕਲ?",
|
"Trouble accessing Ollama?": "ਓਲਾਮਾ ਤੱਕ ਪਹੁੰਚਣ ਵਿੱਚ ਮੁਸ਼ਕਲ?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Panel administracyjny",
|
"Admin Panel": "Panel administracyjny",
|
||||||
"Admin Settings": "Ustawienia administratora",
|
"Admin Settings": "Ustawienia administratora",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Zaawansowane parametry",
|
"Advanced Parameters": "Zaawansowane parametry",
|
||||||
"Advanced Params": "Zaawansowane parametry",
|
"Advanced Params": "Zaawansowane parametry",
|
||||||
"all": "wszyscy",
|
"all": "wszyscy",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Wprowadź wynik",
|
"Enter Score": "Wprowadź wynik",
|
||||||
"Enter Searxng Query URL": "Wprowadź adres URL zapytania Searxng",
|
"Enter Searxng Query URL": "Wprowadź adres URL zapytania Searxng",
|
||||||
"Enter Serper API Key": "Wprowadź klucz API Serper",
|
"Enter Serper API Key": "Wprowadź klucz API Serper",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Wprowadź klucz API Serpstack",
|
"Enter Serpstack API Key": "Wprowadź klucz API Serpstack",
|
||||||
"Enter stop sequence": "Wprowadź sekwencję zatrzymania",
|
"Enter stop sequence": "Wprowadź sekwencję zatrzymania",
|
||||||
"Enter Top K": "Wprowadź Top K",
|
"Enter Top K": "Wprowadź Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Eksportuj mapowanie dokumentów",
|
"Export Documents Mapping": "Eksportuj mapowanie dokumentów",
|
||||||
"Export Models": "Eksportuj modele",
|
"Export Models": "Eksportuj modele",
|
||||||
"Export Prompts": "Eksportuj prompty",
|
"Export Prompts": "Eksportuj prompty",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Nie udało się utworzyć klucza API.",
|
"Failed to create API Key.": "Nie udało się utworzyć klucza API.",
|
||||||
"Failed to read clipboard contents": "Nie udało się odczytać zawartości schowka",
|
"Failed to read clipboard contents": "Nie udało się odczytać zawartości schowka",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Importuj mapowanie dokumentów",
|
"Import Documents Mapping": "Importuj mapowanie dokumentów",
|
||||||
"Import Models": "Importowanie modeli",
|
"Import Models": "Importowanie modeli",
|
||||||
"Import Prompts": "Importuj prompty",
|
"Import Prompts": "Importuj prompty",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Dołącz flagę `--api` podczas uruchamiania stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Dołącz flagę `--api` podczas uruchamiania stable-diffusion-webui",
|
||||||
"Info": "Informacji",
|
"Info": "Informacji",
|
||||||
"Input commands": "Wprowadź komendy",
|
"Input commands": "Wprowadź komendy",
|
||||||
@@ -419,11 +423,12 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Liczba wyników wyszukiwania",
|
"Search Result Count": "Liczba wyników wyszukiwania",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Wyszukiwano {{count}} sites_one",
|
"Searched {{count}} sites_one": "Wyszukiwano {{count}} sites_one",
|
||||||
"Searched {{count}} sites_few": "Wyszukiwano {{count}} sites_few",
|
"Searched {{count}} sites_few": "Wyszukiwano {{count}} sites_few",
|
||||||
"Searched {{count}} sites_many": "Wyszukiwano {{count}} sites_many",
|
"Searched {{count}} sites_many": "Wyszukiwano {{count}} sites_many",
|
||||||
"Searched {{count}} sites_other": "Wyszukiwano {{count}} sites_other",
|
"Searched {{count}} sites_other": "Wyszukiwano {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Wyszukiwanie w Internecie \"{{searchQuery}}\"",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Adres URL zapytania Searxng",
|
"Searxng Query URL": "Adres URL zapytania Searxng",
|
||||||
"See readme.md for instructions": "Zajrzyj do readme.md po instrukcje",
|
"See readme.md for instructions": "Zajrzyj do readme.md po instrukcje",
|
||||||
"See what's new": "Zobacz co nowego",
|
"See what's new": "Zobacz co nowego",
|
||||||
@@ -435,6 +440,7 @@
|
|||||||
"Select a pipeline": "Wybieranie potoku",
|
"Select a pipeline": "Wybieranie potoku",
|
||||||
"Select a pipeline url": "Wybieranie adresu URL potoku",
|
"Select a pipeline url": "Wybieranie adresu URL potoku",
|
||||||
"Select an Ollama instance": "Wybierz instancję Ollama",
|
"Select an Ollama instance": "Wybierz instancję Ollama",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Wybierz model",
|
"Select model": "Wybierz model",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Wybrane modele nie obsługują danych wejściowych obrazu",
|
"Selected model(s) do not support image inputs": "Wybrane modele nie obsługują danych wejściowych obrazu",
|
||||||
@@ -443,6 +449,7 @@
|
|||||||
"Send message": "Wyślij wiadomość",
|
"Send message": "Wyślij wiadomość",
|
||||||
"September": "Wrzesień",
|
"September": "Wrzesień",
|
||||||
"Serper API Key": "Klucz API Serper",
|
"Serper API Key": "Klucz API Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Klucz API Serpstack",
|
"Serpstack API Key": "Klucz API Serpstack",
|
||||||
"Server connection verified": "Połączenie z serwerem zweryfikowane",
|
"Server connection verified": "Połączenie z serwerem zweryfikowane",
|
||||||
"Set as default": "Ustaw jako domyślne",
|
"Set as default": "Ustaw jako domyślne",
|
||||||
@@ -507,10 +514,13 @@
|
|||||||
"To access the available model names for downloading,": "Aby uzyskać dostęp do dostępnych nazw modeli do pobrania,",
|
"To access the available model names for downloading,": "Aby uzyskać dostęp do dostępnych nazw modeli do pobrania,",
|
||||||
"To access the GGUF models available for downloading,": "Aby uzyskać dostęp do dostępnych modeli GGUF do pobrania,",
|
"To access the GGUF models available for downloading,": "Aby uzyskać dostęp do dostępnych modeli GGUF do pobrania,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "do pola wprowadzania czatu.",
|
"to chat input.": "do pola wprowadzania czatu.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Dzisiaj",
|
"Today": "Dzisiaj",
|
||||||
"Toggle settings": "Przełącz ustawienia",
|
"Toggle settings": "Przełącz ustawienia",
|
||||||
"Toggle sidebar": "Przełącz panel boczny",
|
"Toggle sidebar": "Przełącz panel boczny",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Najlepsze K",
|
"Top K": "Najlepsze K",
|
||||||
"Top P": "Najlepsze P",
|
"Top P": "Najlepsze P",
|
||||||
"Trouble accessing Ollama?": "Problemy z dostępem do Ollama?",
|
"Trouble accessing Ollama?": "Problemy z dostępem do Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Painel do Administrador",
|
"Admin Panel": "Painel do Administrador",
|
||||||
"Admin Settings": "Configurações do Administrador",
|
"Admin Settings": "Configurações do Administrador",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Parâmetros Avançados",
|
"Advanced Parameters": "Parâmetros Avançados",
|
||||||
"Advanced Params": "Params Avançados",
|
"Advanced Params": "Params Avançados",
|
||||||
"all": "todos",
|
"all": "todos",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Digite a Pontuação",
|
"Enter Score": "Digite a Pontuação",
|
||||||
"Enter Searxng Query URL": "Insira a URL de consulta do Searxng",
|
"Enter Searxng Query URL": "Insira a URL de consulta do Searxng",
|
||||||
"Enter Serper API Key": "Digite a chave da API do Serper",
|
"Enter Serper API Key": "Digite a chave da API do Serper",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Digite a chave da API Serpstack",
|
"Enter Serpstack API Key": "Digite a chave da API Serpstack",
|
||||||
"Enter stop sequence": "Digite a sequência de parada",
|
"Enter stop sequence": "Digite a sequência de parada",
|
||||||
"Enter Top K": "Digite o Top K",
|
"Enter Top K": "Digite o Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Exportar Mapeamento de Documentos",
|
"Export Documents Mapping": "Exportar Mapeamento de Documentos",
|
||||||
"Export Models": "Modelos de Exportação",
|
"Export Models": "Modelos de Exportação",
|
||||||
"Export Prompts": "Exportar Prompts",
|
"Export Prompts": "Exportar Prompts",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Falha ao criar a Chave da API.",
|
"Failed to create API Key.": "Falha ao criar a Chave da API.",
|
||||||
"Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência",
|
"Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Importar Mapeamento de Documentos",
|
"Import Documents Mapping": "Importar Mapeamento de Documentos",
|
||||||
"Import Models": "Modelos de Importação",
|
"Import Models": "Modelos de Importação",
|
||||||
"Import Prompts": "Importar Prompts",
|
"Import Prompts": "Importar Prompts",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Inclua a flag `--api` ao executar stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Inclua a flag `--api` ao executar stable-diffusion-webui",
|
||||||
"Info": "Informação",
|
"Info": "Informação",
|
||||||
"Input commands": "Comandos de entrada",
|
"Input commands": "Comandos de entrada",
|
||||||
@@ -419,10 +423,11 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Contagem de resultados de pesquisa",
|
"Search Result Count": "Contagem de resultados de pesquisa",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Pesquisado {{count}} sites_one",
|
"Searched {{count}} sites_one": "Pesquisado {{count}} sites_one",
|
||||||
"Searched {{count}} sites_many": "Pesquisado {{count}} sites_many",
|
"Searched {{count}} sites_many": "Pesquisado {{count}} sites_many",
|
||||||
"Searched {{count}} sites_other": "Pesquisado {{count}} sites_other",
|
"Searched {{count}} sites_other": "Pesquisado {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Pesquisando na Web por '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "URL de consulta Searxng",
|
"Searxng Query URL": "URL de consulta Searxng",
|
||||||
"See readme.md for instructions": "Consulte readme.md para obter instruções",
|
"See readme.md for instructions": "Consulte readme.md para obter instruções",
|
||||||
"See what's new": "Veja o que há de novo",
|
"See what's new": "Veja o que há de novo",
|
||||||
@@ -434,6 +439,7 @@
|
|||||||
"Select a pipeline": "Selecione um pipeline",
|
"Select a pipeline": "Selecione um pipeline",
|
||||||
"Select a pipeline url": "Selecione uma URL de pipeline",
|
"Select a pipeline url": "Selecione uma URL de pipeline",
|
||||||
"Select an Ollama instance": "Selecione uma instância Ollama",
|
"Select an Ollama instance": "Selecione uma instância Ollama",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Selecione um modelo",
|
"Select model": "Selecione um modelo",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "O(s) modelo(s) selecionado(s) não suporta(m) entrada(s) de imagem",
|
"Selected model(s) do not support image inputs": "O(s) modelo(s) selecionado(s) não suporta(m) entrada(s) de imagem",
|
||||||
@@ -442,6 +448,7 @@
|
|||||||
"Send message": "Enviar mensagem",
|
"Send message": "Enviar mensagem",
|
||||||
"September": "Setembro",
|
"September": "Setembro",
|
||||||
"Serper API Key": "Chave de API Serper",
|
"Serper API Key": "Chave de API Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Chave de API Serpstack",
|
"Serpstack API Key": "Chave de API Serpstack",
|
||||||
"Server connection verified": "Conexão com o servidor verificada",
|
"Server connection verified": "Conexão com o servidor verificada",
|
||||||
"Set as default": "Definir como padrão",
|
"Set as default": "Definir como padrão",
|
||||||
@@ -506,10 +513,13 @@
|
|||||||
"To access the available model names for downloading,": "Para acessar os nomes de modelo disponíveis para download,",
|
"To access the available model names for downloading,": "Para acessar os nomes de modelo disponíveis para download,",
|
||||||
"To access the GGUF models available for downloading,": "Para acessar os modelos GGUF disponíveis para download,",
|
"To access the GGUF models available for downloading,": "Para acessar os modelos GGUF disponíveis para download,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "para a entrada de bate-papo.",
|
"to chat input.": "para a entrada de bate-papo.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Hoje",
|
"Today": "Hoje",
|
||||||
"Toggle settings": "Alternar configurações",
|
"Toggle settings": "Alternar configurações",
|
||||||
"Toggle sidebar": "Alternar barra lateral",
|
"Toggle sidebar": "Alternar barra lateral",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Problemas para acessar o Ollama?",
|
"Trouble accessing Ollama?": "Problemas para acessar o Ollama?",
|
||||||
|
|||||||
@@ -5,16 +5,16 @@
|
|||||||
"(latest)": "(mais recente)",
|
"(latest)": "(mais recente)",
|
||||||
"{{ models }}": "{{ modelos }}",
|
"{{ models }}": "{{ modelos }}",
|
||||||
"{{ owner }}: You cannot delete a base model": "{{ owner }}: Não é possível excluir um modelo base",
|
"{{ owner }}: You cannot delete a base model": "{{ owner }}: Não é possível excluir um modelo base",
|
||||||
"{{modelName}} is thinking...": "{{modelName}} está pensando...",
|
"{{modelName}} is thinking...": "{{modelName}} está a pensar...",
|
||||||
"{{user}}'s Chats": "{{user}}'s Chats",
|
"{{user}}'s Chats": "{{user}}'s Chats",
|
||||||
"{{webUIName}} Backend Required": "{{webUIName}} Backend Necessário",
|
"{{webUIName}} Backend Required": "{{webUIName}} Backend Necessário",
|
||||||
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Um modelo de tarefa é usado ao executar tarefas como gerar títulos para bate-papos e consultas de pesquisa na Web",
|
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Um modelo de tarefa é usado ao executar tarefas como gerar títulos para bate-papos e consultas de pesquisa na Web",
|
||||||
"a user": "um usuário",
|
"a user": "um utilizador",
|
||||||
"About": "Sobre",
|
"About": "Acerca de",
|
||||||
"Account": "Conta",
|
"Account": "Conta",
|
||||||
"Account Activation Pending": "",
|
"Account Activation Pending": "Ativação da Conta Pendente",
|
||||||
"Accurate information": "Informações precisas",
|
"Accurate information": "Informações precisas",
|
||||||
"Active Users": "",
|
"Active Users": "Utilizadores Ativos",
|
||||||
"Add": "Adicionar",
|
"Add": "Adicionar",
|
||||||
"Add a model id": "Adicionar um ID de modelo",
|
"Add a model id": "Adicionar um ID de modelo",
|
||||||
"Add a short description about what this model does": "Adicione uma breve descrição sobre o que este modelo faz",
|
"Add a short description about what this model does": "Adicione uma breve descrição sobre o que este modelo faz",
|
||||||
@@ -22,30 +22,31 @@
|
|||||||
"Add a tag": "Adicionar uma tag",
|
"Add a tag": "Adicionar uma tag",
|
||||||
"Add custom prompt": "Adicionar um prompt curto",
|
"Add custom prompt": "Adicionar um prompt curto",
|
||||||
"Add Docs": "Adicionar Documentos",
|
"Add Docs": "Adicionar Documentos",
|
||||||
"Add Files": "Adicionar Arquivos",
|
"Add Files": "Adicionar Ficheiros",
|
||||||
"Add Memory": "Adicionar memória",
|
"Add Memory": "Adicionar memória",
|
||||||
"Add message": "Adicionar mensagem",
|
"Add message": "Adicionar mensagem",
|
||||||
"Add Model": "Adicionar modelo",
|
"Add Model": "Adicionar modelo",
|
||||||
"Add Tags": "adicionar tags",
|
"Add Tags": "adicionar tags",
|
||||||
"Add User": "Adicionar Usuário",
|
"Add User": "Adicionar Utilizador",
|
||||||
"Adjusting these settings will apply changes universally to all users.": "Ajustar essas configurações aplicará alterações universalmente a todos os usuários.",
|
"Adjusting these settings will apply changes universally to all users.": "Ajustar essas configurações aplicará alterações universalmente a todos os utilizadores.",
|
||||||
"admin": "administrador",
|
"admin": "administrador",
|
||||||
"Admin": "",
|
"Admin": "Admin",
|
||||||
"Admin Panel": "Painel do Administrador",
|
"Admin Panel": "Painel do Administrador",
|
||||||
"Admin Settings": "Configurações do Administrador",
|
"Admin Settings": "Configurações do Administrador",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Parâmetros Avançados",
|
"Advanced Parameters": "Parâmetros Avançados",
|
||||||
"Advanced Params": "Params Avançados",
|
"Advanced Params": "Params Avançados",
|
||||||
"all": "todos",
|
"all": "todos",
|
||||||
"All Documents": "Todos os Documentos",
|
"All Documents": "Todos os Documentos",
|
||||||
"All Users": "Todos os Usuários",
|
"All Users": "Todos os utilizadores",
|
||||||
"Allow": "Permitir",
|
"Allow": "Permitir",
|
||||||
"Allow Chat Deletion": "Permitir Exclusão de Bate-papo",
|
"Allow Chat Deletion": "Permitir Exclusão de Conversa",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "Permitir vozes não locais",
|
||||||
"alphanumeric characters and hyphens": "caracteres alfanuméricos e hífens",
|
"alphanumeric characters and hyphens": "caracteres alfanuméricos e hífens",
|
||||||
"Already have an account?": "Já tem uma conta?",
|
"Already have an account?": "Já tem uma conta?",
|
||||||
"an assistant": "um assistente",
|
"an assistant": "um assistente",
|
||||||
"and": "e",
|
"and": "e",
|
||||||
"and create a new shared link.": "e criar um novo link compartilhado.",
|
"and create a new shared link.": "e criar um novo link partilhado.",
|
||||||
"API Base URL": "URL Base da API",
|
"API Base URL": "URL Base da API",
|
||||||
"API Key": "Chave da API",
|
"API Key": "Chave da API",
|
||||||
"API Key created.": "Chave da API criada.",
|
"API Key created.": "Chave da API criada.",
|
||||||
@@ -53,69 +54,69 @@
|
|||||||
"April": "Abril",
|
"April": "Abril",
|
||||||
"Archive": "Arquivo",
|
"Archive": "Arquivo",
|
||||||
"Archive All Chats": "Arquivar todos os chats",
|
"Archive All Chats": "Arquivar todos os chats",
|
||||||
"Archived Chats": "Bate-papos arquivados",
|
"Archived Chats": "Conversas arquivadas",
|
||||||
"are allowed - Activate this command by typing": "são permitidos - Ative este comando digitando",
|
"are allowed - Activate this command by typing": "são permitidos - Ative este comando escrevendo",
|
||||||
"Are you sure?": "Tem certeza?",
|
"Are you sure?": "Tem a certeza?",
|
||||||
"Attach file": "Anexar arquivo",
|
"Attach file": "Anexar ficheiro",
|
||||||
"Attention to detail": "Detalhado",
|
"Attention to detail": "Detalhado",
|
||||||
"Audio": "Áudio",
|
"Audio": "Áudio",
|
||||||
"August": "Agosto",
|
"August": "Agosto",
|
||||||
"Auto-playback response": "Reprodução automática da resposta",
|
"Auto-playback response": "Reprodução automática da resposta",
|
||||||
"AUTOMATIC1111 Base URL": "URL Base do AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "URL Base do AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "A URL Base do AUTOMATIC1111 é obrigatória.",
|
"AUTOMATIC1111 Base URL is required.": "O URL Base do AUTOMATIC1111 é obrigatório.",
|
||||||
"available!": "disponível!",
|
"available!": "disponível!",
|
||||||
"Back": "Voltar",
|
"Back": "Voltar",
|
||||||
"Bad Response": "Resposta ruim",
|
"Bad Response": "Resposta má",
|
||||||
"Banners": "Estandartes",
|
"Banners": "Estandartes",
|
||||||
"Base Model (From)": "Modelo Base (De)",
|
"Base Model (From)": "Modelo Base (De)",
|
||||||
"before": "antes",
|
"before": "antes",
|
||||||
"Being lazy": "Ser preguiçoso",
|
"Being lazy": "Ser preguiçoso",
|
||||||
"Brave Search API Key": "Chave da API de Pesquisa Admirável",
|
"Brave Search API Key": "Chave da API de Pesquisa Brave",
|
||||||
"Bypass SSL verification for Websites": "Ignorar verificação SSL para sites",
|
"Bypass SSL verification for Websites": "Ignorar verificação SSL para sites",
|
||||||
"Call": "",
|
"Call": "Chamar",
|
||||||
"Call feature is not supported when using Web STT engine": "",
|
"Call feature is not supported when using Web STT engine": "A funcionalide de Chamar não é suportada quando usa um motor Web STT",
|
||||||
"Camera": "",
|
"Camera": "Camera",
|
||||||
"Cancel": "Cancelar",
|
"Cancel": "Cancelar",
|
||||||
"Capabilities": "Capacidades",
|
"Capabilities": "Capacidades",
|
||||||
"Change Password": "Alterar Senha",
|
"Change Password": "Alterar Senha",
|
||||||
"Chat": "Bate-papo",
|
"Chat": "Conversa",
|
||||||
"Chat Bubble UI": "UI de Bala de Bate-papo",
|
"Chat Bubble UI": "Bolha UI da Conversa",
|
||||||
"Chat direction": "Direção do Bate-papo",
|
"Chat direction": "Direção da Conversa",
|
||||||
"Chat History": "Histórico de Bate-papo",
|
"Chat History": "Histórico da Conversa",
|
||||||
"Chat History is off for this browser.": "O histórico de bate-papo está desativado para este navegador.",
|
"Chat History is off for this browser.": "O histórico da conversa está desativado para este navegador.",
|
||||||
"Chats": "Bate-papos",
|
"Chats": "Conversas",
|
||||||
"Check Again": "Verifique novamente",
|
"Check Again": "Verifique novamente",
|
||||||
"Check for updates": "Verificar atualizações",
|
"Check for updates": "Verificar atualizações",
|
||||||
"Checking for updates...": "Verificando atualizações...",
|
"Checking for updates...": "Verificando atualizações...",
|
||||||
"Choose a model before saving...": "Escolha um modelo antes de salvar...",
|
"Choose a model before saving...": "Escolha um modelo antes de guardar...",
|
||||||
"Chunk Overlap": "Sobreposição de Fragmento",
|
"Chunk Overlap": "Sobreposição de Fragmento",
|
||||||
"Chunk Params": "Parâmetros de Fragmento",
|
"Chunk Params": "Parâmetros de Fragmento",
|
||||||
"Chunk Size": "Tamanho do Fragmento",
|
"Chunk Size": "Tamanho do Fragmento",
|
||||||
"Citation": "Citação",
|
"Citation": "Citação",
|
||||||
"Clear memory": "",
|
"Clear memory": "Limpar memória",
|
||||||
"Click here for help.": "Clique aqui para obter ajuda.",
|
"Click here for help.": "Clique aqui para obter ajuda.",
|
||||||
"Click here to": "Clique aqui para",
|
"Click here to": "Clique aqui para",
|
||||||
"Click here to select": "Clique aqui para selecionar",
|
"Click here to select": "Clique aqui para selecionar",
|
||||||
"Click here to select a csv file.": "Clique aqui para selecionar um arquivo csv.",
|
"Click here to select a csv file.": "Clique aqui para selecionar um ficheiro csv.",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "Clique aqui para selecionar um ficheiro py",
|
||||||
"Click here to select documents.": "Clique aqui para selecionar documentos.",
|
"Click here to select documents.": "Clique aqui para selecionar documentos.",
|
||||||
"click here.": "clique aqui.",
|
"click here.": "clique aqui.",
|
||||||
"Click on the user role button to change a user's role.": "Clique no botão de função do usuário para alterar a função de um usuário.",
|
"Click on the user role button to change a user's role.": "Clique no botão de função do utilizador para alterar a função de um utilizador.",
|
||||||
"Clone": "Clone",
|
"Clone": "Clonar",
|
||||||
"Close": "Fechar",
|
"Close": "Fechar",
|
||||||
"Collection": "Coleção",
|
"Collection": "Coleção",
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "URL Base do ComfyUI",
|
"ComfyUI Base URL": "URL Base do ComfyUI",
|
||||||
"ComfyUI Base URL is required.": "A URL Base do ComfyUI é obrigatória.",
|
"ComfyUI Base URL is required.": "O URL Base do ComfyUI é obrigatório.",
|
||||||
"Command": "Comando",
|
"Command": "Comando",
|
||||||
"Concurrent Requests": "Solicitações simultâneas",
|
"Concurrent Requests": "Solicitações simultâneas",
|
||||||
"Confirm Password": "Confirmar Senha",
|
"Confirm Password": "Confirmar Senha",
|
||||||
"Connections": "Conexões",
|
"Connections": "Conexões",
|
||||||
"Contact Admin for WebUI Access": "",
|
"Contact Admin for WebUI Access": "Contatar Admin para acesso ao WebUI",
|
||||||
"Content": "Conteúdo",
|
"Content": "Conteúdo",
|
||||||
"Context Length": "Comprimento do Contexto",
|
"Context Length": "Comprimento do Contexto",
|
||||||
"Continue Response": "Continuar resposta",
|
"Continue Response": "Continuar resposta",
|
||||||
"Copied shared chat URL to clipboard!": "URL de bate-papo compartilhado copiada com sucesso!",
|
"Copied shared chat URL to clipboard!": "URL de Conversa partilhado copiada com sucesso!",
|
||||||
"Copy": "Copiar",
|
"Copy": "Copiar",
|
||||||
"Copy last code block": "Copiar último bloco de código",
|
"Copy last code block": "Copiar último bloco de código",
|
||||||
"Copy last response": "Copiar última resposta",
|
"Copy last response": "Copiar última resposta",
|
||||||
@@ -132,8 +133,8 @@
|
|||||||
"Custom": "Personalizado",
|
"Custom": "Personalizado",
|
||||||
"Customize models for a specific purpose": "Personalizar modelos para uma finalidade específica",
|
"Customize models for a specific purpose": "Personalizar modelos para uma finalidade específica",
|
||||||
"Dark": "Escuro",
|
"Dark": "Escuro",
|
||||||
"Dashboard": "",
|
"Dashboard": "Painel",
|
||||||
"Database": "Banco de dados",
|
"Database": "Base de dados",
|
||||||
"December": "Dezembro",
|
"December": "Dezembro",
|
||||||
"Default": "Padrão",
|
"Default": "Padrão",
|
||||||
"Default (Automatic1111)": "Padrão (Automatic1111)",
|
"Default (Automatic1111)": "Padrão (Automatic1111)",
|
||||||
@@ -141,126 +142,129 @@
|
|||||||
"Default Model": "Modelo padrão",
|
"Default Model": "Modelo padrão",
|
||||||
"Default model updated": "Modelo padrão atualizado",
|
"Default model updated": "Modelo padrão atualizado",
|
||||||
"Default Prompt Suggestions": "Sugestões de Prompt Padrão",
|
"Default Prompt Suggestions": "Sugestões de Prompt Padrão",
|
||||||
"Default User Role": "Função de Usuário Padrão",
|
"Default User Role": "Função de Utilizador Padrão",
|
||||||
"delete": "excluir",
|
"delete": "apagar",
|
||||||
"Delete": "Excluir",
|
"Delete": "Apagar",
|
||||||
"Delete a model": "Excluir um modelo",
|
"Delete a model": "Apagar um modelo",
|
||||||
"Delete All Chats": "Excluir todos os chats",
|
"Delete All Chats": "Apagar todas as conversas",
|
||||||
"Delete chat": "Excluir bate-papo",
|
"Delete chat": "Apagar conversa",
|
||||||
"Delete Chat": "Excluir Bate-papo",
|
"Delete Chat": "Apagar Conversa",
|
||||||
"delete this link": "excluir este link",
|
"delete this link": "apagar este link",
|
||||||
"Delete User": "Excluir Usuário",
|
"Delete User": "Apagar Utilizador",
|
||||||
"Deleted {{deleteModelTag}}": "{{deleteModelTag}} excluído",
|
"Deleted {{deleteModelTag}}": "{{deleteModelTag}} apagado",
|
||||||
"Deleted {{name}}": "Suprimido {{name}}",
|
"Deleted {{name}}": "Apagado {{name}}",
|
||||||
"Description": "Descrição",
|
"Description": "Descrição",
|
||||||
"Didn't fully follow instructions": "Não seguiu instruções com precisão",
|
"Didn't fully follow instructions": "Não seguiu instruções com precisão",
|
||||||
"Discover a model": "Descubra um modelo",
|
"Discover a model": "Descubra um modelo",
|
||||||
"Discover a prompt": "Descobrir um prompt",
|
"Discover a prompt": "Descobrir um prompt",
|
||||||
"Discover, download, and explore custom prompts": "Descubra, baixe e explore prompts personalizados",
|
"Discover, download, and explore custom prompts": "Descubra, descarregue e explore prompts personalizados",
|
||||||
"Discover, download, and explore model presets": "Descubra, baixe e explore predefinições de modelo",
|
"Discover, download, and explore model presets": "Descubra, descarregue e explore predefinições de modelo",
|
||||||
"Dismissible": "",
|
"Dismissible": "Dispensável",
|
||||||
"Display the username instead of You in the Chat": "Exibir o nome de usuário em vez de Você no Bate-papo",
|
"Display the username instead of You in the Chat": "Exibir o nome de utilizador em vez de Você na Conversa",
|
||||||
"Document": "Documento",
|
"Document": "Documento",
|
||||||
"Document Settings": "Configurações de Documento",
|
"Document Settings": "Configurações de Documento",
|
||||||
"Documentation": "",
|
"Documentation": "Documentação",
|
||||||
"Documents": "Documentos",
|
"Documents": "Documentos",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "não faz conexões externas e seus dados permanecem seguros em seu servidor hospedado localmente.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "não faz conexões externas e os seus dados permanecem seguros no seu servidor alojado localmente.",
|
||||||
"Don't Allow": "Não Permitir",
|
"Don't Allow": "Não Permitir",
|
||||||
"Don't have an account?": "Não tem uma conta?",
|
"Don't have an account?": "Não tem uma conta?",
|
||||||
"Don't like the style": "Não gosta do estilo",
|
"Don't like the style": "Não gosta do estilo",
|
||||||
"Download": "Baixar",
|
"Download": "Descarregar",
|
||||||
"Download canceled": "Download cancelado",
|
"Download canceled": "Download cancelado",
|
||||||
"Download Database": "Baixar Banco de Dados",
|
"Download Database": "Descarregar Base de Dados",
|
||||||
"Drop any files here to add to the conversation": "Solte os arquivos aqui para adicionar à conversa",
|
"Drop any files here to add to the conversation": "Largue os ficheiros aqui para adicionar à conversa",
|
||||||
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "por exemplo, '30s', '10m'. Unidades de tempo válidas são 's', 'm', 'h'.",
|
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "por exemplo, '30s', '10m'. Unidades de tempo válidas são 's', 'm', 'h'.",
|
||||||
"Edit": "Editar",
|
"Edit": "Editar",
|
||||||
"Edit Doc": "Editar Documento",
|
"Edit Doc": "Editar Documento",
|
||||||
"Edit User": "Editar Usuário",
|
"Edit User": "Editar Utilizador",
|
||||||
"Email": "E-mail",
|
"Email": "E-mail",
|
||||||
"Embedding Batch Size": "",
|
"Embedding Batch Size": "Tamanho do Lote do Embedding",
|
||||||
"Embedding Model": "Modelo de Embedding",
|
"Embedding Model": "Modelo de Embedding",
|
||||||
"Embedding Model Engine": "Motor de Modelo de Embedding",
|
"Embedding Model Engine": "Motor de Modelo de Embedding",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Modelo de Embedding definido como \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Modelo de Embedding definido como \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Ativar Histórico de Bate-papo",
|
"Enable Chat History": "Ativar Histórico de Conversas",
|
||||||
"Enable Community Sharing": "Habilite o compartilhamento da comunidade",
|
"Enable Community Sharing": "Active a Partilha da Comunidade",
|
||||||
"Enable New Sign Ups": "Ativar Novas Inscrições",
|
"Enable New Sign Ups": "Ativar Novas Inscrições",
|
||||||
"Enable Web Search": "Ativar pesquisa na Web",
|
"Enable Web Search": "Ativar pesquisa na Web",
|
||||||
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Garanta que seu arquivo CSV inclua 4 colunas nesta ordem: Nome, E-mail, Senha, Função.",
|
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Confirme que o seu ficheiro CSV inclui 4 colunas nesta ordem: Nome, E-mail, Senha, Função.",
|
||||||
"Enter {{role}} message here": "Digite a mensagem de {{role}} aqui",
|
"Enter {{role}} message here": "Escreva a mensagem de {{role}} aqui",
|
||||||
"Enter a detail about yourself for your LLMs to recall": "Digite um detalhe sobre você para que seus LLMs possam lembrá-lo",
|
"Enter a detail about yourself for your LLMs to recall": "Escreva um detalhe sobre você para que os seus LLMs possam lembrar-se",
|
||||||
"Enter Brave Search API Key": "Insira a chave da API do Brave Search",
|
"Enter Brave Search API Key": "Escreva a chave da API do Brave Search",
|
||||||
"Enter Chunk Overlap": "Digite a Sobreposição de Fragmento",
|
"Enter Chunk Overlap": "Escreva a Sobreposição de Fragmento",
|
||||||
"Enter Chunk Size": "Digite o Tamanho do Fragmento",
|
"Enter Chunk Size": "Escreva o Tamanho do Fragmento",
|
||||||
"Enter Github Raw URL": "Insira o URL bruto do Github",
|
"Enter Github Raw URL": "Escreva o URL cru do Github",
|
||||||
"Enter Google PSE API Key": "Insira a chave da API PSE do Google",
|
"Enter Google PSE API Key": "Escreva a chave da API PSE do Google",
|
||||||
"Enter Google PSE Engine Id": "Insira o ID do mecanismo PSE do Google",
|
"Enter Google PSE Engine Id": "Escreva o ID do mecanismo PSE do Google",
|
||||||
"Enter Image Size (e.g. 512x512)": "Digite o Tamanho da Imagem (por exemplo, 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Escreva o Tamanho da Imagem (por exemplo, 512x512)",
|
||||||
"Enter language codes": "Digite os códigos de idioma",
|
"Enter language codes": "Escreva os códigos de idioma",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Digite a tag do modelo (por exemplo, {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Escreva a tag do modelo (por exemplo, {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Digite o Número de Etapas (por exemplo, 50)",
|
"Enter Number of Steps (e.g. 50)": "Escreva o Número de Etapas (por exemplo, 50)",
|
||||||
"Enter Score": "Digite a Pontuação",
|
"Enter Score": "Escreva a Pontuação",
|
||||||
"Enter Searxng Query URL": "Insira o URL da Consulta Searxng",
|
"Enter Searxng Query URL": "Escreva o URL da Pesquisa Searxng",
|
||||||
"Enter Serper API Key": "Insira a chave da API Serper",
|
"Enter Serper API Key": "Escreva a chave da API Serper",
|
||||||
"Enter Serpstack API Key": "Insira a chave da API Serpstack",
|
"Enter Serply API Key": "",
|
||||||
"Enter stop sequence": "Digite a sequência de parada",
|
"Enter Serpstack API Key": "Escreva a chave da API Serpstack",
|
||||||
"Enter Top K": "Digite o Top K",
|
"Enter stop sequence": "Escreva a sequência de paragem",
|
||||||
"Enter URL (e.g. http://127.0.0.1:7860/)": "Digite a URL (por exemplo, http://127.0.0.1:7860/)",
|
"Enter Top K": "Escreva o Top K",
|
||||||
"Enter URL (e.g. http://localhost:11434)": "Digite a URL (por exemplo, http://localhost:11434)",
|
"Enter URL (e.g. http://127.0.0.1:7860/)": "Escreva o URL (por exemplo, http://127.0.0.1:7860/)",
|
||||||
"Enter Your Email": "Digite seu E-mail",
|
"Enter URL (e.g. http://localhost:11434)": "Escreva o URL (por exemplo, http://localhost:11434)",
|
||||||
"Enter Your Full Name": "Digite seu Nome Completo",
|
"Enter Your Email": "Escreva o seu E-mail",
|
||||||
"Enter Your Password": "Digite sua Senha",
|
"Enter Your Full Name": "Escreva o seu Nome Completo",
|
||||||
"Enter Your Role": "Digite sua Função",
|
"Enter Your Password": "Escreva a sua Senha",
|
||||||
|
"Enter Your Role": "Escreva a sua Função",
|
||||||
"Error": "Erro",
|
"Error": "Erro",
|
||||||
"Experimental": "Experimental",
|
"Experimental": "Experimental",
|
||||||
"Export": "Exportação",
|
"Export": "Exportar",
|
||||||
"Export All Chats (All Users)": "Exportar Todos os Bate-papos (Todos os Usuários)",
|
"Export All Chats (All Users)": "Exportar Todas as Conversas (Todos os Utilizadores)",
|
||||||
"Export chat (.json)": "",
|
"Export chat (.json)": "Exportar Conversa (.json)",
|
||||||
"Export Chats": "Exportar Bate-papos",
|
"Export Chats": "Exportar Conversas",
|
||||||
"Export Documents Mapping": "Exportar Mapeamento de Documentos",
|
"Export Documents Mapping": "Exportar Mapeamento de Documentos",
|
||||||
"Export Models": "Modelos de Exportação",
|
"Export Models": "Modelos de Exportação",
|
||||||
"Export Prompts": "Exportar Prompts",
|
"Export Prompts": "Exportar Prompts",
|
||||||
"External Models": "",
|
"Export Tools": "",
|
||||||
|
"External Models": "Modelos Externos",
|
||||||
"Failed to create API Key.": "Falha ao criar a Chave da API.",
|
"Failed to create API Key.": "Falha ao criar a Chave da API.",
|
||||||
"Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência",
|
"Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência",
|
||||||
"Failed to update settings": "",
|
"Failed to update settings": "Falha ao atualizar as definições",
|
||||||
"February": "Fevereiro",
|
"February": "Fevereiro",
|
||||||
"Feel free to add specific details": "Sinta-se à vontade para adicionar detalhes específicos",
|
"Feel free to add specific details": "Sinta-se à vontade para adicionar detalhes específicos",
|
||||||
"File Mode": "Modo de Arquivo",
|
"File Mode": "Modo de Ficheiro",
|
||||||
"File not found.": "Arquivo não encontrado.",
|
"File not found.": "Ficheiro não encontrado.",
|
||||||
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Impostação de impressão digital detectada: Não é possível usar iniciais como avatar. Padronizando para imagem de perfil padrão.",
|
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Detectada falsificação da impressão digital: Não é possível usar iniciais como avatar. A usar a imagem de perfil padrão.",
|
||||||
"Fluidly stream large external response chunks": "Transmita com fluidez grandes blocos de resposta externa",
|
"Fluidly stream large external response chunks": "Transmita com fluidez grandes blocos de resposta externa",
|
||||||
"Focus chat input": "Focar entrada de bate-papo",
|
"Focus chat input": "Focar na conversa",
|
||||||
"Followed instructions perfectly": "Seguiu instruções perfeitamente",
|
"Followed instructions perfectly": "Seguiu instruções perfeitamente",
|
||||||
"Format your variables using square brackets like this:": "Formate suas variáveis usando colchetes como este:",
|
"Format your variables using square brackets like this:": "Formate as suas variáveis usando parenteses rectos como este:",
|
||||||
"Frequency Penalty": "Penalidade de Frequência",
|
"Frequency Penalty": "Penalidade de Frequência",
|
||||||
"General": "Geral",
|
"General": "Geral",
|
||||||
"General Settings": "Configurações Gerais",
|
"General Settings": "Configurações Gerais",
|
||||||
"Generate Image": "",
|
"Generate Image": "Gerar imagem",
|
||||||
"Generating search query": "Gerar consulta de pesquisa",
|
"Generating search query": "A gerar a consulta da pesquisa",
|
||||||
"Generation Info": "Informações de Geração",
|
"Generation Info": "Informações de Geração",
|
||||||
"Good Response": "Boa Resposta",
|
"Good Response": "Boa Resposta",
|
||||||
"Google PSE API Key": "Chave da API PSE do Google",
|
"Google PSE API Key": "Chave da API PSE do Google",
|
||||||
"Google PSE Engine Id": "ID do mecanismo PSE do Google",
|
"Google PSE Engine Id": "ID do mecanismo PSE do Google",
|
||||||
"h:mm a": "h:mm a",
|
"h:mm a": "h:mm a",
|
||||||
"has no conversations.": "não possui bate-papos.",
|
"has no conversations.": "não possui conversas.",
|
||||||
"Hello, {{name}}": "Olá, {{name}}",
|
"Hello, {{name}}": "Olá, {{name}}",
|
||||||
"Help": "Help",
|
"Help": "Ajuda",
|
||||||
"Hide": "Ocultar",
|
"Hide": "Ocultar",
|
||||||
"How can I help you today?": "Como posso ajudá-lo hoje?",
|
"How can I help you today?": "Como posso ajudá-lo hoje?",
|
||||||
"Hybrid Search": "Pesquisa Híbrida",
|
"Hybrid Search": "Pesquisa Híbrida",
|
||||||
"Image Generation (Experimental)": "Geração de Imagens (Experimental)",
|
"Image Generation (Experimental)": "Geração de Imagens (Experimental)",
|
||||||
"Image Generation Engine": "Mecanismo de Geração de Imagens",
|
"Image Generation Engine": "Mecanismo de Geração de Imagens",
|
||||||
"Image Settings": "Configurações de Imagem",
|
"Image Settings": "Configurações da Imagem",
|
||||||
"Images": "Imagens",
|
"Images": "Imagens",
|
||||||
"Import Chats": "Importar Bate-papos",
|
"Import Chats": "Importar Conversas",
|
||||||
"Import Documents Mapping": "Importar Mapeamento de Documentos",
|
"Import Documents Mapping": "Importar Mapeamento de Documentos",
|
||||||
"Import Models": "Importar Modelos",
|
"Import Models": "Importar Modelos",
|
||||||
"Import Prompts": "Importar Prompts",
|
"Import Prompts": "Importar Prompts",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Inclua a flag `--api` ao executar stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Inclua a flag `--api` ao executar stable-diffusion-webui",
|
||||||
"Info": "Informação",
|
"Info": "Informação",
|
||||||
"Input commands": "Comandos de entrada",
|
"Input commands": "Comandos de entrada",
|
||||||
"Install from Github URL": "Instalar a partir do URL do Github",
|
"Install from Github URL": "Instalar a partir do URL do Github",
|
||||||
"Instant Auto-Send After Voice Transcription": "",
|
"Instant Auto-Send After Voice Transcription": "Enviar automaticamente depois da transcrição da voz",
|
||||||
"Interface": "Interface",
|
"Interface": "Interface",
|
||||||
"Invalid Tag": "Etiqueta Inválida",
|
"Invalid Tag": "Etiqueta Inválida",
|
||||||
"January": "Janeiro",
|
"January": "Janeiro",
|
||||||
@@ -273,55 +277,55 @@
|
|||||||
"JWT Token": "Token JWT",
|
"JWT Token": "Token JWT",
|
||||||
"Keep Alive": "Manter Vivo",
|
"Keep Alive": "Manter Vivo",
|
||||||
"Keyboard shortcuts": "Atalhos de teclado",
|
"Keyboard shortcuts": "Atalhos de teclado",
|
||||||
"Knowledge": "",
|
"Knowledge": "Conhecimento",
|
||||||
"Language": "Idioma",
|
"Language": "Idioma",
|
||||||
"Last Active": "Último Ativo",
|
"Last Active": "Último Ativo",
|
||||||
"Light": "Claro",
|
"Light": "Claro",
|
||||||
"Listening...": "",
|
"Listening...": "A escutar...",
|
||||||
"LLMs can make mistakes. Verify important information.": "LLMs podem cometer erros. Verifique informações importantes.",
|
"LLMs can make mistakes. Verify important information.": "LLMs podem cometer erros. Verifique informações importantes.",
|
||||||
"Local Models": "",
|
"Local Models": "Modelos Locais",
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Feito pela Comunidade OpenWebUI",
|
"Made by OpenWebUI Community": "Feito pela Comunidade OpenWebUI",
|
||||||
"Make sure to enclose them with": "Certifique-se de colocá-los entre",
|
"Make sure to enclose them with": "Certifique-se de colocá-los entre",
|
||||||
"Manage": "",
|
"Manage": "Gerir",
|
||||||
"Manage Models": "Gerenciar Modelos",
|
"Manage Models": "Gerir Modelos",
|
||||||
"Manage Ollama Models": "Gerenciar Modelos Ollama",
|
"Manage Ollama Models": "Gerir Modelos Ollama",
|
||||||
"Manage Pipelines": "Gerenciar pipelines",
|
"Manage Pipelines": "Gerir pipelines",
|
||||||
"March": "Março",
|
"March": "Março",
|
||||||
"Max Tokens (num_predict)": "Max Tokens (num_predict)",
|
"Max Tokens (num_predict)": "Máx Tokens (num_predict)",
|
||||||
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Máximo de 3 modelos podem ser baixados simultaneamente. Tente novamente mais tarde.",
|
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "O máximo de 3 modelos podem ser descarregados simultaneamente. Tente novamente mais tarde.",
|
||||||
"May": "Maio",
|
"May": "Maio",
|
||||||
"Memories accessible by LLMs will be shown here.": "Memórias acessíveis por LLMs serão mostradas aqui.",
|
"Memories accessible by LLMs will be shown here.": "Memórias acessíveis por LLMs serão mostradas aqui.",
|
||||||
"Memory": "Memória",
|
"Memory": "Memória",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mensagens que você enviar após criar seu link não serão compartilhadas. Os usuários com o URL poderão visualizar o bate-papo compartilhado.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mensagens que você enviar após criar o seu link não serão partilhadas. Os utilizadores com o URL poderão visualizar a conversa partilhada.",
|
||||||
"Minimum Score": "Mínimo de Pontuação",
|
"Minimum Score": "Mínimo de Pontuação",
|
||||||
"Mirostat": "Mirostat",
|
"Mirostat": "Mirostat",
|
||||||
"Mirostat Eta": "Mirostat Eta",
|
"Mirostat Eta": "Mirostat Eta",
|
||||||
"Mirostat Tau": "Mirostat Tau",
|
"Mirostat Tau": "Mirostat Tau",
|
||||||
"MMMM DD, YYYY": "DD/MM/YYYY",
|
"MMMM DD, YYYY": "DD/MM/YYYY",
|
||||||
"MMMM DD, YYYY HH:mm": "DD/MM/YYYY HH:mm",
|
"MMMM DD, YYYY HH:mm": "DD/MM/YYYY HH:mm",
|
||||||
"Model '{{modelName}}' has been successfully downloaded.": "O modelo '{{modelName}}' foi baixado com sucesso.",
|
"Model '{{modelName}}' has been successfully downloaded.": "O modelo '{{modelName}}' foi descarregado com sucesso.",
|
||||||
"Model '{{modelTag}}' is already in queue for downloading.": "O modelo '{{modelTag}}' já está na fila para download.",
|
"Model '{{modelTag}}' is already in queue for downloading.": "O modelo '{{modelTag}}' já está na fila para descarregar.",
|
||||||
"Model {{modelId}} not found": "Modelo {{modelId}} não encontrado",
|
"Model {{modelId}} not found": "Modelo {{modelId}} não foi encontrado",
|
||||||
"Model {{modelName}} is not vision capable": "O modelo {{modelName}} não é capaz de visão",
|
"Model {{modelName}} is not vision capable": "O modelo {{modelName}} não é capaz de visão",
|
||||||
"Model {{name}} is now {{status}}": "Modelo {{name}} agora é {{status}}",
|
"Model {{name}} is now {{status}}": "Modelo {{name}} agora é {{status}}",
|
||||||
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Caminho do sistema de arquivos do modelo detectado. É necessário o nome curto do modelo para atualização, não é possível continuar.",
|
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Dtectado caminho do sistema de ficheiros do modelo. É necessário o nome curto do modelo para atualização, não é possível continuar.",
|
||||||
"Model ID": "ID do modelo",
|
"Model ID": "ID do modelo",
|
||||||
"Model not selected": "Modelo não selecionado",
|
"Model not selected": "Modelo não selecionado",
|
||||||
"Model Params": "Params Modelo",
|
"Model Params": "Params Modelo",
|
||||||
"Model Whitelisting": "Lista de Permissões de Modelo",
|
"Model Whitelisting": "Lista de Permissões do Modelo",
|
||||||
"Model(s) Whitelisted": "Modelo(s) na Lista de Permissões",
|
"Model(s) Whitelisted": "Modelo(s) na Lista de Permissões",
|
||||||
"Modelfile Content": "Conteúdo do Arquivo de Modelo",
|
"Modelfile Content": "Conteúdo do Ficheiro do Modelo",
|
||||||
"Models": "Modelos",
|
"Models": "Modelos",
|
||||||
"More": "Mais",
|
"More": "Mais",
|
||||||
"Name": "Nome",
|
"Name": "Nome",
|
||||||
"Name Tag": "Tag de Nome",
|
"Name Tag": "Etiqueta de Nome",
|
||||||
"Name your model": "Atribua um nome ao seu modelo",
|
"Name your model": "Atribua um nome ao seu modelo",
|
||||||
"New Chat": "Novo Bate-papo",
|
"New Chat": "Nova Conversa",
|
||||||
"New Password": "Nova Senha",
|
"New Password": "Nova Senha",
|
||||||
"No documents found": "",
|
"No documents found": "Não foram encontrados documentos",
|
||||||
"No results found": "Nenhum resultado encontrado",
|
"No results found": "Não foram encontrados resultados",
|
||||||
"No search query generated": "Nenhuma consulta de pesquisa gerada",
|
"No search query generated": "Não foi gerada nenhuma consulta de pesquisa",
|
||||||
"No source available": "Nenhuma fonte disponível",
|
"No source available": "Nenhuma fonte disponível",
|
||||||
"None": "Nenhum",
|
"None": "Nenhum",
|
||||||
"Not factually correct": "Não é correto em termos factuais",
|
"Not factually correct": "Não é correto em termos factuais",
|
||||||
@@ -336,18 +340,18 @@
|
|||||||
"Ollama": "Ollama",
|
"Ollama": "Ollama",
|
||||||
"Ollama API": "Ollama API",
|
"Ollama API": "Ollama API",
|
||||||
"Ollama API disabled": "API do Ollama desativada",
|
"Ollama API disabled": "API do Ollama desativada",
|
||||||
"Ollama API is disabled": "",
|
"Ollama API is disabled": "A API do Ollama está desactivada",
|
||||||
"Ollama Version": "Versão do Ollama",
|
"Ollama Version": "Versão do Ollama",
|
||||||
"On": "Ligado",
|
"On": "Ligado",
|
||||||
"Only": "Somente",
|
"Only": "Apenas",
|
||||||
"Only alphanumeric characters and hyphens are allowed in the command string.": "Somente caracteres alfanuméricos e hífens são permitidos na string de comando.",
|
"Only alphanumeric characters and hyphens are allowed in the command string.": "Apenas caracteres alfanuméricos e hífens são permitidos na string de comando.",
|
||||||
"Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "Opa! Aguente firme! Seus arquivos ainda estão no forno de processamento. Estamos cozinhando-os com perfeição. Por favor, seja paciente e avisaremos quando estiverem prontos.",
|
"Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "Epá! Segura-te! Os teus ficheiros ainda estão no forno de processamento. Estamos a cozinhá-los com perfeição. Por favor, seja paciente e avisaremos quando estiverem prontos.",
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Opa! Parece que a URL é inválida. Verifique novamente e tente outra vez.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Epá! Parece que o URL é inválido. Verifique novamente e tente outra vez.",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Opa! Você está usando um método não suportado (somente frontend). Por favor, sirva o WebUI a partir do backend.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Epá! Você está a usar um método não suportado (somente frontend). Por favor, sirva o WebUI a partir do backend.",
|
||||||
"Open": "Abrir",
|
"Open": "Abrir",
|
||||||
"Open AI": "OpenAI",
|
"Open AI": "Open AI",
|
||||||
"Open AI (Dall-E)": "OpenAI (Dall-E)",
|
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
||||||
"Open new chat": "Abrir novo bate-papo",
|
"Open new chat": "Abrir nova conversa",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
"OpenAI API": "API OpenAI",
|
"OpenAI API": "API OpenAI",
|
||||||
"OpenAI API Config": "Configuração da API OpenAI",
|
"OpenAI API Config": "Configuração da API OpenAI",
|
||||||
@@ -359,31 +363,31 @@
|
|||||||
"PDF document (.pdf)": "Documento PDF (.pdf)",
|
"PDF document (.pdf)": "Documento PDF (.pdf)",
|
||||||
"PDF Extract Images (OCR)": "Extrair Imagens de PDF (OCR)",
|
"PDF Extract Images (OCR)": "Extrair Imagens de PDF (OCR)",
|
||||||
"pending": "pendente",
|
"pending": "pendente",
|
||||||
"Permission denied when accessing media devices": "",
|
"Permission denied when accessing media devices": "A permissão foi negada ao aceder aos dispositivos de media",
|
||||||
"Permission denied when accessing microphone": "",
|
"Permission denied when accessing microphone": "A permissão foi negada ao aceder ao microfone",
|
||||||
"Permission denied when accessing microphone: {{error}}": "Permissão negada ao acessar o microfone: {{error}}",
|
"Permission denied when accessing microphone: {{error}}": "A permissão foi negada ao aceder o microfone: {{error}}",
|
||||||
"Personalization": "Personalização",
|
"Personalization": "Personalização",
|
||||||
"Pipelines": "Condutas",
|
"Pipelines": "Condutas",
|
||||||
"Pipelines Valves": "Válvulas de Condutas",
|
"Pipelines Valves": "Válvulas de Condutas",
|
||||||
"Plain text (.txt)": "Texto sem formatação (.txt)",
|
"Plain text (.txt)": "Texto sem formatação (.txt)",
|
||||||
"Playground": "Parque infantil",
|
"Playground": "Recreio",
|
||||||
"Positive attitude": "Atitude Positiva",
|
"Positive attitude": "Atitude Positiva",
|
||||||
"Previous 30 days": "Últimos 30 dias",
|
"Previous 30 days": "Últimos 30 dias",
|
||||||
"Previous 7 days": "Últimos 7 dias",
|
"Previous 7 days": "Últimos 7 dias",
|
||||||
"Profile Image": "Imagem de Perfil",
|
"Profile Image": "Imagem de Perfil",
|
||||||
"Prompt": "Prompt",
|
"Prompt": "Prompt",
|
||||||
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (ex.: Dê-me um fatídico sobre o Império Romano)",
|
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (ex.: Dê-me um facto divertido sobre o Império Romano)",
|
||||||
"Prompt Content": "Conteúdo do Prompt",
|
"Prompt Content": "Conteúdo do Prompt",
|
||||||
"Prompt suggestions": "Sugestões de Prompt",
|
"Prompt suggestions": "Sugestões de Prompt",
|
||||||
"Prompts": "Prompts",
|
"Prompts": "Prompts",
|
||||||
"Pull \"{{searchValue}}\" from Ollama.com": "Extrair \"{{searchValue}}\" do Ollama.com",
|
"Pull \"{{searchValue}}\" from Ollama.com": "Puxar \"{{searchValue}}\" do Ollama.com",
|
||||||
"Pull a model from Ollama.com": "Extrair um modelo do Ollama.com",
|
"Pull a model from Ollama.com": "Puxar um modelo do Ollama.com",
|
||||||
"Query Params": "Parâmetros de Consulta",
|
"Query Params": "Parâmetros de Consulta",
|
||||||
"RAG Template": "Modelo RAG",
|
"RAG Template": "Modelo RAG",
|
||||||
"Read Aloud": "Ler em Voz Alta",
|
"Read Aloud": "Ler em Voz Alta",
|
||||||
"Record voice": "Gravar voz",
|
"Record voice": "Gravar voz",
|
||||||
"Redirecting you to OpenWebUI Community": "Redirecionando você para a Comunidade OpenWebUI",
|
"Redirecting you to OpenWebUI Community": "Redirecionando-o para a Comunidade OpenWebUI",
|
||||||
"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "",
|
"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Refera-se a si próprio como \"User\" (por exemplo, \"User está a aprender Espanhol\")",
|
||||||
"Refused when it shouldn't have": "Recusado quando não deveria",
|
"Refused when it shouldn't have": "Recusado quando não deveria",
|
||||||
"Regenerate": "Regenerar",
|
"Regenerate": "Regenerar",
|
||||||
"Release Notes": "Notas de Lançamento",
|
"Release Notes": "Notas de Lançamento",
|
||||||
@@ -391,57 +395,60 @@
|
|||||||
"Remove Model": "Remover Modelo",
|
"Remove Model": "Remover Modelo",
|
||||||
"Rename": "Renomear",
|
"Rename": "Renomear",
|
||||||
"Repeat Last N": "Repetir Últimos N",
|
"Repeat Last N": "Repetir Últimos N",
|
||||||
"Request Mode": "Modo de Solicitação",
|
"Request Mode": "Modo de Pedido",
|
||||||
"Reranking Model": "Modelo de Reranking",
|
"Reranking Model": "Modelo de Reranking",
|
||||||
"Reranking model disabled": "Modelo de Reranking desativado",
|
"Reranking model disabled": "Modelo de Reranking desativado",
|
||||||
"Reranking model set to \"{{reranking_model}}\"": "Modelo de Reranking definido como \"{{reranking_model}}\"",
|
"Reranking model set to \"{{reranking_model}}\"": "Modelo de Reranking definido como \"{{reranking_model}}\"",
|
||||||
"Reset Upload Directory": "",
|
"Reset Upload Directory": "Limpar Pasta de Carregamento",
|
||||||
"Reset Vector Storage": "Redefinir Armazenamento de Vetor",
|
"Reset Vector Storage": "Redefinir Armazenamento de Vetor",
|
||||||
"Response AutoCopy to Clipboard": "Cópia Automática da Resposta para a Área de Transferência",
|
"Response AutoCopy to Clipboard": "Cópia Automática da Resposta para a Área de Transferência",
|
||||||
"Role": "Função",
|
"Role": "Função",
|
||||||
"Rosé Pine": "Rosé Pine",
|
"Rosé Pine": "Rosé Pine",
|
||||||
"Rosé Pine Dawn": "Rosé Pine Dawn",
|
"Rosé Pine Dawn": "Rosé Pine Dawn",
|
||||||
"RTL": "RTL",
|
"RTL": "RTL",
|
||||||
"Running": "",
|
"Running": "A correr",
|
||||||
"Save": "Salvar",
|
"Save": "Guardar",
|
||||||
"Save & Create": "Salvar e Criar",
|
"Save & Create": "Guardar e Criar",
|
||||||
"Save & Update": "Salvar e Atualizar",
|
"Save & Update": "Guardar e Atualizar",
|
||||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Salvar logs de bate-papo diretamente no armazenamento do seu navegador não é mais suportado. Reserve um momento para baixar e excluir seus logs de bate-papo clicando no botão abaixo. Não se preocupe, você pode facilmente reimportar seus logs de bate-papo para o backend através de",
|
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Guardar o registo das conversas diretamente no armazenamento do seu navegador já não é suportado. Reserve um momento para descarregar e eliminar os seus registos de conversas clicando no botão abaixo. Não se preocupe, você pode facilmente reimportar os seus registos de conversas para o backend através de",
|
||||||
"Scan": "Digitalizar",
|
"Scan": "Digitalizar",
|
||||||
"Scan complete!": "Digitalização concluída!",
|
"Scan complete!": "Digitalização concluída!",
|
||||||
"Scan for documents from {{path}}": "Digitalizar documentos de {{path}}",
|
"Scan for documents from {{path}}": "Digitalizar documentos de {{path}}",
|
||||||
"Search": "Pesquisar",
|
"Search": "Pesquisar",
|
||||||
"Search a model": "Pesquisar um modelo",
|
"Search a model": "Pesquisar um modelo",
|
||||||
"Search Chats": "Pesquisar Chats",
|
"Search Chats": "Pesquisar Conversas",
|
||||||
"Search Documents": "Pesquisar Documentos",
|
"Search Documents": "Pesquisar Documentos",
|
||||||
"Search Models": "Modelos de pesquisa",
|
"Search Models": "Modelos de pesquisa",
|
||||||
"Search Prompts": "Pesquisar Prompts",
|
"Search Prompts": "Pesquisar Prompts",
|
||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "Prompt de geração de consulta de pesquisa",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "Limite de comprimento do prompt de geração de consulta de pesquisa",
|
||||||
"Search Result Count": "Contagem de resultados da pesquisa",
|
"Search Result Count": "Contagem de resultados da pesquisa",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Pesquisado {{count}} sites_one",
|
"Searched {{count}} sites_one": "Pesquisado {{count}} sites_one",
|
||||||
"Searched {{count}} sites_many": "Pesquisado {{count}} sites_many",
|
"Searched {{count}} sites_many": "Pesquisado {{count}} sites_many",
|
||||||
"Searched {{count}} sites_other": "Pesquisado {{count}} sites_other",
|
"Searched {{count}} sites_other": "Pesquisado {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Pesquisando na Web por '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "URL de consulta Searxng",
|
"Searxng Query URL": "URL de consulta Searxng",
|
||||||
"See readme.md for instructions": "Consulte readme.md para obter instruções",
|
"See readme.md for instructions": "Consulte readme.md para obter instruções",
|
||||||
"See what's new": "Veja o que há de novo",
|
"See what's new": "Veja o que há de novo",
|
||||||
"Seed": "Semente",
|
"Seed": "Semente",
|
||||||
"Select a base model": "Selecione um modelo base",
|
"Select a base model": "Selecione um modelo base",
|
||||||
"Select a engine": "",
|
"Select a engine": "Selecione um motor",
|
||||||
"Select a mode": "Selecione um modo",
|
"Select a mode": "Selecione um modo",
|
||||||
"Select a model": "Selecione um modelo",
|
"Select a model": "Selecione um modelo",
|
||||||
"Select a pipeline": "Selecione um pipeline",
|
"Select a pipeline": "Selecione um pipeline",
|
||||||
"Select a pipeline url": "Selecione um URL de pipeline",
|
"Select a pipeline url": "Selecione um URL de pipeline",
|
||||||
"Select an Ollama instance": "Selecione uma instância Ollama",
|
"Select an Ollama instance": "Selecione uma instância Ollama",
|
||||||
"Select model": "Selecione um modelo",
|
"Select Documents": "",
|
||||||
"Select only one model to call": "",
|
"Select model": "Selecione o modelo",
|
||||||
|
"Select only one model to call": "Selecione apenas um modelo para a chamada",
|
||||||
"Selected model(s) do not support image inputs": "O(s) modelo(s) selecionado(s) não suporta(m) entradas de imagem",
|
"Selected model(s) do not support image inputs": "O(s) modelo(s) selecionado(s) não suporta(m) entradas de imagem",
|
||||||
"Send": "Enviar",
|
"Send": "Enviar",
|
||||||
"Send a Message": "Enviar uma Mensagem",
|
"Send a Message": "Enviar uma Mensagem",
|
||||||
"Send message": "Enviar mensagem",
|
"Send message": "Enviar mensagem",
|
||||||
"September": "Setembro",
|
"September": "Setembro",
|
||||||
"Serper API Key": "Chave API Serper",
|
"Serper API Key": "Chave API Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Chave da API Serpstack",
|
"Serpstack API Key": "Chave da API Serpstack",
|
||||||
"Server connection verified": "Conexão com o servidor verificada",
|
"Server connection verified": "Conexão com o servidor verificada",
|
||||||
"Set as default": "Definir como padrão",
|
"Set as default": "Definir como padrão",
|
||||||
@@ -453,26 +460,26 @@
|
|||||||
"Set Task Model": "Definir modelo de tarefa",
|
"Set Task Model": "Definir modelo de tarefa",
|
||||||
"Set Voice": "Definir Voz",
|
"Set Voice": "Definir Voz",
|
||||||
"Settings": "Configurações",
|
"Settings": "Configurações",
|
||||||
"Settings saved successfully!": "Configurações salvas com sucesso!",
|
"Settings saved successfully!": "Configurações guardadas com sucesso!",
|
||||||
"Settings updated successfully": "",
|
"Settings updated successfully": "Configurações atualizadas com sucesso",
|
||||||
"Share": "Compartilhar",
|
"Share": "Partilhar",
|
||||||
"Share Chat": "Compartilhar Bate-papo",
|
"Share Chat": "Partilhar Conversa",
|
||||||
"Share to OpenWebUI Community": "Compartilhar com a Comunidade OpenWebUI",
|
"Share to OpenWebUI Community": "Partilhar com a Comunidade OpenWebUI",
|
||||||
"short-summary": "resumo-curto",
|
"short-summary": "resumo-curto",
|
||||||
"Show": "Mostrar",
|
"Show": "Mostrar",
|
||||||
"Show Admin Details in Account Pending Overlay": "",
|
"Show Admin Details in Account Pending Overlay": "Mostrar Detalhes do Administrador na sobreposição de Conta Pendente",
|
||||||
"Show shortcuts": "Mostrar",
|
"Show shortcuts": "Mostrar atalhos",
|
||||||
"Showcased creativity": "Criatividade Exibida",
|
"Showcased creativity": "Criatividade Exibida",
|
||||||
"sidebar": "barra lateral",
|
"sidebar": "barra lateral",
|
||||||
"Sign in": "Entrar",
|
"Sign in": "Entrar",
|
||||||
"Sign Out": "Sair",
|
"Sign Out": "Sair",
|
||||||
"Sign up": "Inscrever-se",
|
"Sign up": "Inscrever-se",
|
||||||
"Signing in": "Entrando",
|
"Signing in": "A entrar",
|
||||||
"Source": "Fonte",
|
"Source": "Fonte",
|
||||||
"Speech recognition error: {{error}}": "Erro de reconhecimento de fala: {{error}}",
|
"Speech recognition error: {{error}}": "Erro de reconhecimento de fala: {{error}}",
|
||||||
"Speech-to-Text Engine": "Mecanismo de Fala para Texto",
|
"Speech-to-Text Engine": "Motor de Fala para Texto",
|
||||||
"Stop Sequence": "Sequência de Parada",
|
"Stop Sequence": "Sequência de Paragem",
|
||||||
"STT Model": "",
|
"STT Model": "Modelo STT",
|
||||||
"STT Settings": "Configurações STT",
|
"STT Settings": "Configurações STT",
|
||||||
"Submit": "Enviar",
|
"Submit": "Enviar",
|
||||||
"Subtitle (e.g. about the Roman Empire)": "Subtítulo (ex.: sobre o Império Romano)",
|
"Subtitle (e.g. about the Roman Empire)": "Subtítulo (ex.: sobre o Império Romano)",
|
||||||
@@ -481,69 +488,72 @@
|
|||||||
"Suggested": "Sugerido",
|
"Suggested": "Sugerido",
|
||||||
"System": "Sistema",
|
"System": "Sistema",
|
||||||
"System Prompt": "Prompt do Sistema",
|
"System Prompt": "Prompt do Sistema",
|
||||||
"Tags": "Tags",
|
"Tags": "Etiquetas",
|
||||||
"Tell us more:": "Dê-nos mais:",
|
"Tell us more:": "Diga-nos mais:",
|
||||||
"Temperature": "Temperatura",
|
"Temperature": "Temperatura",
|
||||||
"Template": "Modelo",
|
"Template": "Modelo",
|
||||||
"Text Completion": "Complemento de Texto",
|
"Text Completion": "Conclusão de Texto",
|
||||||
"Text-to-Speech Engine": "Mecanismo de Texto para Fala",
|
"Text-to-Speech Engine": "Motor de Texto para Fala",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
"Thanks for your feedback!": "Obrigado pelo feedback!",
|
"Thanks for your feedback!": "Obrigado pelo seu feedback!",
|
||||||
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "O score deve ser um valor entre 0.0 (0%) e 1.0 (100%).",
|
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "A pontuação deve ser um valor entre 0.0 (0%) e 1.0 (100%).",
|
||||||
"Theme": "Tema",
|
"Theme": "Tema",
|
||||||
"Thinking...": "",
|
"Thinking...": "A pensar...",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Isso garante que suas conversas valiosas sejam salvas com segurança em seu banco de dados de backend. Obrigado!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Isto garante que suas conversas valiosas sejam guardadas com segurança na sua base de dados de backend. Obrigado!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Isto é um recurso experimental, pode não funcionar conforme o esperado e está sujeito a alterações a qualquer momento.",
|
||||||
"This setting does not sync across browsers or devices.": "Esta configuração não sincroniza entre navegadores ou dispositivos.",
|
"This setting does not sync across browsers or devices.": "Esta configuração não sincroniza entre navegadores ou dispositivos.",
|
||||||
"Thorough explanation": "Explicação Completa",
|
"Thorough explanation": "Explicação Minuciosa",
|
||||||
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Dica: Atualize vários slots de variáveis consecutivamente pressionando a tecla Tab na entrada de bate-papo após cada substituição.",
|
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Dica: Atualize vários slots de variáveis consecutivamente pressionando a tecla Tab na entrada da conversa após cada substituição.",
|
||||||
"Title": "Título",
|
"Title": "Título",
|
||||||
"Title (e.g. Tell me a fun fact)": "Título (ex.: Dê-me um fatídico fatídico)",
|
"Title (e.g. Tell me a fun fact)": "Título (ex.: Diz-me um facto divertido)",
|
||||||
"Title Auto-Generation": "Geração Automática de Título",
|
"Title Auto-Generation": "Geração Automática de Título",
|
||||||
"Title cannot be an empty string.": "Título não pode ser uma string vazia.",
|
"Title cannot be an empty string.": "Título não pode ser uma string vazia.",
|
||||||
"Title Generation Prompt": "Prompt de Geração de Título",
|
"Title Generation Prompt": "Prompt de Geração de Título",
|
||||||
"to": "para",
|
"to": "para",
|
||||||
"To access the available model names for downloading,": "Para acessar os nomes de modelo disponíveis para download,",
|
"To access the available model names for downloading,": "Para aceder aos nomes de modelo disponíveis para descarregar,",
|
||||||
"To access the GGUF models available for downloading,": "Para acessar os modelos GGUF disponíveis para download,",
|
"To access the GGUF models available for downloading,": "Para aceder aos modelos GGUF disponíveis para descarregar,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Para aceder ao WebUI, entre em contato com o administrador. Os administradores podem gerir o status dos utilizadores no Painel de Administração.",
|
||||||
"to chat input.": "para a entrada de bate-papo.",
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
|
"to chat input.": "para a entrada da conversa.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Hoje",
|
"Today": "Hoje",
|
||||||
"Toggle settings": "Alternar configurações",
|
"Toggle settings": "Alternar configurações",
|
||||||
"Toggle sidebar": "Alternar barra lateral",
|
"Toggle sidebar": "Alternar barra lateral",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Problemas para acessar o Ollama?",
|
"Trouble accessing Ollama?": "Problemas a aceder ao Ollama?",
|
||||||
"TTS Model": "",
|
"TTS Model": "Modelo TTS",
|
||||||
"TTS Settings": "Configurações TTS",
|
"TTS Settings": "Configurações TTS",
|
||||||
"TTS Voice": "",
|
"TTS Voice": "Voz TTS",
|
||||||
"Type": "Tipo",
|
"Type": "Tipo",
|
||||||
"Type Hugging Face Resolve (Download) URL": "Digite a URL do Hugging Face Resolve (Download)",
|
"Type Hugging Face Resolve (Download) URL": "Escreva o URL do Hugging Face Resolve (Descarregar)",
|
||||||
"Uh-oh! There was an issue connecting to {{provider}}.": "Opa! Houve um problema ao conectar-se a {{provider}}.",
|
"Uh-oh! There was an issue connecting to {{provider}}.": "Uh-oh! Houve um problema ao conectar a {{provider}}.",
|
||||||
"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Tipo de arquivo desconhecido '{{file_type}}', mas aceitando e tratando como texto simples",
|
"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Tipo de ficheiro desconhecido '{{file_type}}', mas aceitando e tratando como texto simples",
|
||||||
"Update and Copy Link": "Atualizar e Copiar Link",
|
"Update and Copy Link": "Atualizar e Copiar Link",
|
||||||
"Update password": "Atualizar senha",
|
"Update password": "Atualizar senha",
|
||||||
"Upload a GGUF model": "Carregar um modelo GGUF",
|
"Upload a GGUF model": "Carregar um modelo GGUF",
|
||||||
"Upload Files": "Carregar ficheiros",
|
"Upload Files": "Carregar ficheiros",
|
||||||
"Upload Pipeline": "",
|
"Upload Pipeline": "Carregar Pipeline",
|
||||||
"Upload Progress": "Progresso do Carregamento",
|
"Upload Progress": "Progresso do Carregamento",
|
||||||
"URL Mode": "Modo de URL",
|
"URL Mode": "Modo de URL",
|
||||||
"Use '#' in the prompt input to load and select your documents.": "Use '#' na entrada do prompt para carregar e selecionar seus documentos.",
|
"Use '#' in the prompt input to load and select your documents.": "Use '#' na entrada do prompt para carregar e selecionar os seus documentos.",
|
||||||
"Use Gravatar": "Usar Gravatar",
|
"Use Gravatar": "Usar Gravatar",
|
||||||
"Use Initials": "Usar Iniciais",
|
"Use Initials": "Usar Iniciais",
|
||||||
"use_mlock (Ollama)": "use_mlock (Ollama)",
|
"use_mlock (Ollama)": "use_mlock (Ollama)",
|
||||||
"use_mmap (Ollama)": "use_mmap (Ollama)",
|
"use_mmap (Ollama)": "use_mmap (Ollama)",
|
||||||
"user": "usuário",
|
"user": "utilizador",
|
||||||
"User Permissions": "Permissões do Usuário",
|
"User Permissions": "Permissões do Utilizador",
|
||||||
"Users": "Usuários",
|
"Users": "Utilizadores",
|
||||||
"Utilize": "Utilizar",
|
"Utilize": "Utilizar",
|
||||||
"Valid time units:": "Unidades de tempo válidas:",
|
"Valid time units:": "Unidades de tempo válidas:",
|
||||||
"variable": "variável",
|
"variable": "variável",
|
||||||
"variable to have them replaced with clipboard content.": "variável para que sejam substituídos pelo conteúdo da área de transferência.",
|
"variable to have them replaced with clipboard content.": "variável para que sejam substituídos pelo conteúdo da área de transferência.",
|
||||||
"Version": "Versão",
|
"Version": "Versão",
|
||||||
"Warning": "Advertência",
|
"Warning": "Aviso",
|
||||||
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Aviso: Se você atualizar ou alterar seu modelo de vetorização, você precisará reimportar todos os documentos.",
|
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Aviso: Se você atualizar ou alterar o seu modelo de vetorização, você tem de reimportar todos os documentos.",
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "",
|
"Web API": "Web API",
|
||||||
"Web Loader Settings": "Configurações do Carregador da Web",
|
"Web Loader Settings": "Configurações do Carregador da Web",
|
||||||
"Web Params": "Parâmetros da Web",
|
"Web Params": "Parâmetros da Web",
|
||||||
"Web Search": "Pesquisa na Web",
|
"Web Search": "Pesquisa na Web",
|
||||||
@@ -551,23 +561,23 @@
|
|||||||
"Webhook URL": "URL do Webhook",
|
"Webhook URL": "URL do Webhook",
|
||||||
"WebUI Add-ons": "Complementos WebUI",
|
"WebUI Add-ons": "Complementos WebUI",
|
||||||
"WebUI Settings": "Configurações WebUI",
|
"WebUI Settings": "Configurações WebUI",
|
||||||
"WebUI will make requests to": "WebUI fará solicitações para",
|
"WebUI will make requests to": "WebUI fará pedidos a",
|
||||||
"What’s New in": "O que há de novo em",
|
"What’s New in": "O que há de novo em",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Quando o histórico está desativado, novos bate-papos neste navegador não aparecerão em seu histórico em nenhum dos seus dispositivos.",
|
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Quando o histórico está desativado, novas conversas neste navegador não aparecerão em seu histórico em nenhum dos seus dispositivos.",
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "Whisper (Local)",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "Modo Widescreen",
|
||||||
"Workspace": "Espaço de Trabalho",
|
"Workspace": "Espaço de Trabalho",
|
||||||
"Write a prompt suggestion (e.g. Who are you?)": "Escreva uma sugestão de prompt (por exemplo, Quem é você?)",
|
"Write a prompt suggestion (e.g. Who are you?)": "Escreva uma sugestão de prompt (por exemplo, Quem és tu?)",
|
||||||
"Write a summary in 50 words that summarizes [topic or keyword].": "Escreva um resumo em 50 palavras que resuma [tópico ou palavra-chave].",
|
"Write a summary in 50 words that summarizes [topic or keyword].": "Escreva um resumo em 50 palavras que resuma [tópico ou palavra-chave].",
|
||||||
"Yesterday": "Ontem",
|
"Yesterday": "Ontem",
|
||||||
"You": "Você",
|
"You": "Você",
|
||||||
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "",
|
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Você pode personalizar as suas interações com LLMs adicionando memórias através do botão ‘Gerir’ abaixo, tornando-as mais úteis e personalizadas para você.",
|
||||||
"You cannot clone a base model": "Não é possível clonar um modelo base",
|
"You cannot clone a base model": "Não é possível clonar um modelo base",
|
||||||
"You have no archived conversations.": "Você não tem bate-papos arquivados.",
|
"You have no archived conversations.": "Você não tem conversas arquivadas.",
|
||||||
"You have shared this chat": "Você compartilhou este bate-papo",
|
"You have shared this chat": "Você partilhou esta conversa",
|
||||||
"You're a helpful assistant.": "Você é um assistente útil.",
|
"You're a helpful assistant.": "Você é um assistente útil.",
|
||||||
"You're now logged in.": "Você está conectado agora.",
|
"You're now logged in.": "Você agora está conectado.",
|
||||||
"Your account status is currently pending activation.": "",
|
"Your account status is currently pending activation.": "O status da sua conta está atualmente com a ativação pendente.",
|
||||||
"Youtube": "Youtube",
|
"Youtube": "Youtube",
|
||||||
"Youtube Loader Settings": "Configurações do Carregador do Youtube"
|
"Youtube Loader Settings": "Configurações do Carregador do Youtube"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Панель админ",
|
"Admin Panel": "Панель админ",
|
||||||
"Admin Settings": "Настройки админ",
|
"Admin Settings": "Настройки админ",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Расширенные Параметры",
|
"Advanced Parameters": "Расширенные Параметры",
|
||||||
"Advanced Params": "Расширенные параметры",
|
"Advanced Params": "Расширенные параметры",
|
||||||
"all": "всё",
|
"all": "всё",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Введите оценку",
|
"Enter Score": "Введите оценку",
|
||||||
"Enter Searxng Query URL": "Введите URL-адрес запроса Searxng",
|
"Enter Searxng Query URL": "Введите URL-адрес запроса Searxng",
|
||||||
"Enter Serper API Key": "Введите ключ API Serper",
|
"Enter Serper API Key": "Введите ключ API Serper",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Введите ключ API Serpstack",
|
"Enter Serpstack API Key": "Введите ключ API Serpstack",
|
||||||
"Enter stop sequence": "Введите последовательность остановки",
|
"Enter stop sequence": "Введите последовательность остановки",
|
||||||
"Enter Top K": "Введите Top K",
|
"Enter Top K": "Введите Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Экспортировать отображение документов",
|
"Export Documents Mapping": "Экспортировать отображение документов",
|
||||||
"Export Models": "Экспорт моделей",
|
"Export Models": "Экспорт моделей",
|
||||||
"Export Prompts": "Экспортировать промты",
|
"Export Prompts": "Экспортировать промты",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Не удалось создать ключ API.",
|
"Failed to create API Key.": "Не удалось создать ключ API.",
|
||||||
"Failed to read clipboard contents": "Не удалось прочитать содержимое буфера обмена",
|
"Failed to read clipboard contents": "Не удалось прочитать содержимое буфера обмена",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Импорт сопоставления документов",
|
"Import Documents Mapping": "Импорт сопоставления документов",
|
||||||
"Import Models": "Импорт моделей",
|
"Import Models": "Импорт моделей",
|
||||||
"Import Prompts": "Импорт подсказок",
|
"Import Prompts": "Импорт подсказок",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Добавьте флаг `--api` при запуске stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Добавьте флаг `--api` при запуске stable-diffusion-webui",
|
||||||
"Info": "Информация",
|
"Info": "Информация",
|
||||||
"Input commands": "Введите команды",
|
"Input commands": "Введите команды",
|
||||||
@@ -419,11 +423,12 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Количество результатов поиска",
|
"Search Result Count": "Количество результатов поиска",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Поиск {{count}} sites_one",
|
"Searched {{count}} sites_one": "Поиск {{count}} sites_one",
|
||||||
"Searched {{count}} sites_few": "Поиск {{count}} sites_few",
|
"Searched {{count}} sites_few": "Поиск {{count}} sites_few",
|
||||||
"Searched {{count}} sites_many": "Поиск {{count}} sites_many",
|
"Searched {{count}} sites_many": "Поиск {{count}} sites_many",
|
||||||
"Searched {{count}} sites_other": "Поиск {{count}} sites_other",
|
"Searched {{count}} sites_other": "Поиск {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Поиск в Интернете по запросу '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "URL-адрес запроса Searxng",
|
"Searxng Query URL": "URL-адрес запроса Searxng",
|
||||||
"See readme.md for instructions": "Смотрите readme.md для инструкций",
|
"See readme.md for instructions": "Смотрите readme.md для инструкций",
|
||||||
"See what's new": "Посмотреть, что нового",
|
"See what's new": "Посмотреть, что нового",
|
||||||
@@ -435,6 +440,7 @@
|
|||||||
"Select a pipeline": "Выбор конвейера",
|
"Select a pipeline": "Выбор конвейера",
|
||||||
"Select a pipeline url": "Выберите URL-адрес конвейера",
|
"Select a pipeline url": "Выберите URL-адрес конвейера",
|
||||||
"Select an Ollama instance": "Выберите экземпляр Ollama",
|
"Select an Ollama instance": "Выберите экземпляр Ollama",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Выберите модель",
|
"Select model": "Выберите модель",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Выбранные модели не поддерживают ввод изображений",
|
"Selected model(s) do not support image inputs": "Выбранные модели не поддерживают ввод изображений",
|
||||||
@@ -443,6 +449,7 @@
|
|||||||
"Send message": "Отправить сообщение",
|
"Send message": "Отправить сообщение",
|
||||||
"September": "Сентябрь",
|
"September": "Сентябрь",
|
||||||
"Serper API Key": "Ключ API Serper",
|
"Serper API Key": "Ключ API Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Ключ API Serpstack",
|
"Serpstack API Key": "Ключ API Serpstack",
|
||||||
"Server connection verified": "Соединение с сервером проверено",
|
"Server connection verified": "Соединение с сервером проверено",
|
||||||
"Set as default": "Установить по умолчанию",
|
"Set as default": "Установить по умолчанию",
|
||||||
@@ -507,10 +514,13 @@
|
|||||||
"To access the available model names for downloading,": "Чтобы получить доступ к доступным для загрузки именам моделей,",
|
"To access the available model names for downloading,": "Чтобы получить доступ к доступным для загрузки именам моделей,",
|
||||||
"To access the GGUF models available for downloading,": "Чтобы получить доступ к моделям GGUF, доступным для загрузки,",
|
"To access the GGUF models available for downloading,": "Чтобы получить доступ к моделям GGUF, доступным для загрузки,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "в чате.",
|
"to chat input.": "в чате.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Сегодня",
|
"Today": "Сегодня",
|
||||||
"Toggle settings": "Переключить настройки",
|
"Toggle settings": "Переключить настройки",
|
||||||
"Toggle sidebar": "Переключить боковую панель",
|
"Toggle sidebar": "Переключить боковую панель",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Проблемы с доступом к Ollama?",
|
"Trouble accessing Ollama?": "Проблемы с доступом к Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Админ табла",
|
"Admin Panel": "Админ табла",
|
||||||
"Admin Settings": "Админ подешавања",
|
"Admin Settings": "Админ подешавања",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Напредни параметри",
|
"Advanced Parameters": "Напредни параметри",
|
||||||
"Advanced Params": "Напредни парамови",
|
"Advanced Params": "Напредни парамови",
|
||||||
"all": "сви",
|
"all": "сви",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Унесите резултат",
|
"Enter Score": "Унесите резултат",
|
||||||
"Enter Searxng Query URL": "Унесите УРЛ адресу Сеарxнг упита",
|
"Enter Searxng Query URL": "Унесите УРЛ адресу Сеарxнг упита",
|
||||||
"Enter Serper API Key": "Унесите Серпер АПИ кључ",
|
"Enter Serper API Key": "Унесите Серпер АПИ кључ",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Унесите Серпстацк АПИ кључ",
|
"Enter Serpstack API Key": "Унесите Серпстацк АПИ кључ",
|
||||||
"Enter stop sequence": "Унесите секвенцу заустављања",
|
"Enter stop sequence": "Унесите секвенцу заустављања",
|
||||||
"Enter Top K": "Унесите Топ К",
|
"Enter Top K": "Унесите Топ К",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Извези мапирање докумената",
|
"Export Documents Mapping": "Извези мапирање докумената",
|
||||||
"Export Models": "Извези моделе",
|
"Export Models": "Извези моделе",
|
||||||
"Export Prompts": "Извези упите",
|
"Export Prompts": "Извези упите",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Неуспешно стварање API кључа.",
|
"Failed to create API Key.": "Неуспешно стварање API кључа.",
|
||||||
"Failed to read clipboard contents": "Неуспешно читање садржаја оставе",
|
"Failed to read clipboard contents": "Неуспешно читање садржаја оставе",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Увези мапирање докумената",
|
"Import Documents Mapping": "Увези мапирање докумената",
|
||||||
"Import Models": "Увези моделе",
|
"Import Models": "Увези моделе",
|
||||||
"Import Prompts": "Увези упите",
|
"Import Prompts": "Увези упите",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Укључи `--api` заставицу при покретању stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Укључи `--api` заставицу при покретању stable-diffusion-webui",
|
||||||
"Info": "Инфо",
|
"Info": "Инфо",
|
||||||
"Input commands": "Унеси наредбе",
|
"Input commands": "Унеси наредбе",
|
||||||
@@ -419,10 +423,11 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Број резултата претраге",
|
"Search Result Count": "Број резултата претраге",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Претражио {{цоунт}} ситес_оне",
|
"Searched {{count}} sites_one": "Претражио {{цоунт}} ситес_оне",
|
||||||
"Searched {{count}} sites_few": "Претражио {{цоунт}} ситес_феw",
|
"Searched {{count}} sites_few": "Претражио {{цоунт}} ситес_феw",
|
||||||
"Searched {{count}} sites_other": "Претражио {{цоунт}} ситес_отхер",
|
"Searched {{count}} sites_other": "Претражио {{цоунт}} ситес_отхер",
|
||||||
"Searching the web for '{{searchQuery}}'": "Претраживање Веба у потрази за \"{{сеарцхQуерy}}\"",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "УРЛ адреса Сеарxнг упита",
|
"Searxng Query URL": "УРЛ адреса Сеарxнг упита",
|
||||||
"See readme.md for instructions": "Погледај readme.md за упутства",
|
"See readme.md for instructions": "Погледај readme.md за упутства",
|
||||||
"See what's new": "Погледај шта је ново",
|
"See what's new": "Погледај шта је ново",
|
||||||
@@ -434,6 +439,7 @@
|
|||||||
"Select a pipeline": "Избор цевовода",
|
"Select a pipeline": "Избор цевовода",
|
||||||
"Select a pipeline url": "Избор урл адресе цевовода",
|
"Select a pipeline url": "Избор урл адресе цевовода",
|
||||||
"Select an Ollama instance": "Изабери Ollama инстанцу",
|
"Select an Ollama instance": "Изабери Ollama инстанцу",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Изабери модел",
|
"Select model": "Изабери модел",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Изабрани модели не подржавају уносе слика",
|
"Selected model(s) do not support image inputs": "Изабрани модели не подржавају уносе слика",
|
||||||
@@ -442,6 +448,7 @@
|
|||||||
"Send message": "Пошаљи поруку",
|
"Send message": "Пошаљи поруку",
|
||||||
"September": "Септембар",
|
"September": "Септембар",
|
||||||
"Serper API Key": "Серпер АПИ кључ",
|
"Serper API Key": "Серпер АПИ кључ",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Серпстацк АПИ кључ",
|
"Serpstack API Key": "Серпстацк АПИ кључ",
|
||||||
"Server connection verified": "Веза са сервером потврђена",
|
"Server connection verified": "Веза са сервером потврђена",
|
||||||
"Set as default": "Подеси као подразумевано",
|
"Set as default": "Подеси као подразумевано",
|
||||||
@@ -506,10 +513,13 @@
|
|||||||
"To access the available model names for downloading,": "Да бисте приступили доступним именима модела за преузимање,",
|
"To access the available model names for downloading,": "Да бисте приступили доступним именима модела за преузимање,",
|
||||||
"To access the GGUF models available for downloading,": "Да бисте приступили GGUF моделима доступним за преузимање,",
|
"To access the GGUF models available for downloading,": "Да бисте приступили GGUF моделима доступним за преузимање,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "у унос ћаскања.",
|
"to chat input.": "у унос ћаскања.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Данас",
|
"Today": "Данас",
|
||||||
"Toggle settings": "Пребаци подешавања",
|
"Toggle settings": "Пребаци подешавања",
|
||||||
"Toggle sidebar": "Пребаци бочну траку",
|
"Toggle sidebar": "Пребаци бочну траку",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Топ К",
|
"Top K": "Топ К",
|
||||||
"Top P": "Топ П",
|
"Top P": "Топ П",
|
||||||
"Trouble accessing Ollama?": "Проблеми са приступом Ollama-и?",
|
"Trouble accessing Ollama?": "Проблеми са приступом Ollama-и?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Administrationspanel",
|
"Admin Panel": "Administrationspanel",
|
||||||
"Admin Settings": "Administratörsinställningar",
|
"Admin Settings": "Administratörsinställningar",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Avancerade parametrar",
|
"Advanced Parameters": "Avancerade parametrar",
|
||||||
"Advanced Params": "Avancerade parametrar",
|
"Advanced Params": "Avancerade parametrar",
|
||||||
"all": "alla",
|
"all": "alla",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Ange poäng",
|
"Enter Score": "Ange poäng",
|
||||||
"Enter Searxng Query URL": "Ange Searxng Query URL",
|
"Enter Searxng Query URL": "Ange Searxng Query URL",
|
||||||
"Enter Serper API Key": "Ange Serper API-nyckel",
|
"Enter Serper API Key": "Ange Serper API-nyckel",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Ange Serpstack API-nyckel",
|
"Enter Serpstack API Key": "Ange Serpstack API-nyckel",
|
||||||
"Enter stop sequence": "Ange stoppsekvens",
|
"Enter stop sequence": "Ange stoppsekvens",
|
||||||
"Enter Top K": "Ange Top K",
|
"Enter Top K": "Ange Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Exportera dokumentmappning",
|
"Export Documents Mapping": "Exportera dokumentmappning",
|
||||||
"Export Models": "Exportera modeller",
|
"Export Models": "Exportera modeller",
|
||||||
"Export Prompts": "Exportera prompts",
|
"Export Prompts": "Exportera prompts",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "Misslyckades med att skapa API-nyckel.",
|
"Failed to create API Key.": "Misslyckades med att skapa API-nyckel.",
|
||||||
"Failed to read clipboard contents": "Misslyckades med att läsa urklippsinnehåll",
|
"Failed to read clipboard contents": "Misslyckades med att läsa urklippsinnehåll",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Importera dokumentmappning",
|
"Import Documents Mapping": "Importera dokumentmappning",
|
||||||
"Import Models": "Importera modeller",
|
"Import Models": "Importera modeller",
|
||||||
"Import Prompts": "Importera prompts",
|
"Import Prompts": "Importera prompts",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Inkludera `--api`-flagga när du kör stabil-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Inkludera `--api`-flagga när du kör stabil-diffusion-webui",
|
||||||
"Info": "Information",
|
"Info": "Information",
|
||||||
"Input commands": "Indatakommandon",
|
"Input commands": "Indatakommandon",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Antal sökresultat",
|
"Search Result Count": "Antal sökresultat",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Sökte på {{count}} sites_one",
|
"Searched {{count}} sites_one": "Sökte på {{count}} sites_one",
|
||||||
"Searched {{count}} sites_other": "Sökte på {{count}} sites_other",
|
"Searched {{count}} sites_other": "Sökte på {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Söka på webben efter '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng Query URL",
|
"Searxng Query URL": "Searxng Query URL",
|
||||||
"See readme.md for instructions": "Se readme.md för instruktioner",
|
"See readme.md for instructions": "Se readme.md för instruktioner",
|
||||||
"See what's new": "Se vad som är nytt",
|
"See what's new": "Se vad som är nytt",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "Välj en pipeline",
|
"Select a pipeline": "Välj en pipeline",
|
||||||
"Select a pipeline url": "Välj en pipeline-URL",
|
"Select a pipeline url": "Välj en pipeline-URL",
|
||||||
"Select an Ollama instance": "Välj en Ollama-instans",
|
"Select an Ollama instance": "Välj en Ollama-instans",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Välj en modell",
|
"Select model": "Välj en modell",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Valda modeller stöder inte bildinmatningar",
|
"Selected model(s) do not support image inputs": "Valda modeller stöder inte bildinmatningar",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "Skicka meddelande",
|
"Send message": "Skicka meddelande",
|
||||||
"September": "september",
|
"September": "september",
|
||||||
"Serper API Key": "Serper API-nyckel",
|
"Serper API Key": "Serper API-nyckel",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API-nyckel",
|
"Serpstack API Key": "Serpstack API-nyckel",
|
||||||
"Server connection verified": "Serveranslutning verifierad",
|
"Server connection verified": "Serveranslutning verifierad",
|
||||||
"Set as default": "Ange som standard",
|
"Set as default": "Ange som standard",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "För att komma åt de tillgängliga modellnamnen för nedladdning,",
|
"To access the available model names for downloading,": "För att komma åt de tillgängliga modellnamnen för nedladdning,",
|
||||||
"To access the GGUF models available for downloading,": "För att komma åt de GGUF-modeller som finns tillgängliga för nedladdning,",
|
"To access the GGUF models available for downloading,": "För att komma åt de GGUF-modeller som finns tillgängliga för nedladdning,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "till chattinmatning.",
|
"to chat input.": "till chattinmatning.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Idag",
|
"Today": "Idag",
|
||||||
"Toggle settings": "Växla inställningar",
|
"Toggle settings": "Växla inställningar",
|
||||||
"Toggle sidebar": "Växla sidofält",
|
"Toggle sidebar": "Växla sidofält",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Topp K",
|
"Top K": "Topp K",
|
||||||
"Top P": "Topp P",
|
"Top P": "Topp P",
|
||||||
"Trouble accessing Ollama?": "Problem med att komma åt Ollama?",
|
"Trouble accessing Ollama?": "Problem med att komma åt Ollama?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "",
|
"Admin Panel": "",
|
||||||
"Admin Settings": "",
|
"Admin Settings": "",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "",
|
"Advanced Parameters": "",
|
||||||
"Advanced Params": "",
|
"Advanced Params": "",
|
||||||
"all": "",
|
"all": "",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "",
|
"Enter Score": "",
|
||||||
"Enter Searxng Query URL": "",
|
"Enter Searxng Query URL": "",
|
||||||
"Enter Serper API Key": "",
|
"Enter Serper API Key": "",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "",
|
"Enter Serpstack API Key": "",
|
||||||
"Enter stop sequence": "",
|
"Enter stop sequence": "",
|
||||||
"Enter Top K": "",
|
"Enter Top K": "",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "",
|
"Export Documents Mapping": "",
|
||||||
"Export Models": "",
|
"Export Models": "",
|
||||||
"Export Prompts": "",
|
"Export Prompts": "",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "",
|
"Failed to create API Key.": "",
|
||||||
"Failed to read clipboard contents": "",
|
"Failed to read clipboard contents": "",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "",
|
"Import Documents Mapping": "",
|
||||||
"Import Models": "",
|
"Import Models": "",
|
||||||
"Import Prompts": "",
|
"Import Prompts": "",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "",
|
"Include `--api` flag when running stable-diffusion-webui": "",
|
||||||
"Info": "",
|
"Info": "",
|
||||||
"Input commands": "",
|
"Input commands": "",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "",
|
"Search Result Count": "",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "",
|
"Searched {{count}} sites_one": "",
|
||||||
"Searched {{count}} sites_other": "",
|
"Searched {{count}} sites_other": "",
|
||||||
"Searching the web for '{{searchQuery}}'": "",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "",
|
"Searxng Query URL": "",
|
||||||
"See readme.md for instructions": "",
|
"See readme.md for instructions": "",
|
||||||
"See what's new": "",
|
"See what's new": "",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "",
|
"Select a pipeline": "",
|
||||||
"Select a pipeline url": "",
|
"Select a pipeline url": "",
|
||||||
"Select an Ollama instance": "",
|
"Select an Ollama instance": "",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "",
|
"Select model": "",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "",
|
"Selected model(s) do not support image inputs": "",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "",
|
"Send message": "",
|
||||||
"September": "",
|
"September": "",
|
||||||
"Serper API Key": "",
|
"Serper API Key": "",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "",
|
"Serpstack API Key": "",
|
||||||
"Server connection verified": "",
|
"Server connection verified": "",
|
||||||
"Set as default": "",
|
"Set as default": "",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "",
|
"To access the available model names for downloading,": "",
|
||||||
"To access the GGUF models available for downloading,": "",
|
"To access the GGUF models available for downloading,": "",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "",
|
"to chat input.": "",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "",
|
"Today": "",
|
||||||
"Toggle settings": "",
|
"Toggle settings": "",
|
||||||
"Toggle sidebar": "",
|
"Toggle sidebar": "",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "",
|
"Top K": "",
|
||||||
"Top P": "",
|
"Top P": "",
|
||||||
"Trouble accessing Ollama?": "",
|
"Trouble accessing Ollama?": "",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "Yönetici Paneli",
|
"Admin Panel": "Yönetici Paneli",
|
||||||
"Admin Settings": "Yönetici Ayarları",
|
"Admin Settings": "Yönetici Ayarları",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Gelişmiş Parametreler",
|
"Advanced Parameters": "Gelişmiş Parametreler",
|
||||||
"Advanced Params": "Gelişmiş Parametreler",
|
"Advanced Params": "Gelişmiş Parametreler",
|
||||||
"all": "tümü",
|
"all": "tümü",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Skoru Girin",
|
"Enter Score": "Skoru Girin",
|
||||||
"Enter Searxng Query URL": "Searxng Sorgu URL'sini girin",
|
"Enter Searxng Query URL": "Searxng Sorgu URL'sini girin",
|
||||||
"Enter Serper API Key": "Serper API Anahtarını Girin",
|
"Enter Serper API Key": "Serper API Anahtarını Girin",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Serpstack API Anahtarını Girin",
|
"Enter Serpstack API Key": "Serpstack API Anahtarını Girin",
|
||||||
"Enter stop sequence": "Durdurma dizisini girin",
|
"Enter stop sequence": "Durdurma dizisini girin",
|
||||||
"Enter Top K": "Top K'yı girin",
|
"Enter Top K": "Top K'yı girin",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Belge Eşlemesini Dışa Aktar",
|
"Export Documents Mapping": "Belge Eşlemesini Dışa Aktar",
|
||||||
"Export Models": "Modelleri Dışa Aktar",
|
"Export Models": "Modelleri Dışa Aktar",
|
||||||
"Export Prompts": "Promptları Dışa Aktar",
|
"Export Prompts": "Promptları Dışa Aktar",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "API Anahtarı oluşturulamadı.",
|
"Failed to create API Key.": "API Anahtarı oluşturulamadı.",
|
||||||
"Failed to read clipboard contents": "Pano içeriği okunamadı",
|
"Failed to read clipboard contents": "Pano içeriği okunamadı",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Belge Eşlemesini İçe Aktar",
|
"Import Documents Mapping": "Belge Eşlemesini İçe Aktar",
|
||||||
"Import Models": "Modelleri İçe Aktar",
|
"Import Models": "Modelleri İçe Aktar",
|
||||||
"Import Prompts": "Promptları İçe Aktar",
|
"Import Prompts": "Promptları İçe Aktar",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui çalıştırılırken `--api` bayrağını dahil edin",
|
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui çalıştırılırken `--api` bayrağını dahil edin",
|
||||||
"Info": "Bilgi",
|
"Info": "Bilgi",
|
||||||
"Input commands": "Giriş komutları",
|
"Input commands": "Giriş komutları",
|
||||||
@@ -419,9 +423,10 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Arama Sonucu Sayısı",
|
"Search Result Count": "Arama Sonucu Sayısı",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Arandı {{count}} sites_one",
|
"Searched {{count}} sites_one": "Arandı {{count}} sites_one",
|
||||||
"Searched {{count}} sites_other": "Arandı {{count}} sites_other",
|
"Searched {{count}} sites_other": "Arandı {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Web'de '{{searchQuery}}' aranıyor",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng Sorgu URL'si",
|
"Searxng Query URL": "Searxng Sorgu URL'si",
|
||||||
"See readme.md for instructions": "Yönergeler için readme.md dosyasına bakın",
|
"See readme.md for instructions": "Yönergeler için readme.md dosyasına bakın",
|
||||||
"See what's new": "Yeniliklere göz atın",
|
"See what's new": "Yeniliklere göz atın",
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
"Select a pipeline": "Bir pipeline seç",
|
"Select a pipeline": "Bir pipeline seç",
|
||||||
"Select a pipeline url": "Bir pipeline URL'si seç",
|
"Select a pipeline url": "Bir pipeline URL'si seç",
|
||||||
"Select an Ollama instance": "Bir Ollama örneği seçin",
|
"Select an Ollama instance": "Bir Ollama örneği seçin",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Model seç",
|
"Select model": "Model seç",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Seçilen model(ler) görüntü girişlerini desteklemiyor",
|
"Selected model(s) do not support image inputs": "Seçilen model(ler) görüntü girişlerini desteklemiyor",
|
||||||
@@ -441,6 +447,7 @@
|
|||||||
"Send message": "Mesaj gönder",
|
"Send message": "Mesaj gönder",
|
||||||
"September": "Eylül",
|
"September": "Eylül",
|
||||||
"Serper API Key": "Serper API Anahtarı",
|
"Serper API Key": "Serper API Anahtarı",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API Anahtarı",
|
"Serpstack API Key": "Serpstack API Anahtarı",
|
||||||
"Server connection verified": "Sunucu bağlantısı doğrulandı",
|
"Server connection verified": "Sunucu bağlantısı doğrulandı",
|
||||||
"Set as default": "Varsayılan olarak ayarla",
|
"Set as default": "Varsayılan olarak ayarla",
|
||||||
@@ -505,10 +512,13 @@
|
|||||||
"To access the available model names for downloading,": "İndirilebilir mevcut model adlarına erişmek için,",
|
"To access the available model names for downloading,": "İndirilebilir mevcut model adlarına erişmek için,",
|
||||||
"To access the GGUF models available for downloading,": "İndirilebilir mevcut GGUF modellerine erişmek için,",
|
"To access the GGUF models available for downloading,": "İndirilebilir mevcut GGUF modellerine erişmek için,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "sohbet girişine.",
|
"to chat input.": "sohbet girişine.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Bugün",
|
"Today": "Bugün",
|
||||||
"Toggle settings": "Ayarları Aç/Kapat",
|
"Toggle settings": "Ayarları Aç/Kapat",
|
||||||
"Toggle sidebar": "Kenar Çubuğunu Aç/Kapat",
|
"Toggle sidebar": "Kenar Çubuğunu Aç/Kapat",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Ollama'ya erişmede sorun mu yaşıyorsunuz?",
|
"Trouble accessing Ollama?": "Ollama'ya erişmede sorun mu yaşıyorsunuz?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "Адмін",
|
"Admin": "Адмін",
|
||||||
"Admin Panel": "Адмін-панель",
|
"Admin Panel": "Адмін-панель",
|
||||||
"Admin Settings": "Налаштування адміністратора",
|
"Admin Settings": "Налаштування адміністратора",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Розширені параметри",
|
"Advanced Parameters": "Розширені параметри",
|
||||||
"Advanced Params": "Розширені параметри",
|
"Advanced Params": "Розширені параметри",
|
||||||
"all": "всі",
|
"all": "всі",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Введіть бал",
|
"Enter Score": "Введіть бал",
|
||||||
"Enter Searxng Query URL": "Введіть URL-адресу запиту Searxng",
|
"Enter Searxng Query URL": "Введіть URL-адресу запиту Searxng",
|
||||||
"Enter Serper API Key": "Введіть ключ API Serper",
|
"Enter Serper API Key": "Введіть ключ API Serper",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "Введіть ключ API Serpstack",
|
"Enter Serpstack API Key": "Введіть ключ API Serpstack",
|
||||||
"Enter stop sequence": "Введіть символ зупинки",
|
"Enter stop sequence": "Введіть символ зупинки",
|
||||||
"Enter Top K": "Введіть Top K",
|
"Enter Top K": "Введіть Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "Експортувати відображення документів",
|
"Export Documents Mapping": "Експортувати відображення документів",
|
||||||
"Export Models": "Експорт моделей",
|
"Export Models": "Експорт моделей",
|
||||||
"Export Prompts": "Експортувати промти",
|
"Export Prompts": "Експортувати промти",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "Зовнішні моделі",
|
"External Models": "Зовнішні моделі",
|
||||||
"Failed to create API Key.": "Не вдалося створити API ключ.",
|
"Failed to create API Key.": "Не вдалося створити API ключ.",
|
||||||
"Failed to read clipboard contents": "Не вдалося прочитати вміст буфера обміну",
|
"Failed to read clipboard contents": "Не вдалося прочитати вміст буфера обміну",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "Імпортувати відображення документів",
|
"Import Documents Mapping": "Імпортувати відображення документів",
|
||||||
"Import Models": "Імпорт моделей",
|
"Import Models": "Імпорт моделей",
|
||||||
"Import Prompts": "Імпортувати промти",
|
"Import Prompts": "Імпортувати промти",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Включіть прапор `--api` при запуску stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Включіть прапор `--api` при запуску stable-diffusion-webui",
|
||||||
"Info": "Інфо",
|
"Info": "Інфо",
|
||||||
"Input commands": "Команди вводу",
|
"Input commands": "Команди вводу",
|
||||||
@@ -419,11 +423,12 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "Кількість результатів пошуку",
|
"Search Result Count": "Кількість результатів пошуку",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_one": "Переглянуто {{count}} сайт",
|
"Searched {{count}} sites_one": "Переглянуто {{count}} сайт",
|
||||||
"Searched {{count}} sites_few": "Переглянуто {{count}} сайти",
|
"Searched {{count}} sites_few": "Переглянуто {{count}} сайти",
|
||||||
"Searched {{count}} sites_many": "Переглянуто {{count}} сайтів",
|
"Searched {{count}} sites_many": "Переглянуто {{count}} сайтів",
|
||||||
"Searched {{count}} sites_other": "Переглянуто {{count}} сайтів",
|
"Searched {{count}} sites_other": "Переглянуто {{count}} сайтів",
|
||||||
"Searching the web for '{{searchQuery}}'": "Пошук в Інтернеті за запитом '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "URL-адреса запиту Searxng",
|
"Searxng Query URL": "URL-адреса запиту Searxng",
|
||||||
"See readme.md for instructions": "Див. readme.md для інструкцій",
|
"See readme.md for instructions": "Див. readme.md для інструкцій",
|
||||||
"See what's new": "Подивіться, що нового",
|
"See what's new": "Подивіться, що нового",
|
||||||
@@ -435,6 +440,7 @@
|
|||||||
"Select a pipeline": "Виберіть pipeline",
|
"Select a pipeline": "Виберіть pipeline",
|
||||||
"Select a pipeline url": "Виберіть адресу pipeline",
|
"Select a pipeline url": "Виберіть адресу pipeline",
|
||||||
"Select an Ollama instance": "Виберіть екземпляр Ollama",
|
"Select an Ollama instance": "Виберіть екземпляр Ollama",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "Вибрати модель",
|
"Select model": "Вибрати модель",
|
||||||
"Select only one model to call": "Виберіть лише одну модель для виклику",
|
"Select only one model to call": "Виберіть лише одну модель для виклику",
|
||||||
"Selected model(s) do not support image inputs": "Вибрані модель(і) не підтримують вхідні зображення",
|
"Selected model(s) do not support image inputs": "Вибрані модель(і) не підтримують вхідні зображення",
|
||||||
@@ -443,6 +449,7 @@
|
|||||||
"Send message": "Надіслати повідомлення",
|
"Send message": "Надіслати повідомлення",
|
||||||
"September": "Вересень",
|
"September": "Вересень",
|
||||||
"Serper API Key": "Ключ API Serper",
|
"Serper API Key": "Ключ API Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Ключ API Serpstack",
|
"Serpstack API Key": "Ключ API Serpstack",
|
||||||
"Server connection verified": "З'єднання з сервером підтверджено",
|
"Server connection verified": "З'єднання з сервером підтверджено",
|
||||||
"Set as default": "Встановити за замовчуванням",
|
"Set as default": "Встановити за замовчуванням",
|
||||||
@@ -507,10 +514,13 @@
|
|||||||
"To access the available model names for downloading,": "Щоб отримати доступ до назв доступних для завантаження моделей,",
|
"To access the available model names for downloading,": "Щоб отримати доступ до назв доступних для завантаження моделей,",
|
||||||
"To access the GGUF models available for downloading,": "Щоб отримати доступ до моделей GGUF, які можна завантажити,,",
|
"To access the GGUF models available for downloading,": "Щоб отримати доступ до моделей GGUF, які можна завантажити,,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Щоб отримати доступ до веб-інтерфейсу, зверніться до адміністратора. Адміністратори можуть керувати статусами користувачів з Панелі адміністратора.",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Щоб отримати доступ до веб-інтерфейсу, зверніться до адміністратора. Адміністратори можуть керувати статусами користувачів з Панелі адміністратора.",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "в чаті.",
|
"to chat input.": "в чаті.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Сьогодні",
|
"Today": "Сьогодні",
|
||||||
"Toggle settings": "Переключити налаштування",
|
"Toggle settings": "Переключити налаштування",
|
||||||
"Toggle sidebar": "Переключити бокову панель",
|
"Toggle sidebar": "Переключити бокову панель",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Проблеми з доступом до Ollama?",
|
"Trouble accessing Ollama?": "Проблеми з доступом до Ollama?",
|
||||||
|
|||||||
@@ -12,9 +12,9 @@
|
|||||||
"a user": "người sử dụng",
|
"a user": "người sử dụng",
|
||||||
"About": "Giới thiệu",
|
"About": "Giới thiệu",
|
||||||
"Account": "Tài khoản",
|
"Account": "Tài khoản",
|
||||||
"Account Activation Pending": "",
|
"Account Activation Pending": "Tài khoản đang chờ kích hoạt",
|
||||||
"Accurate information": "Thông tin chính xác",
|
"Accurate information": "Thông tin chính xác",
|
||||||
"Active Users": "",
|
"Active Users": "Người dùng đang hoạt động",
|
||||||
"Add": "Thêm",
|
"Add": "Thêm",
|
||||||
"Add a model id": "Thêm model id",
|
"Add a model id": "Thêm model id",
|
||||||
"Add a short description about what this model does": "Thêm mô tả ngắn về những khả năng của model",
|
"Add a short description about what this model does": "Thêm mô tả ngắn về những khả năng của model",
|
||||||
@@ -30,9 +30,10 @@
|
|||||||
"Add User": "Thêm người dùng",
|
"Add User": "Thêm người dùng",
|
||||||
"Adjusting these settings will apply changes universally to all users.": "Các thay đổi cài đặt này sẽ áp dụng cho tất cả người sử dụng.",
|
"Adjusting these settings will apply changes universally to all users.": "Các thay đổi cài đặt này sẽ áp dụng cho tất cả người sử dụng.",
|
||||||
"admin": "quản trị viên",
|
"admin": "quản trị viên",
|
||||||
"Admin": "",
|
"Admin": "Quản trị",
|
||||||
"Admin Panel": "Trang Quản trị",
|
"Admin Panel": "Trang Quản trị",
|
||||||
"Admin Settings": "Cài đặt hệ thống",
|
"Admin Settings": "Cài đặt hệ thống",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "Các tham số Nâng cao",
|
"Advanced Parameters": "Các tham số Nâng cao",
|
||||||
"Advanced Params": "Các tham số Nâng cao",
|
"Advanced Params": "Các tham số Nâng cao",
|
||||||
"all": "tất cả",
|
"all": "tất cả",
|
||||||
@@ -72,8 +73,8 @@
|
|||||||
"Being lazy": "Lười biếng",
|
"Being lazy": "Lười biếng",
|
||||||
"Brave Search API Key": "Khóa API tìm kiếm dũng cảm",
|
"Brave Search API Key": "Khóa API tìm kiếm dũng cảm",
|
||||||
"Bypass SSL verification for Websites": "Bỏ qua xác thực SSL cho các trang web",
|
"Bypass SSL verification for Websites": "Bỏ qua xác thực SSL cho các trang web",
|
||||||
"Call": "",
|
"Call": "Gọi",
|
||||||
"Call feature is not supported when using Web STT engine": "",
|
"Call feature is not supported when using Web STT engine": "Tính năng gọi điện không được hỗ trợ khi sử dụng công cụ Web STT",
|
||||||
"Camera": "",
|
"Camera": "",
|
||||||
"Cancel": "Hủy bỏ",
|
"Cancel": "Hủy bỏ",
|
||||||
"Capabilities": "Năng lực",
|
"Capabilities": "Năng lực",
|
||||||
@@ -92,12 +93,12 @@
|
|||||||
"Chunk Params": "Tham số khối (chunk)",
|
"Chunk Params": "Tham số khối (chunk)",
|
||||||
"Chunk Size": "Kích thước khối (size)",
|
"Chunk Size": "Kích thước khối (size)",
|
||||||
"Citation": "Trích dẫn",
|
"Citation": "Trích dẫn",
|
||||||
"Clear memory": "",
|
"Clear memory": "Xóa bộ nhớ",
|
||||||
"Click here for help.": "Bấm vào đây để được trợ giúp.",
|
"Click here for help.": "Bấm vào đây để được trợ giúp.",
|
||||||
"Click here to": "Nhấn vào đây để",
|
"Click here to": "Nhấn vào đây để",
|
||||||
"Click here to select": "Bấm vào đây để chọn",
|
"Click here to select": "Bấm vào đây để chọn",
|
||||||
"Click here to select a csv file.": "Nhấn vào đây để chọn tệp csv",
|
"Click here to select a csv file.": "Nhấn vào đây để chọn tệp csv",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "Nhấn vào đây để chọn tệp py",
|
||||||
"Click here to select documents.": "Bấm vào đây để chọn tài liệu.",
|
"Click here to select documents.": "Bấm vào đây để chọn tài liệu.",
|
||||||
"click here.": "bấm vào đây.",
|
"click here.": "bấm vào đây.",
|
||||||
"Click on the user role button to change a user's role.": "Bấm vào nút trong cột VAI TRÒ để thay đổi quyền của người sử dụng.",
|
"Click on the user role button to change a user's role.": "Bấm vào nút trong cột VAI TRÒ để thay đổi quyền của người sử dụng.",
|
||||||
@@ -111,7 +112,7 @@
|
|||||||
"Concurrent Requests": "Các truy vấn đồng thời",
|
"Concurrent Requests": "Các truy vấn đồng thời",
|
||||||
"Confirm Password": "Xác nhận Mật khẩu",
|
"Confirm Password": "Xác nhận Mật khẩu",
|
||||||
"Connections": "Kết nối",
|
"Connections": "Kết nối",
|
||||||
"Contact Admin for WebUI Access": "",
|
"Contact Admin for WebUI Access": "Liên hệ với Quản trị viên để được cấp quyền truy cập",
|
||||||
"Content": "Nội dung",
|
"Content": "Nội dung",
|
||||||
"Context Length": "Độ dài ngữ cảnh (Context Length)",
|
"Context Length": "Độ dài ngữ cảnh (Context Length)",
|
||||||
"Continue Response": "Tiếp tục trả lời",
|
"Continue Response": "Tiếp tục trả lời",
|
||||||
@@ -158,11 +159,11 @@
|
|||||||
"Discover a prompt": "Khám phá thêm prompt mới",
|
"Discover a prompt": "Khám phá thêm prompt mới",
|
||||||
"Discover, download, and explore custom prompts": "Tìm kiếm, tải về và khám phá thêm các prompt tùy chỉnh",
|
"Discover, download, and explore custom prompts": "Tìm kiếm, tải về và khám phá thêm các prompt tùy chỉnh",
|
||||||
"Discover, download, and explore model presets": "Tìm kiếm, tải về và khám phá thêm các thiết lập mô hình sẵn",
|
"Discover, download, and explore model presets": "Tìm kiếm, tải về và khám phá thêm các thiết lập mô hình sẵn",
|
||||||
"Dismissible": "",
|
"Dismissible": "Có thể loại bỏ",
|
||||||
"Display the username instead of You in the Chat": "Hiển thị tên người sử dụng thay vì 'Bạn' trong nội dung chat",
|
"Display the username instead of You in the Chat": "Hiển thị tên người sử dụng thay vì 'Bạn' trong nội dung chat",
|
||||||
"Document": "Tài liệu",
|
"Document": "Tài liệu",
|
||||||
"Document Settings": "Cấu hình kho tài liệu",
|
"Document Settings": "Cấu hình kho tài liệu",
|
||||||
"Documentation": "",
|
"Documentation": "Tài liệu",
|
||||||
"Documents": "Tài liệu",
|
"Documents": "Tài liệu",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "không thực hiện bất kỳ kết nối ngoài nào, và dữ liệu của bạn vẫn được lưu trữ an toàn trên máy chủ lưu trữ cục bộ của bạn.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "không thực hiện bất kỳ kết nối ngoài nào, và dữ liệu của bạn vẫn được lưu trữ an toàn trên máy chủ lưu trữ cục bộ của bạn.",
|
||||||
"Don't Allow": "Không Cho phép",
|
"Don't Allow": "Không Cho phép",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "Nhập Score",
|
"Enter Score": "Nhập Score",
|
||||||
"Enter Searxng Query URL": "Nhập Query URL cho Searxng",
|
"Enter Searxng Query URL": "Nhập Query URL cho Searxng",
|
||||||
"Enter Serper API Key": "Nhập Serper API Key",
|
"Enter Serper API Key": "Nhập Serper API Key",
|
||||||
|
"Enter Serply API Key": "Nhập Serply API Key",
|
||||||
"Enter Serpstack API Key": "Nhập Serpstack API Key",
|
"Enter Serpstack API Key": "Nhập Serpstack API Key",
|
||||||
"Enter stop sequence": "Nhập stop sequence",
|
"Enter stop sequence": "Nhập stop sequence",
|
||||||
"Enter Top K": "Nhập Top K",
|
"Enter Top K": "Nhập Top K",
|
||||||
@@ -214,15 +216,16 @@
|
|||||||
"Experimental": "Thử nghiệm",
|
"Experimental": "Thử nghiệm",
|
||||||
"Export": "Xuất khẩu",
|
"Export": "Xuất khẩu",
|
||||||
"Export All Chats (All Users)": "Tải về tất cả nội dung chat (tất cả mọi người)",
|
"Export All Chats (All Users)": "Tải về tất cả nội dung chat (tất cả mọi người)",
|
||||||
"Export chat (.json)": "",
|
"Export chat (.json)": "Tải chat (.json)",
|
||||||
"Export Chats": "Tải nội dung chat về máy",
|
"Export Chats": "Tải nội dung chat về máy",
|
||||||
"Export Documents Mapping": "Tải cấu trúc tài liệu về máy",
|
"Export Documents Mapping": "Tải cấu trúc tài liệu về máy",
|
||||||
"Export Models": "Tải Models về máy",
|
"Export Models": "Tải Models về máy",
|
||||||
"Export Prompts": "Tải các prompt về máy",
|
"Export Prompts": "Tải các prompt về máy",
|
||||||
"External Models": "",
|
"Export Tools": "",
|
||||||
|
"External Models": "Các model ngoài",
|
||||||
"Failed to create API Key.": "Lỗi khởi tạo API Key",
|
"Failed to create API Key.": "Lỗi khởi tạo API Key",
|
||||||
"Failed to read clipboard contents": "Không thể đọc nội dung clipboard",
|
"Failed to read clipboard contents": "Không thể đọc nội dung clipboard",
|
||||||
"Failed to update settings": "",
|
"Failed to update settings": "Lỗi khi cập nhật các cài đặt",
|
||||||
"February": "Tháng 2",
|
"February": "Tháng 2",
|
||||||
"Feel free to add specific details": "Mô tả chi tiết về chất lượng của câu hỏi và phương án trả lời",
|
"Feel free to add specific details": "Mô tả chi tiết về chất lượng của câu hỏi và phương án trả lời",
|
||||||
"File Mode": "Chế độ Tệp văn bản",
|
"File Mode": "Chế độ Tệp văn bản",
|
||||||
@@ -235,7 +238,7 @@
|
|||||||
"Frequency Penalty": "Hình phạt tần số",
|
"Frequency Penalty": "Hình phạt tần số",
|
||||||
"General": "Cài đặt chung",
|
"General": "Cài đặt chung",
|
||||||
"General Settings": "Cấu hình chung",
|
"General Settings": "Cấu hình chung",
|
||||||
"Generate Image": "",
|
"Generate Image": "Sinh ảnh",
|
||||||
"Generating search query": "Tạo truy vấn tìm kiếm",
|
"Generating search query": "Tạo truy vấn tìm kiếm",
|
||||||
"Generation Info": "Thông tin chung",
|
"Generation Info": "Thông tin chung",
|
||||||
"Good Response": "Trả lời tốt",
|
"Good Response": "Trả lời tốt",
|
||||||
@@ -256,11 +259,12 @@
|
|||||||
"Import Documents Mapping": "Nạp cấu trúc tài liệu",
|
"Import Documents Mapping": "Nạp cấu trúc tài liệu",
|
||||||
"Import Models": "Nạp model",
|
"Import Models": "Nạp model",
|
||||||
"Import Prompts": "Nạp các prompt lên hệ thống",
|
"Import Prompts": "Nạp các prompt lên hệ thống",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "Bao gồm flag `--api` khi chạy stable-diffusion-webui",
|
"Include `--api` flag when running stable-diffusion-webui": "Bao gồm flag `--api` khi chạy stable-diffusion-webui",
|
||||||
"Info": "Thông tin",
|
"Info": "Thông tin",
|
||||||
"Input commands": "Nhập các câu lệnh",
|
"Input commands": "Nhập các câu lệnh",
|
||||||
"Install from Github URL": "Cài đặt từ Github URL",
|
"Install from Github URL": "Cài đặt từ Github URL",
|
||||||
"Instant Auto-Send After Voice Transcription": "",
|
"Instant Auto-Send After Voice Transcription": "Tự động gửi ngay lập tức sau khi phiên dịch giọng nói",
|
||||||
"Interface": "Giao diện",
|
"Interface": "Giao diện",
|
||||||
"Invalid Tag": "Tag không hợp lệ",
|
"Invalid Tag": "Tag không hợp lệ",
|
||||||
"January": "Tháng 1",
|
"January": "Tháng 1",
|
||||||
@@ -273,17 +277,17 @@
|
|||||||
"JWT Token": "Token JWT",
|
"JWT Token": "Token JWT",
|
||||||
"Keep Alive": "Giữ kết nối",
|
"Keep Alive": "Giữ kết nối",
|
||||||
"Keyboard shortcuts": "Phím tắt",
|
"Keyboard shortcuts": "Phím tắt",
|
||||||
"Knowledge": "",
|
"Knowledge": "Kiến thức",
|
||||||
"Language": "Ngôn ngữ",
|
"Language": "Ngôn ngữ",
|
||||||
"Last Active": "Truy cập gần nhất",
|
"Last Active": "Truy cập gần nhất",
|
||||||
"Light": "Sáng",
|
"Light": "Sáng",
|
||||||
"Listening...": "",
|
"Listening...": "Đang nghe...",
|
||||||
"LLMs can make mistakes. Verify important information.": "Hệ thống có thể tạo ra nội dung không chính xác hoặc sai. Hãy kiểm chứng kỹ lưỡng thông tin trước khi tiếp nhận và sử dụng.",
|
"LLMs can make mistakes. Verify important information.": "Hệ thống có thể tạo ra nội dung không chính xác hoặc sai. Hãy kiểm chứng kỹ lưỡng thông tin trước khi tiếp nhận và sử dụng.",
|
||||||
"Local Models": "",
|
"Local Models": "",
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Được tạo bởi Cộng đồng OpenWebUI",
|
"Made by OpenWebUI Community": "Được tạo bởi Cộng đồng OpenWebUI",
|
||||||
"Make sure to enclose them with": "Hãy chắc chắn bao quanh chúng bằng",
|
"Make sure to enclose them with": "Hãy chắc chắn bao quanh chúng bằng",
|
||||||
"Manage": "",
|
"Manage": "Quản lý",
|
||||||
"Manage Models": "Quản lý mô hình",
|
"Manage Models": "Quản lý mô hình",
|
||||||
"Manage Ollama Models": "Quản lý mô hình với Ollama",
|
"Manage Ollama Models": "Quản lý mô hình với Ollama",
|
||||||
"Manage Pipelines": "Quản lý Pipelines",
|
"Manage Pipelines": "Quản lý Pipelines",
|
||||||
@@ -319,7 +323,7 @@
|
|||||||
"Name your model": "Tên model",
|
"Name your model": "Tên model",
|
||||||
"New Chat": "Tạo chat mới",
|
"New Chat": "Tạo chat mới",
|
||||||
"New Password": "Mật khẩu mới",
|
"New Password": "Mật khẩu mới",
|
||||||
"No documents found": "",
|
"No documents found": "Không tìm thấy tài liệu nào",
|
||||||
"No results found": "Không tìm thấy kết quả",
|
"No results found": "Không tìm thấy kết quả",
|
||||||
"No search query generated": "Không có truy vấn tìm kiếm nào được tạo ra",
|
"No search query generated": "Không có truy vấn tìm kiếm nào được tạo ra",
|
||||||
"No source available": "Không có nguồn",
|
"No source available": "Không có nguồn",
|
||||||
@@ -336,7 +340,7 @@
|
|||||||
"Ollama": "Ollama",
|
"Ollama": "Ollama",
|
||||||
"Ollama API": "Ollama API",
|
"Ollama API": "Ollama API",
|
||||||
"Ollama API disabled": "API Ollama bị vô hiệu hóa",
|
"Ollama API disabled": "API Ollama bị vô hiệu hóa",
|
||||||
"Ollama API is disabled": "",
|
"Ollama API is disabled": "Ollama API đang bị vô hiệu hóa",
|
||||||
"Ollama Version": "Phiên bản Ollama",
|
"Ollama Version": "Phiên bản Ollama",
|
||||||
"On": "Bật",
|
"On": "Bật",
|
||||||
"Only": "Only",
|
"Only": "Only",
|
||||||
@@ -359,12 +363,12 @@
|
|||||||
"PDF document (.pdf)": "Tập tin PDF (.pdf)",
|
"PDF document (.pdf)": "Tập tin PDF (.pdf)",
|
||||||
"PDF Extract Images (OCR)": "Trích xuất ảnh từ PDF (OCR)",
|
"PDF Extract Images (OCR)": "Trích xuất ảnh từ PDF (OCR)",
|
||||||
"pending": "đang chờ phê duyệt",
|
"pending": "đang chờ phê duyệt",
|
||||||
"Permission denied when accessing media devices": "",
|
"Permission denied when accessing media devices": "Quyền truy cập các thiết bị đa phương tiện bị từ chối",
|
||||||
"Permission denied when accessing microphone": "",
|
"Permission denied when accessing microphone": "Quyền truy cập micrô bị từ chối",
|
||||||
"Permission denied when accessing microphone: {{error}}": "Quyền truy cập micrô bị từ chối: {{error}}",
|
"Permission denied when accessing microphone: {{error}}": "Quyền truy cập micrô bị từ chối: {{error}}",
|
||||||
"Personalization": "Cá nhân hóa",
|
"Personalization": "Cá nhân hóa",
|
||||||
"Pipelines": "Đường ống",
|
"Pipelines": "",
|
||||||
"Pipelines Valves": "Van đường ống",
|
"Pipelines Valves": "",
|
||||||
"Plain text (.txt)": "Văn bản thô (.txt)",
|
"Plain text (.txt)": "Văn bản thô (.txt)",
|
||||||
"Playground": "Thử nghiệm (Playground)",
|
"Playground": "Thử nghiệm (Playground)",
|
||||||
"Positive attitude": "Thái độ tích cực",
|
"Positive attitude": "Thái độ tích cực",
|
||||||
@@ -383,7 +387,7 @@
|
|||||||
"Read Aloud": "Đọc ra loa",
|
"Read Aloud": "Đọc ra loa",
|
||||||
"Record voice": "Ghi âm",
|
"Record voice": "Ghi âm",
|
||||||
"Redirecting you to OpenWebUI Community": "Đang chuyển hướng bạn đến Cộng đồng OpenWebUI",
|
"Redirecting you to OpenWebUI Community": "Đang chuyển hướng bạn đến Cộng đồng OpenWebUI",
|
||||||
"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "",
|
"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Hãy coi bản thân mình như \"Người dùng\" (ví dụ: \"Người dùng đang học Tiếng Tây Ban Nha\")",
|
||||||
"Refused when it shouldn't have": "Từ chối trả lời mà nhẽ không nên làm vậy",
|
"Refused when it shouldn't have": "Từ chối trả lời mà nhẽ không nên làm vậy",
|
||||||
"Regenerate": "Tạo sinh lại câu trả lời",
|
"Regenerate": "Tạo sinh lại câu trả lời",
|
||||||
"Release Notes": "Mô tả những cập nhật mới",
|
"Release Notes": "Mô tả những cập nhật mới",
|
||||||
@@ -402,7 +406,7 @@
|
|||||||
"Rosé Pine": "Rosé Pine",
|
"Rosé Pine": "Rosé Pine",
|
||||||
"Rosé Pine Dawn": "Rosé Pine Dawn",
|
"Rosé Pine Dawn": "Rosé Pine Dawn",
|
||||||
"RTL": "RTL",
|
"RTL": "RTL",
|
||||||
"Running": "",
|
"Running": "Đang chạy",
|
||||||
"Save": "Lưu",
|
"Save": "Lưu",
|
||||||
"Save & Create": "Lưu & Tạo",
|
"Save & Create": "Lưu & Tạo",
|
||||||
"Save & Update": "Lưu & Cập nhật",
|
"Save & Update": "Lưu & Cập nhật",
|
||||||
@@ -416,30 +420,33 @@
|
|||||||
"Search Documents": "Tìm tài liệu",
|
"Search Documents": "Tìm tài liệu",
|
||||||
"Search Models": "Tìm model",
|
"Search Models": "Tìm model",
|
||||||
"Search Prompts": "Tìm prompt",
|
"Search Prompts": "Tìm prompt",
|
||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "Prompt tạo câu truy vấn, tìm kiếm",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "Ngưỡng độ dài prompt tạo câu truy vấn, tìm kiếm",
|
||||||
"Search Result Count": "Số kết quả tìm kiếm",
|
"Search Result Count": "Số kết quả tìm kiếm",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_other": "Đã tìm {{count}} sites_other",
|
"Searched {{count}} sites_other": "Đã tìm {{count}} sites_other",
|
||||||
"Searching the web for '{{searchQuery}}'": "Tìm kiếm web cho '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "Đang tìm \"{{searchQuery}}\"",
|
||||||
"Searxng Query URL": "URL truy vấn Searxng",
|
"Searxng Query URL": "URL truy vấn Searxng",
|
||||||
"See readme.md for instructions": "Xem readme.md để biết hướng dẫn",
|
"See readme.md for instructions": "Xem readme.md để biết hướng dẫn",
|
||||||
"See what's new": "Xem những cập nhật mới",
|
"See what's new": "Xem những cập nhật mới",
|
||||||
"Seed": "Seed",
|
"Seed": "Seed",
|
||||||
"Select a base model": "Chọn một base model",
|
"Select a base model": "Chọn một base model",
|
||||||
"Select a engine": "",
|
"Select a engine": "Chọn dịch vụ",
|
||||||
"Select a mode": "Chọn một chế độ",
|
"Select a mode": "Chọn một chế độ",
|
||||||
"Select a model": "Chọn mô hình",
|
"Select a model": "Chọn mô hình",
|
||||||
"Select a pipeline": "Chọn một quy trình",
|
"Select a pipeline": "Chọn một quy trình",
|
||||||
"Select a pipeline url": "Chọn url quy trình",
|
"Select a pipeline url": "Chọn url quy trình",
|
||||||
"Select an Ollama instance": "Chọn một thực thể Ollama",
|
"Select an Ollama instance": "Chọn một thực thể Ollama",
|
||||||
|
"Select Documents": "Chọn tài liệu",
|
||||||
"Select model": "Chọn model",
|
"Select model": "Chọn model",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "Chọn model để gọi",
|
||||||
"Selected model(s) do not support image inputs": "Model được lựa chọn không hỗ trợ đầu vào là hình ảnh",
|
"Selected model(s) do not support image inputs": "Model được lựa chọn không hỗ trợ đầu vào là hình ảnh",
|
||||||
"Send": "Gửi",
|
"Send": "Gửi",
|
||||||
"Send a Message": "Gửi yêu cầu",
|
"Send a Message": "Gửi yêu cầu",
|
||||||
"Send message": "Gửi yêu cầu",
|
"Send message": "Gửi yêu cầu",
|
||||||
"September": "Tháng 9",
|
"September": "Tháng 9",
|
||||||
"Serper API Key": "Khóa API Serper",
|
"Serper API Key": "Khóa API Serper",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Khóa API Serpstack",
|
"Serpstack API Key": "Khóa API Serpstack",
|
||||||
"Server connection verified": "Kết nối máy chủ đã được xác minh",
|
"Server connection verified": "Kết nối máy chủ đã được xác minh",
|
||||||
"Set as default": "Đặt làm mặc định",
|
"Set as default": "Đặt làm mặc định",
|
||||||
@@ -452,13 +459,13 @@
|
|||||||
"Set Voice": "Đặt Giọng nói",
|
"Set Voice": "Đặt Giọng nói",
|
||||||
"Settings": "Cài đặt",
|
"Settings": "Cài đặt",
|
||||||
"Settings saved successfully!": "Cài đặt đã được lưu thành công!",
|
"Settings saved successfully!": "Cài đặt đã được lưu thành công!",
|
||||||
"Settings updated successfully": "",
|
"Settings updated successfully": "Các cài đặt đã được cập nhật thành công",
|
||||||
"Share": "Chia sẻ",
|
"Share": "Chia sẻ",
|
||||||
"Share Chat": "Chia sẻ Chat",
|
"Share Chat": "Chia sẻ Chat",
|
||||||
"Share to OpenWebUI Community": "Chia sẻ đến Cộng đồng OpenWebUI",
|
"Share to OpenWebUI Community": "Chia sẻ đến Cộng đồng OpenWebUI",
|
||||||
"short-summary": "tóm tắt ngắn",
|
"short-summary": "tóm tắt ngắn",
|
||||||
"Show": "Hiển thị",
|
"Show": "Hiển thị",
|
||||||
"Show Admin Details in Account Pending Overlay": "",
|
"Show Admin Details in Account Pending Overlay": "Hiển thị thông tin của Quản trị viên trên màn hình hiển thị Tài khoản đang chờ xử lý",
|
||||||
"Show shortcuts": "Hiển thị phím tắt",
|
"Show shortcuts": "Hiển thị phím tắt",
|
||||||
"Showcased creativity": "Thể hiện sự sáng tạo",
|
"Showcased creativity": "Thể hiện sự sáng tạo",
|
||||||
"sidebar": "thanh bên",
|
"sidebar": "thanh bên",
|
||||||
@@ -489,9 +496,9 @@
|
|||||||
"Thanks for your feedback!": "Cám ơn bạn đã gửi phản hồi!",
|
"Thanks for your feedback!": "Cám ơn bạn đã gửi phản hồi!",
|
||||||
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Điểm (score) phải có giá trị từ 0,0 (0%) đến 1,0 (100%).",
|
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Điểm (score) phải có giá trị từ 0,0 (0%) đến 1,0 (100%).",
|
||||||
"Theme": "Chủ đề",
|
"Theme": "Chủ đề",
|
||||||
"Thinking...": "",
|
"Thinking...": "Đang suy luận...",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Điều này đảm bảo rằng các nội dung chat có giá trị của bạn được lưu an toàn vào cơ sở dữ liệu backend của bạn. Cảm ơn bạn!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Điều này đảm bảo rằng các nội dung chat có giá trị của bạn được lưu an toàn vào cơ sở dữ liệu backend của bạn. Cảm ơn bạn!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Đây là tính năng thử nghiệm, có thể không hoạt động như mong đợi và có thể thay đổi bất kỳ lúc nào.",
|
||||||
"This setting does not sync across browsers or devices.": "Cài đặt này không đồng bộ hóa trên các trình duyệt hoặc thiết bị.",
|
"This setting does not sync across browsers or devices.": "Cài đặt này không đồng bộ hóa trên các trình duyệt hoặc thiết bị.",
|
||||||
"Thorough explanation": "Giải thích kỹ lưỡng",
|
"Thorough explanation": "Giải thích kỹ lưỡng",
|
||||||
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Mẹo: Cập nhật nhiều khe biến liên tiếp bằng cách nhấn phím tab trong đầu vào trò chuyện sau mỗi việc thay thế.",
|
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Mẹo: Cập nhật nhiều khe biến liên tiếp bằng cách nhấn phím tab trong đầu vào trò chuyện sau mỗi việc thay thế.",
|
||||||
@@ -503,11 +510,14 @@
|
|||||||
"to": " - ",
|
"to": " - ",
|
||||||
"To access the available model names for downloading,": "Để truy cập các tên mô hình có sẵn để tải xuống,",
|
"To access the available model names for downloading,": "Để truy cập các tên mô hình có sẵn để tải xuống,",
|
||||||
"To access the GGUF models available for downloading,": "Để truy cập các mô hình GGUF có sẵn để tải xuống,",
|
"To access the GGUF models available for downloading,": "Để truy cập các mô hình GGUF có sẵn để tải xuống,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Để truy cập vui lòng liên hệ với quản trị viên.",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "Để thêm tài liệu, trước tiên hãy upload chúng lên khu vực \"Tài liệu\".",
|
||||||
"to chat input.": "đến đầu vào trò chuyện.",
|
"to chat input.": "đến đầu vào trò chuyện.",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "Hôm nay",
|
"Today": "Hôm nay",
|
||||||
"Toggle settings": "Bật/tắt cài đặt",
|
"Toggle settings": "Bật/tắt cài đặt",
|
||||||
"Toggle sidebar": "Bật/tắt thanh bên",
|
"Toggle sidebar": "Bật/tắt thanh bên",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "Gặp vấn đề khi truy cập Ollama?",
|
"Trouble accessing Ollama?": "Gặp vấn đề khi truy cập Ollama?",
|
||||||
@@ -553,19 +563,19 @@
|
|||||||
"What’s New in": "Thông tin mới về",
|
"What’s New in": "Thông tin mới về",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Khi chế độ lịch sử chat đã tắt, các nội dung chat mới trên trình duyệt này sẽ không xuất hiện trên bất kỳ thiết bị nào của bạn.",
|
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Khi chế độ lịch sử chat đã tắt, các nội dung chat mới trên trình duyệt này sẽ không xuất hiện trên bất kỳ thiết bị nào của bạn.",
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "Chế độ màn hình rộng",
|
||||||
"Workspace": "Workspace",
|
"Workspace": "Workspace",
|
||||||
"Write a prompt suggestion (e.g. Who are you?)": "Hãy viết một prompt (vd: Bạn là ai?)",
|
"Write a prompt suggestion (e.g. Who are you?)": "Hãy viết một prompt (vd: Bạn là ai?)",
|
||||||
"Write a summary in 50 words that summarizes [topic or keyword].": "Viết một tóm tắt trong vòng 50 từ cho [chủ đề hoặc từ khóa].",
|
"Write a summary in 50 words that summarizes [topic or keyword].": "Viết một tóm tắt trong vòng 50 từ cho [chủ đề hoặc từ khóa].",
|
||||||
"Yesterday": "Hôm qua",
|
"Yesterday": "Hôm qua",
|
||||||
"You": "Bạn",
|
"You": "Bạn",
|
||||||
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "",
|
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Bạn có thể cá nhân hóa các tương tác của mình với LLM bằng cách thêm bộ nhớ thông qua nút 'Quản lý' bên dưới, làm cho chúng hữu ích hơn và phù hợp với bạn hơn.",
|
||||||
"You cannot clone a base model": "Bạn không thể nhân bản base model",
|
"You cannot clone a base model": "Bạn không thể nhân bản base model",
|
||||||
"You have no archived conversations.": "Bạn chưa lưu trữ một nội dung chat nào",
|
"You have no archived conversations.": "Bạn chưa lưu trữ một nội dung chat nào",
|
||||||
"You have shared this chat": "Bạn vừa chia sẻ chat này",
|
"You have shared this chat": "Bạn vừa chia sẻ chat này",
|
||||||
"You're a helpful assistant.": "Bạn là một trợ lý hữu ích.",
|
"You're a helpful assistant.": "Bạn là một trợ lý hữu ích.",
|
||||||
"You're now logged in.": "Bạn đã đăng nhập.",
|
"You're now logged in.": "Bạn đã đăng nhập.",
|
||||||
"Your account status is currently pending activation.": "",
|
"Your account status is currently pending activation.": "Tài khoản của bạn hiện đang ở trạng thái chờ kích hoạt.",
|
||||||
"Youtube": "Youtube",
|
"Youtube": "Youtube",
|
||||||
"Youtube Loader Settings": "Cài đặt Youtube Loader"
|
"Youtube Loader Settings": "Cài đặt Youtube Loader"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "管理员联系方式",
|
"Admin": "管理员联系方式",
|
||||||
"Admin Panel": "管理员面板",
|
"Admin Panel": "管理员面板",
|
||||||
"Admin Settings": "管理员设置",
|
"Admin Settings": "管理员设置",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "高级参数",
|
"Advanced Parameters": "高级参数",
|
||||||
"Advanced Params": "高级参数",
|
"Advanced Params": "高级参数",
|
||||||
"all": "所有",
|
"all": "所有",
|
||||||
@@ -74,7 +75,7 @@
|
|||||||
"Bypass SSL verification for Websites": "绕过网站的 SSL 验证",
|
"Bypass SSL verification for Websites": "绕过网站的 SSL 验证",
|
||||||
"Call": "呼叫",
|
"Call": "呼叫",
|
||||||
"Call feature is not supported when using Web STT engine": "使用 Web 语音转文字引擎时不支持呼叫功能。",
|
"Call feature is not supported when using Web STT engine": "使用 Web 语音转文字引擎时不支持呼叫功能。",
|
||||||
"Camera": "",
|
"Camera": "摄像头",
|
||||||
"Cancel": "取消",
|
"Cancel": "取消",
|
||||||
"Capabilities": "能力",
|
"Capabilities": "能力",
|
||||||
"Change Password": "更改密码",
|
"Change Password": "更改密码",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "输入评分",
|
"Enter Score": "输入评分",
|
||||||
"Enter Searxng Query URL": "输入 Searxng 查询地址",
|
"Enter Searxng Query URL": "输入 Searxng 查询地址",
|
||||||
"Enter Serper API Key": "输入 Serper API 密钥",
|
"Enter Serper API Key": "输入 Serper API 密钥",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "输入 Serpstack API 密钥",
|
"Enter Serpstack API Key": "输入 Serpstack API 密钥",
|
||||||
"Enter stop sequence": "输入停止序列 (Stop Sequence)",
|
"Enter stop sequence": "输入停止序列 (Stop Sequence)",
|
||||||
"Enter Top K": "输入 Top K",
|
"Enter Top K": "输入 Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "导出文档映射",
|
"Export Documents Mapping": "导出文档映射",
|
||||||
"Export Models": "导出模型",
|
"Export Models": "导出模型",
|
||||||
"Export Prompts": "导出提示词",
|
"Export Prompts": "导出提示词",
|
||||||
|
"Export Tools": "导出工具",
|
||||||
"External Models": "外部模型",
|
"External Models": "外部模型",
|
||||||
"Failed to create API Key.": "无法创建 API 密钥。",
|
"Failed to create API Key.": "无法创建 API 密钥。",
|
||||||
"Failed to read clipboard contents": "无法读取剪贴板内容",
|
"Failed to read clipboard contents": "无法读取剪贴板内容",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "导入文档映射",
|
"Import Documents Mapping": "导入文档映射",
|
||||||
"Import Models": "导入模型",
|
"Import Models": "导入模型",
|
||||||
"Import Prompts": "导入提示词",
|
"Import Prompts": "导入提示词",
|
||||||
|
"Import Tools": "导入工具",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "运行 stable-diffusion-webui 时包含 `--api` 标志",
|
"Include `--api` flag when running stable-diffusion-webui": "运行 stable-diffusion-webui 时包含 `--api` 标志",
|
||||||
"Info": "信息",
|
"Info": "信息",
|
||||||
"Input commands": "输入命令",
|
"Input commands": "输入命令",
|
||||||
@@ -273,7 +277,7 @@
|
|||||||
"JWT Token": "JWT 令牌",
|
"JWT Token": "JWT 令牌",
|
||||||
"Keep Alive": "保持活动",
|
"Keep Alive": "保持活动",
|
||||||
"Keyboard shortcuts": "键盘快捷键",
|
"Keyboard shortcuts": "键盘快捷键",
|
||||||
"Knowledge": "",
|
"Knowledge": "知识库",
|
||||||
"Language": "语言",
|
"Language": "语言",
|
||||||
"Last Active": "最后在线时间",
|
"Last Active": "最后在线时间",
|
||||||
"Light": "浅色",
|
"Light": "浅色",
|
||||||
@@ -319,7 +323,7 @@
|
|||||||
"Name your model": "为您的模型命名",
|
"Name your model": "为您的模型命名",
|
||||||
"New Chat": "新对话",
|
"New Chat": "新对话",
|
||||||
"New Password": "新密码",
|
"New Password": "新密码",
|
||||||
"No documents found": "",
|
"No documents found": "未找到文档",
|
||||||
"No results found": "未找到结果",
|
"No results found": "未找到结果",
|
||||||
"No search query generated": "未生成搜索查询",
|
"No search query generated": "未生成搜索查询",
|
||||||
"No source available": "没有可用来源",
|
"No source available": "没有可用来源",
|
||||||
@@ -416,11 +420,12 @@
|
|||||||
"Search Documents": "搜索文档",
|
"Search Documents": "搜索文档",
|
||||||
"Search Models": "搜索模型",
|
"Search Models": "搜索模型",
|
||||||
"Search Prompts": "搜索提示词",
|
"Search Prompts": "搜索提示词",
|
||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "搜索查询生成提示",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "搜索查询生成提示长度阈值",
|
||||||
"Search Result Count": "搜索结果数量",
|
"Search Result Count": "搜索结果数量",
|
||||||
|
"Search Tools": "搜索工具",
|
||||||
"Searched {{count}} sites_other": "检索到 {{count}} 个网站",
|
"Searched {{count}} sites_other": "检索到 {{count}} 个网站",
|
||||||
"Searching the web for '{{searchQuery}}'": "在网络中搜索 '{{searchQuery}}' ",
|
"Searching \"{{searchQuery}}\"": "搜索 \"{{searchQuery}}\" 中",
|
||||||
"Searxng Query URL": "Searxng 查询 URL",
|
"Searxng Query URL": "Searxng 查询 URL",
|
||||||
"See readme.md for instructions": "查看 readme.md 以获取说明",
|
"See readme.md for instructions": "查看 readme.md 以获取说明",
|
||||||
"See what's new": "查阅最新更新内容",
|
"See what's new": "查阅最新更新内容",
|
||||||
@@ -432,6 +437,7 @@
|
|||||||
"Select a pipeline": "选择一个管道",
|
"Select a pipeline": "选择一个管道",
|
||||||
"Select a pipeline url": "选择一个管道 URL",
|
"Select a pipeline url": "选择一个管道 URL",
|
||||||
"Select an Ollama instance": "选择一个 Ollama 实例",
|
"Select an Ollama instance": "选择一个 Ollama 实例",
|
||||||
|
"Select Documents": "选择文档",
|
||||||
"Select model": "选择模型",
|
"Select model": "选择模型",
|
||||||
"Select only one model to call": "请仅选择一个模型来呼叫",
|
"Select only one model to call": "请仅选择一个模型来呼叫",
|
||||||
"Selected model(s) do not support image inputs": "已选择的模型不支持发送图像",
|
"Selected model(s) do not support image inputs": "已选择的模型不支持发送图像",
|
||||||
@@ -440,6 +446,7 @@
|
|||||||
"Send message": "发送消息",
|
"Send message": "发送消息",
|
||||||
"September": "九月",
|
"September": "九月",
|
||||||
"Serper API Key": "Serper API 密钥",
|
"Serper API Key": "Serper API 密钥",
|
||||||
|
"Serply API Key": "Serply API 密钥",
|
||||||
"Serpstack API Key": "Serpstack API 密钥",
|
"Serpstack API Key": "Serpstack API 密钥",
|
||||||
"Server connection verified": "已验证服务器连接",
|
"Server connection verified": "已验证服务器连接",
|
||||||
"Set as default": "设为默认",
|
"Set as default": "设为默认",
|
||||||
@@ -504,10 +511,13 @@
|
|||||||
"To access the available model names for downloading,": "要访问可下载的模型名称,",
|
"To access the available model names for downloading,": "要访问可下载的模型名称,",
|
||||||
"To access the GGUF models available for downloading,": "要访问可下载的 GGUF 模型,",
|
"To access the GGUF models available for downloading,": "要访问可下载的 GGUF 模型,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "请联系管理员以访问。管理员可以在后台管理面板中管理用户状态。",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "请联系管理员以访问。管理员可以在后台管理面板中管理用户状态。",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "要在此处添加文档,请先将它们上传到工作空间中的“文档”内。",
|
||||||
"to chat input.": "到对话输入。",
|
"to chat input.": "到对话输入。",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "今天",
|
"Today": "今天",
|
||||||
"Toggle settings": "切换设置",
|
"Toggle settings": "切换设置",
|
||||||
"Toggle sidebar": "切换侧边栏",
|
"Toggle sidebar": "切换侧边栏",
|
||||||
|
"Tools": "工具",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "访问 Ollama 时遇到问题?",
|
"Trouble accessing Ollama?": "访问 Ollama 时遇到问题?",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
"Admin": "",
|
"Admin": "",
|
||||||
"Admin Panel": "管理員控制台",
|
"Admin Panel": "管理員控制台",
|
||||||
"Admin Settings": "管理設定",
|
"Admin Settings": "管理設定",
|
||||||
|
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||||
"Advanced Parameters": "進階參數",
|
"Advanced Parameters": "進階參數",
|
||||||
"Advanced Params": "進階參數",
|
"Advanced Params": "進階參數",
|
||||||
"all": "所有",
|
"all": "所有",
|
||||||
@@ -201,6 +202,7 @@
|
|||||||
"Enter Score": "輸入分數",
|
"Enter Score": "輸入分數",
|
||||||
"Enter Searxng Query URL": "輸入 Searxng 查詢 URL",
|
"Enter Searxng Query URL": "輸入 Searxng 查詢 URL",
|
||||||
"Enter Serper API Key": "輸入 Serper API Key",
|
"Enter Serper API Key": "輸入 Serper API Key",
|
||||||
|
"Enter Serply API Key": "",
|
||||||
"Enter Serpstack API Key": "輸入 Serpstack API Key",
|
"Enter Serpstack API Key": "輸入 Serpstack API Key",
|
||||||
"Enter stop sequence": "輸入停止序列",
|
"Enter stop sequence": "輸入停止序列",
|
||||||
"Enter Top K": "輸入 Top K",
|
"Enter Top K": "輸入 Top K",
|
||||||
@@ -219,6 +221,7 @@
|
|||||||
"Export Documents Mapping": "匯出文件映射",
|
"Export Documents Mapping": "匯出文件映射",
|
||||||
"Export Models": "匯出模型",
|
"Export Models": "匯出模型",
|
||||||
"Export Prompts": "匯出提示詞",
|
"Export Prompts": "匯出提示詞",
|
||||||
|
"Export Tools": "",
|
||||||
"External Models": "",
|
"External Models": "",
|
||||||
"Failed to create API Key.": "無法創建 API 金鑰。",
|
"Failed to create API Key.": "無法創建 API 金鑰。",
|
||||||
"Failed to read clipboard contents": "無法讀取剪貼簿內容",
|
"Failed to read clipboard contents": "無法讀取剪貼簿內容",
|
||||||
@@ -256,6 +259,7 @@
|
|||||||
"Import Documents Mapping": "匯入文件映射",
|
"Import Documents Mapping": "匯入文件映射",
|
||||||
"Import Models": "匯入模型",
|
"Import Models": "匯入模型",
|
||||||
"Import Prompts": "匯入提示詞",
|
"Import Prompts": "匯入提示詞",
|
||||||
|
"Import Tools": "",
|
||||||
"Include `--api` flag when running stable-diffusion-webui": "在運行 stable-diffusion-webui 時加上 `--api` 標誌",
|
"Include `--api` flag when running stable-diffusion-webui": "在運行 stable-diffusion-webui 時加上 `--api` 標誌",
|
||||||
"Info": "資訊",
|
"Info": "資訊",
|
||||||
"Input commands": "輸入命令",
|
"Input commands": "輸入命令",
|
||||||
@@ -419,8 +423,9 @@
|
|||||||
"Search Query Generation Prompt": "",
|
"Search Query Generation Prompt": "",
|
||||||
"Search Query Generation Prompt Length Threshold": "",
|
"Search Query Generation Prompt Length Threshold": "",
|
||||||
"Search Result Count": "搜尋結果數量",
|
"Search Result Count": "搜尋結果數量",
|
||||||
|
"Search Tools": "",
|
||||||
"Searched {{count}} sites_other": "掃描 {{count}} 個網站_其他",
|
"Searched {{count}} sites_other": "掃描 {{count}} 個網站_其他",
|
||||||
"Searching the web for '{{searchQuery}}'": "搜尋網站 '{{searchQuery}}'",
|
"Searching \"{{searchQuery}}\"": "",
|
||||||
"Searxng Query URL": "Searxng 查詢 URL",
|
"Searxng Query URL": "Searxng 查詢 URL",
|
||||||
"See readme.md for instructions": "查看 readme.md 獲取指南",
|
"See readme.md for instructions": "查看 readme.md 獲取指南",
|
||||||
"See what's new": "查看最新內容",
|
"See what's new": "查看最新內容",
|
||||||
@@ -432,6 +437,7 @@
|
|||||||
"Select a pipeline": "選擇管道",
|
"Select a pipeline": "選擇管道",
|
||||||
"Select a pipeline url": "選擇管道 URL",
|
"Select a pipeline url": "選擇管道 URL",
|
||||||
"Select an Ollama instance": "選擇 Ollama 實例",
|
"Select an Ollama instance": "選擇 Ollama 實例",
|
||||||
|
"Select Documents": "",
|
||||||
"Select model": "選擇模型",
|
"Select model": "選擇模型",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "已選擇模型不支持圖像輸入",
|
"Selected model(s) do not support image inputs": "已選擇模型不支持圖像輸入",
|
||||||
@@ -440,6 +446,7 @@
|
|||||||
"Send message": "傳送訊息",
|
"Send message": "傳送訊息",
|
||||||
"September": "九月",
|
"September": "九月",
|
||||||
"Serper API Key": "Serper API Key",
|
"Serper API Key": "Serper API Key",
|
||||||
|
"Serply API Key": "",
|
||||||
"Serpstack API Key": "Serpstack API Key",
|
"Serpstack API Key": "Serpstack API Key",
|
||||||
"Server connection verified": "已驗證伺服器連線",
|
"Server connection verified": "已驗證伺服器連線",
|
||||||
"Set as default": "設為預設",
|
"Set as default": "設為預設",
|
||||||
@@ -504,10 +511,13 @@
|
|||||||
"To access the available model names for downloading,": "若想查看可供下載的模型名稱,",
|
"To access the available model names for downloading,": "若想查看可供下載的模型名稱,",
|
||||||
"To access the GGUF models available for downloading,": "若想查看可供下載的 GGUF 模型名稱,",
|
"To access the GGUF models available for downloading,": "若想查看可供下載的 GGUF 模型名稱,",
|
||||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||||
|
"To add documents here, upload them to the \"Documents\" workspace first.": "",
|
||||||
"to chat input.": "到聊天輸入框來啟動此命令。",
|
"to chat input.": "到聊天輸入框來啟動此命令。",
|
||||||
|
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||||
"Today": "今天",
|
"Today": "今天",
|
||||||
"Toggle settings": "切換設定",
|
"Toggle settings": "切換設定",
|
||||||
"Toggle sidebar": "切換側邊欄",
|
"Toggle sidebar": "切換側邊欄",
|
||||||
|
"Tools": "",
|
||||||
"Top K": "Top K",
|
"Top K": "Top K",
|
||||||
"Top P": "Top P",
|
"Top P": "Top P",
|
||||||
"Trouble accessing Ollama?": "存取 Ollama 時遇到問題?",
|
"Trouble accessing Ollama?": "存取 Ollama 時遇到問題?",
|
||||||
|
|||||||
+10
-16
@@ -23,24 +23,11 @@ export const chatId = writable('');
|
|||||||
|
|
||||||
export const chats = writable([]);
|
export const chats = writable([]);
|
||||||
export const tags = writable([]);
|
export const tags = writable([]);
|
||||||
export const models: Writable<Model[]> = writable([]);
|
|
||||||
|
|
||||||
export const modelfiles = writable([]);
|
export const models: Writable<Model[]> = writable([]);
|
||||||
export const prompts: Writable<Prompt[]> = writable([]);
|
export const prompts: Writable<Prompt[]> = writable([]);
|
||||||
export const documents = writable([
|
export const documents: Writable<Document[]> = writable([]);
|
||||||
{
|
export const tools = writable([]);
|
||||||
collection_name: 'collection_name',
|
|
||||||
filename: 'filename',
|
|
||||||
name: 'name',
|
|
||||||
title: 'title'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
collection_name: 'collection_name1',
|
|
||||||
filename: 'filename1',
|
|
||||||
name: 'name1',
|
|
||||||
title: 'title1'
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
export const banners: Writable<Banner[]> = writable([]);
|
export const banners: Writable<Banner[]> = writable([]);
|
||||||
|
|
||||||
@@ -135,6 +122,13 @@ type Prompt = {
|
|||||||
timestamp: number;
|
timestamp: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type Document = {
|
||||||
|
collection_name: string;
|
||||||
|
filename: string;
|
||||||
|
name: string;
|
||||||
|
title: string;
|
||||||
|
};
|
||||||
|
|
||||||
type Config = {
|
type Config = {
|
||||||
status: boolean;
|
status: boolean;
|
||||||
name: string;
|
name: string;
|
||||||
|
|||||||
@@ -8,12 +8,15 @@
|
|||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
|
|
||||||
import { getModels as _getModels } from '$lib/apis';
|
import { getModels as _getModels } from '$lib/apis';
|
||||||
import { getOllamaVersion } from '$lib/apis/ollama';
|
|
||||||
import { getPrompts } from '$lib/apis/prompts';
|
|
||||||
|
|
||||||
import { getDocs } from '$lib/apis/documents';
|
|
||||||
import { getAllChatTags } from '$lib/apis/chats';
|
import { getAllChatTags } from '$lib/apis/chats';
|
||||||
|
|
||||||
|
import { getPrompts } from '$lib/apis/prompts';
|
||||||
|
import { getDocs } from '$lib/apis/documents';
|
||||||
|
import { getTools } from '$lib/apis/tools';
|
||||||
|
|
||||||
|
import { getBanners } from '$lib/apis/configs';
|
||||||
|
import { getUserSettings } from '$lib/apis/users';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
user,
|
user,
|
||||||
showSettings,
|
showSettings,
|
||||||
@@ -25,33 +28,21 @@
|
|||||||
banners,
|
banners,
|
||||||
showChangelog,
|
showChangelog,
|
||||||
config,
|
config,
|
||||||
showCallOverlay
|
showCallOverlay,
|
||||||
|
tools
|
||||||
} from '$lib/stores';
|
} from '$lib/stores';
|
||||||
import { REQUIRED_OLLAMA_VERSION, WEBUI_API_BASE_URL } from '$lib/constants';
|
|
||||||
import { compareVersion } from '$lib/utils';
|
|
||||||
|
|
||||||
import SettingsModal from '$lib/components/chat/SettingsModal.svelte';
|
import SettingsModal from '$lib/components/chat/SettingsModal.svelte';
|
||||||
import Sidebar from '$lib/components/layout/Sidebar.svelte';
|
import Sidebar from '$lib/components/layout/Sidebar.svelte';
|
||||||
import ShortcutsModal from '$lib/components/chat/ShortcutsModal.svelte';
|
|
||||||
import ChangelogModal from '$lib/components/ChangelogModal.svelte';
|
import ChangelogModal from '$lib/components/ChangelogModal.svelte';
|
||||||
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
|
||||||
import { getBanners } from '$lib/apis/configs';
|
|
||||||
import { getUserSettings } from '$lib/apis/users';
|
|
||||||
import Help from '$lib/components/layout/Help.svelte';
|
|
||||||
import AccountPending from '$lib/components/layout/Overlay/AccountPending.svelte';
|
import AccountPending from '$lib/components/layout/Overlay/AccountPending.svelte';
|
||||||
import { error } from '@sveltejs/kit';
|
|
||||||
import CallOverlay from '$lib/components/chat/MessageInput/CallOverlay.svelte';
|
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
let ollamaVersion = '';
|
|
||||||
let loaded = false;
|
let loaded = false;
|
||||||
let showShortcutsButtonElement: HTMLButtonElement;
|
|
||||||
let DB = null;
|
let DB = null;
|
||||||
let localDBChats = [];
|
let localDBChats = [];
|
||||||
|
|
||||||
let showShortcuts = false;
|
|
||||||
|
|
||||||
const getModels = async () => {
|
const getModels = async () => {
|
||||||
return _getModels(localStorage.token);
|
return _getModels(localStorage.token);
|
||||||
};
|
};
|
||||||
@@ -99,6 +90,9 @@
|
|||||||
(async () => {
|
(async () => {
|
||||||
documents.set(await getDocs(localStorage.token));
|
documents.set(await getDocs(localStorage.token));
|
||||||
})(),
|
})(),
|
||||||
|
(async () => {
|
||||||
|
tools.set(await getTools(localStorage.token));
|
||||||
|
})(),
|
||||||
(async () => {
|
(async () => {
|
||||||
banners.set(await getBanners(localStorage.token));
|
banners.set(await getBanners(localStorage.token));
|
||||||
})(),
|
})(),
|
||||||
|
|||||||
@@ -14,7 +14,11 @@
|
|||||||
</title>
|
</title>
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
<div class=" flex flex-col w-full min-h-screen max-h-screen">
|
<div
|
||||||
|
class=" flex flex-col w-full min-h-screen max-h-screen {$showSidebar
|
||||||
|
? 'md:max-w-[calc(100%-260px)]'
|
||||||
|
: ''}"
|
||||||
|
>
|
||||||
<div class=" px-4 pt-3 mt-0.5 mb-1">
|
<div class=" px-4 pt-3 mt-0.5 mb-1">
|
||||||
<div class=" flex items-center gap-1">
|
<div class=" flex items-center gap-1">
|
||||||
<div class="{$showSidebar ? 'md:hidden' : ''} mr-1 self-start flex flex-none items-center">
|
<div class="{$showSidebar ? 'md:hidden' : ''} mr-1 self-start flex flex-none items-center">
|
||||||
@@ -61,6 +65,15 @@
|
|||||||
{$i18n.t('Documents')}
|
{$i18n.t('Documents')}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
<a
|
||||||
|
class="min-w-fit rounded-lg p-1.5 px-3 {$page.url.pathname.includes('/workspace/tools')
|
||||||
|
? 'bg-gray-50 dark:bg-gray-850'
|
||||||
|
: ''} transition"
|
||||||
|
href="/workspace/tools"
|
||||||
|
>
|
||||||
|
{$i18n.t('Tools')}
|
||||||
|
</a>
|
||||||
|
|
||||||
<a
|
<a
|
||||||
class="min-w-fit rounded-lg p-1.5 px-3 {$page.url.pathname.includes('/workspace/playground')
|
class="min-w-fit rounded-lg p-1.5 px-3 {$page.url.pathname.includes('/workspace/playground')
|
||||||
? 'bg-gray-50 dark:bg-gray-850'
|
? 'bg-gray-50 dark:bg-gray-850'
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
import { toast } from 'svelte-sonner';
|
import { toast } from 'svelte-sonner';
|
||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import { settings, user, config, models } from '$lib/stores';
|
import { settings, user, config, models, tools } from '$lib/stores';
|
||||||
|
|
||||||
import { onMount, tick, getContext } from 'svelte';
|
import { onMount, tick, getContext } from 'svelte';
|
||||||
import { addNewModel, getModelById, getModelInfos } from '$lib/apis/models';
|
import { addNewModel, getModelById, getModelInfos } from '$lib/apis/models';
|
||||||
@@ -12,6 +12,8 @@
|
|||||||
import Checkbox from '$lib/components/common/Checkbox.svelte';
|
import Checkbox from '$lib/components/common/Checkbox.svelte';
|
||||||
import Tags from '$lib/components/common/Tags.svelte';
|
import Tags from '$lib/components/common/Tags.svelte';
|
||||||
import Knowledge from '$lib/components/workspace/Models/Knowledge.svelte';
|
import Knowledge from '$lib/components/workspace/Models/Knowledge.svelte';
|
||||||
|
import ToolsSelector from '$lib/components/workspace/Models/ToolsSelector.svelte';
|
||||||
|
import { stringify } from 'postcss';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
@@ -54,16 +56,16 @@
|
|||||||
vision: true
|
vision: true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let toolIds = [];
|
||||||
let knowledge = [];
|
let knowledge = [];
|
||||||
|
|
||||||
$: if (name) {
|
$: if (name) {
|
||||||
id = name.replace(/\s+/g, '-').toLowerCase();
|
id = name.replace(/\s+/g, '-').toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
let baseModel = null;
|
const addUsage = (base_model_id) => {
|
||||||
$: {
|
const baseModel = $models.find((m) => m.id === base_model_id);
|
||||||
baseModel = $models.find((m) => m.id === info.base_model_id);
|
|
||||||
console.log(baseModel);
|
|
||||||
if (baseModel) {
|
if (baseModel) {
|
||||||
if (baseModel.owned_by === 'openai') {
|
if (baseModel.owned_by === 'openai') {
|
||||||
capabilities.usage = baseModel.info?.meta?.capabilities?.usage ?? false;
|
capabilities.usage = baseModel.info?.meta?.capabilities?.usage ?? false;
|
||||||
@@ -72,7 +74,7 @@
|
|||||||
}
|
}
|
||||||
capabilities = capabilities;
|
capabilities = capabilities;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
const submitHandler = async () => {
|
const submitHandler = async () => {
|
||||||
loading = true;
|
loading = true;
|
||||||
@@ -89,6 +91,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (toolIds.length > 0) {
|
||||||
|
info.meta.toolIds = toolIds;
|
||||||
|
} else {
|
||||||
|
if (info.meta.toolIds) {
|
||||||
|
delete info.meta.toolIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
info.params.stop = params.stop ? params.stop.split(',').filter((s) => s.trim()) : null;
|
info.params.stop = params.stop ? params.stop.split(',').filter((s) => s.trim()) : null;
|
||||||
Object.keys(info.params).forEach((key) => {
|
Object.keys(info.params).forEach((key) => {
|
||||||
if (info.params[key] === '' || info.params[key] === null) {
|
if (info.params[key] === '' || info.params[key] === null) {
|
||||||
@@ -155,6 +165,7 @@
|
|||||||
params.stop = params?.stop ? (params?.stop ?? []).join(',') : null;
|
params.stop = params?.stop ? (params?.stop ?? []).join(',') : null;
|
||||||
|
|
||||||
capabilities = { ...capabilities, ...(model?.info?.meta?.capabilities ?? {}) };
|
capabilities = { ...capabilities, ...(model?.info?.meta?.capabilities ?? {}) };
|
||||||
|
toolIds = model?.info?.meta?.toolIds ?? [];
|
||||||
|
|
||||||
info = {
|
info = {
|
||||||
...info,
|
...info,
|
||||||
@@ -360,6 +371,9 @@
|
|||||||
class="px-3 py-1.5 text-sm w-full bg-transparent border dark:border-gray-600 outline-none rounded-lg"
|
class="px-3 py-1.5 text-sm w-full bg-transparent border dark:border-gray-600 outline-none rounded-lg"
|
||||||
placeholder="Select a base model (e.g. llama3, gpt-4o)"
|
placeholder="Select a base model (e.g. llama3, gpt-4o)"
|
||||||
bind:value={info.base_model_id}
|
bind:value={info.base_model_id}
|
||||||
|
on:change={(e) => {
|
||||||
|
addUsage(e.target.value);
|
||||||
|
}}
|
||||||
required
|
required
|
||||||
>
|
>
|
||||||
<option value={null} class=" text-gray-900">{$i18n.t('Select a base model')}</option>
|
<option value={null} class=" text-gray-900">{$i18n.t('Select a base model')}</option>
|
||||||
@@ -445,6 +459,7 @@
|
|||||||
{#if showAdvanced}
|
{#if showAdvanced}
|
||||||
<div class="my-2">
|
<div class="my-2">
|
||||||
<AdvancedParams
|
<AdvancedParams
|
||||||
|
admin={true}
|
||||||
bind:params
|
bind:params
|
||||||
on:change={(e) => {
|
on:change={(e) => {
|
||||||
info.params = { ...info.params, ...params };
|
info.params = { ...info.params, ...params };
|
||||||
@@ -551,6 +566,10 @@
|
|||||||
<Knowledge bind:knowledge />
|
<Knowledge bind:knowledge />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="my-2">
|
||||||
|
<ToolsSelector bind:selectedToolIds={toolIds} tools={$tools} />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="my-1">
|
<div class="my-1">
|
||||||
<div class="flex w-full justify-between mb-1">
|
<div class="flex w-full justify-between mb-1">
|
||||||
<div class=" self-center text-sm font-semibold">{$i18n.t('Capabilities')}</div>
|
<div class=" self-center text-sm font-semibold">{$i18n.t('Capabilities')}</div>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
import { onMount, getContext } from 'svelte';
|
import { onMount, getContext } from 'svelte';
|
||||||
import { page } from '$app/stores';
|
import { page } from '$app/stores';
|
||||||
import { settings, user, config, models } from '$lib/stores';
|
import { settings, user, config, models, tools } from '$lib/stores';
|
||||||
import { splitStream } from '$lib/utils';
|
import { splitStream } from '$lib/utils';
|
||||||
|
|
||||||
import { getModelInfos, updateModelById } from '$lib/apis/models';
|
import { getModelInfos, updateModelById } from '$lib/apis/models';
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
import Checkbox from '$lib/components/common/Checkbox.svelte';
|
import Checkbox from '$lib/components/common/Checkbox.svelte';
|
||||||
import Tags from '$lib/components/common/Tags.svelte';
|
import Tags from '$lib/components/common/Tags.svelte';
|
||||||
import Knowledge from '$lib/components/workspace/Models/Knowledge.svelte';
|
import Knowledge from '$lib/components/workspace/Models/Knowledge.svelte';
|
||||||
|
import ToolsSelector from '$lib/components/workspace/Models/ToolsSelector.svelte';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
@@ -60,6 +61,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
let knowledge = [];
|
let knowledge = [];
|
||||||
|
let toolIds = [];
|
||||||
|
|
||||||
const updateHandler = async () => {
|
const updateHandler = async () => {
|
||||||
loading = true;
|
loading = true;
|
||||||
@@ -76,6 +78,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (toolIds.length > 0) {
|
||||||
|
info.meta.toolIds = toolIds;
|
||||||
|
} else {
|
||||||
|
if (info.meta.toolIds) {
|
||||||
|
delete info.meta.toolIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
info.params.stop = params.stop ? params.stop.split(',').filter((s) => s.trim()) : null;
|
info.params.stop = params.stop ? params.stop.split(',').filter((s) => s.trim()) : null;
|
||||||
Object.keys(info.params).forEach((key) => {
|
Object.keys(info.params).forEach((key) => {
|
||||||
if (info.params[key] === '' || info.params[key] === null) {
|
if (info.params[key] === '' || info.params[key] === null) {
|
||||||
@@ -133,6 +143,10 @@
|
|||||||
knowledge = [...model?.info?.meta?.knowledge];
|
knowledge = [...model?.info?.meta?.knowledge];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (model?.info?.meta?.toolIds) {
|
||||||
|
toolIds = [...model?.info?.meta?.toolIds];
|
||||||
|
}
|
||||||
|
|
||||||
if (model?.owned_by === 'openai') {
|
if (model?.owned_by === 'openai') {
|
||||||
capabilities.usage = false;
|
capabilities.usage = false;
|
||||||
}
|
}
|
||||||
@@ -408,6 +422,7 @@
|
|||||||
{#if showAdvanced}
|
{#if showAdvanced}
|
||||||
<div class="my-2">
|
<div class="my-2">
|
||||||
<AdvancedParams
|
<AdvancedParams
|
||||||
|
admin={true}
|
||||||
bind:params
|
bind:params
|
||||||
on:change={(e) => {
|
on:change={(e) => {
|
||||||
info.params = { ...info.params, ...params };
|
info.params = { ...info.params, ...params };
|
||||||
@@ -514,6 +529,10 @@
|
|||||||
<Knowledge bind:knowledge />
|
<Knowledge bind:knowledge />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="my-2">
|
||||||
|
<ToolsSelector bind:selectedToolIds={toolIds} tools={$tools} />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="my-2">
|
<div class="my-2">
|
||||||
<div class="flex w-full justify-between mb-1">
|
<div class="flex w-full justify-between mb-1">
|
||||||
<div class=" self-center text-sm font-semibold">{$i18n.t('Capabilities')}</div>
|
<div class=" self-center text-sm font-semibold">{$i18n.t('Capabilities')}</div>
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<script>
|
||||||
|
import Tools from '$lib/components/workspace/Tools.svelte';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<Tools />
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
<script>
|
||||||
|
import { goto } from '$app/navigation';
|
||||||
|
import { createNewTool, getTools } from '$lib/apis/tools';
|
||||||
|
import ToolkitEditor from '$lib/components/workspace/Tools/ToolkitEditor.svelte';
|
||||||
|
import { tools } from '$lib/stores';
|
||||||
|
import { onMount } from 'svelte';
|
||||||
|
import { toast } from 'svelte-sonner';
|
||||||
|
|
||||||
|
let mounted = false;
|
||||||
|
let clone = false;
|
||||||
|
let tool = null;
|
||||||
|
|
||||||
|
const saveHandler = async (data) => {
|
||||||
|
console.log(data);
|
||||||
|
const res = await createNewTool(localStorage.token, {
|
||||||
|
id: data.id,
|
||||||
|
name: data.name,
|
||||||
|
meta: data.meta,
|
||||||
|
content: data.content
|
||||||
|
}).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
toast.success('Tool created successfully');
|
||||||
|
tools.set(await getTools(localStorage.token));
|
||||||
|
|
||||||
|
await goto('/workspace/tools');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
if (sessionStorage.tool) {
|
||||||
|
tool = JSON.parse(sessionStorage.tool);
|
||||||
|
sessionStorage.removeItem('tool');
|
||||||
|
|
||||||
|
console.log(tool);
|
||||||
|
clone = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
mounted = true;
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if mounted}
|
||||||
|
<ToolkitEditor
|
||||||
|
id={tool?.id ?? ''}
|
||||||
|
name={tool?.name ?? ''}
|
||||||
|
meta={tool?.meta ?? { description: '' }}
|
||||||
|
content={tool?.content ?? ''}
|
||||||
|
{clone}
|
||||||
|
on:save={(e) => {
|
||||||
|
saveHandler(e.detail);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
{/if}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user