Merge branch 'next' into main

This commit is contained in:
Muhammed Nazeem 2024-05-30 10:39:36 +05:30 committed by GitHub
commit 4244492798
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 507 additions and 17 deletions

View File

@ -8,7 +8,7 @@
"dev": "cross-env TARGET=chrome wxt",
"dev:firefox": "cross-env TARGET=firefox wxt -b firefox",
"build": "cross-env TARGET=chrome wxt build",
"build:firefox": "cross-env TARGET=chrome cross-env TARGET=firefox wxt build -b firefox",
"build:firefox": "cross-env TARGET=firefox wxt build -b firefox",
"zip": "cross-env TARGET=chrome wxt zip",
"zip:firefox": "cross-env TARGET=firefox wxt zip -b firefox",
"compile": "tsc --noEmit",

View File

@ -0,0 +1,88 @@
{
"pageAssist": "Page Assist",
"selectAModel": "Seleziona un Modello",
"save": "Salva",
"saved": "Salvato",
"cancel": "Annulla",
"retry": "Riprova",
"share": {
"tooltip": {
"share": "Condividi"
},
"modal": {
"title": "Condividi Collegamento alla Chat"
},
"form": {
"defaultValue": {
"name": "Anonimo",
"title": "Chat Senza Titolo"
},
"title": {
"label": "Titolo della Chat",
"placeholder": "Inserisci il Titolo della Chat",
"required": "Titolo della Chat obbligatorio"
},
"name": {
"label": "Il tuo Nome",
"placeholder": "Inserisci il tuo Nome",
"required": "Nome obbligatorio"
},
"btn": {
"save": "Genera Link",
"saving": "Sto generando il Link..."
}
},
"notification": {
"successGenerate": "Link copiato negli appunti",
"failGenerate": "Impossibile generare il link"
}
},
"copyToClipboard": "Copia negli Appunti",
"webSearch": "Ricerca nel Web",
"regenerate": "Rigenera",
"edit": "Modifica",
"saveAndSubmit": "Salva e Invia",
"editMessage": {
"placeholder": "Scrivi un messaggio..."
},
"submit": "Invia",
"noData": "Nessun Dato",
"noHistory": "Nessuna Cronologia Chat",
"chatWithCurrentPage": "Chatta con la Pagina Corrente",
"beta": "Beta",
"tts": "Leggi ad Alta Voce",
"currentChatModelSettings": "Impostazioni del Modello Corrente",
"modelSettings": {
"label": "Impostazioni del Modello",
"description": "Imposta le opzioni del modello globalmente per tutte le chat",
"form": {
"keepAlive": {
"label": "Keep Alive",
"help": "Imposta il tempo per cui il modello deve rimanere caricato in memoria (default: 5m)",
"placeholder": "Inserisci la durata del Keep Alive (e.g. 5m, 10m, 1h)"
},
"temperature": {
"label": "Temperatura",
"placeholder": "Inserisci la Temperatura (e.g. 0.7, 1.0)"
},
"numCtx": {
"label": "Dimensione del Contesto",
"placeholder": "Inserisci la Dimensione del Contesto (default: 2048)"
},
"seed": {
"label": "Seed",
"placeholder": "Inserisci il Valore Seed (e.g. 1234)",
"help": "Riproducibilità dell'output del modello"
},
"topK": {
"label": "Top K",
"placeholder": "Inserisci il Valore Top K (e.g. 40, 100)"
},
"topP": {
"label": "Top P",
"placeholder": "Inserisci il Valore Top P (e.g. 0.9, 0.95)"
}
},
"advanced": "Altre Impostazioni del Modello"
}
}

View File

@ -0,0 +1,42 @@
{
"addBtn": "Aggiungi nuova Knowledge Base",
"columns": {
"title": "Titolo",
"status": "Stato",
"embeddings": "Modello di Embedding",
"createdAt": "Creato da",
"action": "Azioni"
},
"expandedColumns": {
"name": "Nome"
},
"tooltip": {
"delete": "Elimina"
},
"confirm": {
"delete": "Sei sicuro di voler eliminare questa Knowledge Base?"
},
"deleteSuccess": "Knowledge Base eliminata correttamente",
"status": {
"pending": "In attesa",
"finished": "Completato",
"processing": "In corso"
},
"addKnowledge": "Aggiungi Knowledge Base",
"form": {
"title": {
"label": "Titolo Knowledge Base",
"placeholder": "Inserisci il titolo della Knowledge Base",
"required": "Il Titolo è obbligatorio"
},
"uploadFile": {
"label": "Carica File",
"uploadText": "Trascina un file qui or scegli upload",
"uploadHint": "Tipi di file supportati: .pdf, .csv, .txt, .md, .docx",
"required": "File è obbligatorio"
},
"submit": "Invia",
"success": "Knowledge Base aggiunta correttamente"
},
"noEmbeddingModel": "Aggiungi prima un modello dalla pagina di impostazione di Ollama"
}

View File

@ -0,0 +1,12 @@
{
"newChat": "Nuova Chat",
"selectAPrompt": "Scegli un Prompt",
"githubRepository": "GitHub Repository",
"settings": "Impsotazioni",
"sidebarTitle": "Cronologia Chat",
"error": "Errore",
"somethingWentWrong": "Qualcosa è andato storto",
"validationSelectModel": "Scegliere un modello per continuare",
"deleteHistoryConfirmation": "Sei sicuro che vuoi eliminare la cronologia?",
"editHistoryTitle": "Inserisci un nuovo titolo"
}

View File

@ -0,0 +1,29 @@
{
"ollamaState": {
"searching": "Sto cercando Ollama 🦙",
"running": "Ollama è attivo 🦙",
"notRunning": "Impossibile connettersi a Ollama 🦙",
"connectionError": "C'è stato un problema di connessione. Controlla la <anchor>documentazione</anchor> per investigare."
},
"formError": {
"noModel": "Seleziona un modello",
"noEmbeddingModel": "Imposta un modello di embedding da Impostazioni > Ollama"
},
"form": {
"textarea": {
"placeholder": "Scrivi un messaggio..."
},
"webSearch": {
"on": "Attivo",
"off": "Disattivato"
}
},
"tooltip": {
"searchInternet": "Cerca su Internet",
"speechToText": "Speech to Text",
"uploadImage": "Carica immagine",
"stopStreaming": "Ferma lo Streaming",
"knowledge": "Conoscenza"
},
"sendWhenEnter": "Invia subito dopo Enter"
}

View File

@ -0,0 +1,286 @@
{
"generalSettings": {
"title": "Impostazioni Generali",
"settings": {
"heading": "Impostazioni Web UI",
"speechRecognitionLang": {
"label": "Lingua per il riconoscimento vocale",
"placeholder": "Scegli una lingua"
},
"language": {
"label": "Lingua",
"placeholder": "Scegli una lingua"
},
"darkMode": {
"label": "Cambia il Tema",
"options": {
"light": "Chiaro",
"dark": "Scuro"
}
},
"copilotResumeLastChat": {
"label": "Riprendi l'ultima chat quando apri il Pannello Laterale (Copilot)"
},
"hideCurrentChatModelSettings": {
"label": "Nascondi le impostazioni correnti del modello Chat"
}
},
"webSearch": {
"heading": "Gestione ricerca Web",
"searchMode": {
"label": "Effettua ricerca web Internet semplice"
},
"provider": {
"label": "Motori di ricerca",
"placeholder": "Scegli un motore di ricerca"
},
"totalSearchResults": {
"label": "Risultati della ricerca",
"placeholder": "Inserisci il totale delle ricerche"
}
},
"system": {
"heading": "Impostazioni di Sistema",
"deleteChatHistory": {
"label": "Elimina cronologia Chat",
"button": "Elimina",
"confirm": "Sei sicuro che vuoi eliminare la tua cronologia delle chat? Questa azione non può essere annullata."
},
"export": {
"label": "Esporta la cronologia Chat, Base di Conoscenza, e Prompts",
"button": "Esporta Dati",
"success": "Esportato con Successo"
},
"import": {
"label": "Imposta la cronologia Chat, Base di Conoscenza, e Prompts",
"button": "Importa Dati",
"success": "Importato con Successo",
"error": "Errore Importazione"
}
},
"tts": {
"heading": "Impostazioni Text-to-Speech",
"ttsEnabled": {
"label": "Abilita Text-to-Speech"
},
"ttsProvider": {
"label": "Text-to-Speech Provider",
"placeholder": "Seleziona un provider"
},
"ttsVoice": {
"label": "Text-to-Speech Voce",
"placeholder": "Seleziona una voce"
},
"ssmlEnabled": {
"label": "Abilita SSML (Speech Synthesis Markup Language)"
}
}
},
"manageModels": {
"title": "Gestione Modelli",
"addBtn": "Aggiungi un nuovo Modello",
"columns": {
"name": "Nome",
"digest": "Digest",
"modifiedAt": "Modificato il",
"size": "Dimensioni",
"actions": "Azioni"
},
"expandedColumns": {
"parentModel": "Modello Padre",
"format": "Formato",
"family": "Famiglia",
"parameterSize": "Numero di Parametri",
"quantizationLevel": "Livello di Quantizzazione"
},
"tooltip": {
"delete": "Elimina Modello",
"repull": "Ri-Scarica Modello"
},
"confirm": {
"delete": "Sei sicuro di voler eliminare questo modello?",
"repull": "Se sicuro che vuoi ri-scaricare questo modello?"
},
"modal": {
"title": "Aggiungi Nuovo Modello",
"placeholder": "Inserisci il Nome Modello",
"pull": "Scarico del Modello"
},
"notification": {
"pullModel": "Scarico del Modello",
"pullModelDescription": "Scaricando il modello {{modelName}}. Per ulteriori dettagli visualizza l'icona dell'estensione.",
"success": "Completato",
"error": "Errore",
"successDescription": "Scarico del modello completato",
"successDeleteDescription": "Eliminazione del modello completato",
"someError": "Qualcosa è andato storto. Riprova più tardi"
}
},
"managePrompts": {
"title": "Gestisci Prompts",
"addBtn": "Aggiungi nuovo Prompt",
"option1": "Normale",
"option2": "RAG",
"questionPrompt": "Question Prompt",
"columns": {
"title": "Titolo",
"prompt": "Prompt",
"type": "Tipo di Prompt",
"actions": "Azioni"
},
"systemPrompt": "Prompt di Sistema",
"quickPrompt": "Prompt Veloce",
"tooltip": {
"delete": "Elimina Prompt",
"edit": "Modifica Prompt"
},
"confirm": {
"delete": "Sei sicuro di voler eliminare questo prompt? L'azione non può essere annullata."
},
"modal": {
"addTitle": "Aggiungi Nuovo Prompt",
"editTitle": "Modifica Prompt"
},
"form": {
"title": {
"label": "Titolo",
"placeholder": "I Miei Prompt",
"required": "Inserisci il Titolo"
},
"prompt": {
"label": "Prompt",
"placeholder": "Inserisci Prompt",
"required": "Scrivi il prompt",
"help": "Puoi usare {key} come variabile nel tuo prompt."
},
"isSystem": {
"label": "Prompt di Sistema"
},
"btnSave": {
"saving": "Aggiungendo Prompt...",
"save": "Aggiungi Prompt"
},
"btnEdit": {
"saving": "Aggiornando Prompt...",
"save": "Aggiorna Prompt"
}
},
"notification": {
"addSuccess": "Prompt Aggiunto",
"addSuccessDesc": "Il Prompt è stato aggiunto correttamente",
"error": "Errore",
"someError": "Qualcosa è andato storto. Riprova più tardi",
"updatedSuccess": "Prompt Aggiornato",
"updatedSuccessDesc": "Il Prompt è stato aggiornato correttmante",
"deletedSuccess": "Prompt Eliminato",
"deletedSuccessDesc": "Il Prompt è stato eliminato correttamente"
}
},
"manageShare": {
"title": "Gestione Condivisioni",
"heading": "Configura l'URL della Pagina di Condivisione",
"form": {
"url": {
"label": "URL Pagina di Condivisione",
"placeholder": "Inserisci URL Pagina di Condivisione",
"required": "Inserisci l'url della pagina di condivisione!",
"help": "Per ragioni di privacy, tu puoi ospitare in self-host la paginacon il seguente URL. <anchor>Leggi altro</anchor>."
}
},
"webshare": {
"heading": "Condivisioni Web",
"columns": {
"title": "Titolo",
"url": "URL",
"actions": "Azioni"
},
"tooltip": {
"delete": "Elimina Condivisione"
},
"confirm": {
"delete": "Sei sicuro che vuoi eliminare questa condivisione? L'azione non può essere annullata."
},
"label": "Gestione Condivisioni",
"description": "Abilita o Disattiva la funzionalità di condivisione"
},
"notification": {
"pageShareSuccess": " URL di condivisione aggiornato correttamente",
"someError": "Qualcosa è andato storto. Riprova più tardi",
"webShareDeleteSuccess": "Condivisione eliminata correttamente"
}
},
"ollamaSettings": {
"title": "Impostazioni Ollama",
"heading": "Configura Ollama",
"settings": {
"ollamaUrl": {
"label": "Ollama URL",
"placeholder": "Inserici l'URL di Ollama"
},
"ragSettings": {
"label": "Impostazioni RAG",
"model": {
"label": "Modello di Embedding",
"required": "Scegliere il modello",
"help": "E' raccomandato l'uso di modelli come `nomic-embed-text`.",
"placeholder": "Seleziona un modello"
},
"chunkSize": {
"label": "Dimensione del Blocco (Chunk Size)",
"placeholder": "Inserisci la Dimensione del Blocco (Chunk Size)",
"required": "Inserisci la Dimensione del Blocco (chunk size)"
},
"chunkOverlap": {
"label": "Sovrapposizione del Blocco (Chunk Overlap)",
"placeholder": "Inserisci la Sovrapposizione del Blocco (Chunk Overlap)",
"required": "Inserisci la Sovrapposizione del Blocco"
}
},
"prompt": {
"label": "Configura il Prompt RAG",
"option1": "Normale",
"option2": "Web",
"alert": "La configurazione del prompt di sistema qui è deprecato. Usa la sezione Gestione Prompt per aggiungere o modificare i prompts.Questa sezione sarà eliminata nelle prossime release",
"systemPrompt": "Prompt di Sistema",
"systemPromptPlaceholder": "Inserisci il Prompt di Sistema",
"webSearchPrompt": "Prompt per la Ricerca Web",
"webSearchPromptHelp": "Non rimuovere `{search_results}` dal prompt.",
"webSearchPromptError": "Inserisci il prompt per la ricerca web",
"webSearchPromptPlaceholder": "Imserosco il Prompt per la Ricerca Web",
"webSearchFollowUpPrompt": "Prompt di Follow Up sulla Ricerca Web",
"webSearchFollowUpPromptHelp": "Non rimuovere `{chat_history}` e `{question}` dal prompt.",
"webSearchFollowUpPromptError": "Inserisci il Prompt di Follow Up della Ricerca Web!",
"webSearchFollowUpPromptPlaceholder": "I tuoi Prompt di Follow Up delle Ricerche Web"
},
"advanced": {
"label": "Configurazione Avanzata Ollama URL",
"urlRewriteEnabled": {
"label": "Abilita o Disabilita l'URL di Origine Personalizzato"
},
"rewriteUrl": {
"label": "URL di Origine Personalizzato",
"placeholder": "Inserisci URL di Origine Personalizzato"
},
"help": "Se hai problemi di connessione con Ollama su Page Assist, puoi configurare un URL di origine personalizzato. Per saperne di più sulla configurazione, <anchor>clicca qui</anchor>."
}
}
},
"manageSearch": {
"title": "Gestisci Ricerca Web",
"heading": "Configura Ricerca Web"
},
"about": {
"title": "Informazioni",
"heading": "Informazioni",
"chromeVersion": "Versione di Page Assist",
"ollamaVersion": "Versione di Ollama",
"support": "Puoi supportare il progetto Page Assist donando o sponsorizzando attraverso le seguenti piattaforme:",
"koFi": "Supporta su Ko-fi",
"githubSponsor": "Sponsorizza su GitHub",
"githubRepo": "Repository GitHub"
},
"manageKnowledge": {
"title": "Gestisci Conoscenza",
"heading": "Configura Base di Conoscenza"
}
}

View File

@ -0,0 +1,7 @@
{
"tooltip": {
"embed": "L'inserimento della pagina potrebbe richiedere alcuni minuti. Attendere prego...",
"clear": "Cancella la cronologia della chat",
"history": "Cronologia della chat"
}
}

View File

@ -49,7 +49,7 @@ export const EditMessageForm = (props: Props) => {
<div className="flex justify-center space-x-2 mt-2">
<button
aria-label={t("save")}
className="bg-white dark:bg-black px-2.5 py-2 rounded-md text-gray-700 dark:text-gray-300 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-gray-500 hover:bg-gray-100 dark:hover:bg-gray-900">
className="bg-black px-2.5 py-2 rounded-md text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-gray-500 hover:bg-gray-900">
{props.isBot ? t("save") : t("saveAndSubmit")}
</button>
<button

View File

@ -136,14 +136,14 @@ export default function OptionLayout({
}
showSearch
placeholder={t("common:selectAModel")}
className="w-64 "
className="w-72"
options={models?.map((model) => ({
label: (
<span
key={model.model}
className="flex flex-row gap-3 items-center">
className="flex flex-row gap-3 items-center truncate">
<OllamaIcon className="w-5 h-5" />
{model.name}
<span className="truncate">{model.name}</span>
</span>
),
value: model.model

View File

@ -6,6 +6,7 @@ import { ru } from "./lang/ru";
import { ml } from "./lang/ml";
import { zh } from "./lang/zh";
import { ja } from "./lang/ja";
import { it } from "./lang/it";
import LanguageDetector from 'i18next-browser-languagedetector';
i18n
@ -15,6 +16,7 @@ i18n
resources: {
en: en,
fr: fr,
"it": it,
ml: ml,
"zh-CN": zh,
ru: ru,

15
src/i18n/lang/it.ts Normal file
View File

@ -0,0 +1,15 @@
import option from "@/assets/locale/it/option.json";
import playground from "@/assets/locale/it/playground.json";
import common from "@/assets/locale/it/common.json";
import sidepanel from "@/assets/locale/it/sidepanel.json";
import settings from "@/assets/locale/it/settings.json";
import knowledge from "@/assets/locale/it/knowledge.json";
export const it = {
option,
playground,
common,
sidepanel,
settings,
knowledge
}

View File

@ -8,6 +8,10 @@ export const supportLanguage = [
label: "Français",
value: "fr"
},
{
label: "Italiano",
value: "it"
},
{
label: "Russian",
value: "ru"

View File

@ -2,7 +2,8 @@ import { getKnowledgeById, updateKnowledgeStatus } from "@/db/knowledge"
import { PageAssistPDFUrlLoader } from "@/loader/pdf-url"
import {
defaultEmbeddingChunkOverlap,
defaultEmbeddingChunkSize
defaultEmbeddingChunkSize,
getOllamaURL
} from "@/services/ollama"
import { OllamaEmbeddings } from "@langchain/community/embeddings/ollama"
import { RecursiveCharacterTextSplitter } from "langchain/text_splitter"
@ -10,22 +11,14 @@ import { PageAssistVectorStore } from "./PageAssistVectorStore"
import { PageAssisCSVUrlLoader } from "@/loader/csv"
import { PageAssisTXTUrlLoader } from "@/loader/txt"
import { PageAssistDocxLoader } from "@/loader/docx"
import { cleanUrl } from "./clean-url"
const readAsArrayBuffer = (file: File): Promise<ArrayBuffer> => {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.onload = () => {
resolve(reader.result as ArrayBuffer)
}
reader.onerror = reject
reader.readAsArrayBuffer(file)
})
}
export const processKnowledge = async (msg: any, id: string): Promise<void> => {
console.log(`Processing knowledge with id: ${id}`)
try {
const knowledge = await getKnowledgeById(id)
const ollamaUrl = await getOllamaURL()
if (!knowledge) {
console.error(`Knowledge with id ${id} not found`)
@ -35,6 +28,7 @@ export const processKnowledge = async (msg: any, id: string): Promise<void> => {
await updateKnowledgeStatus(id, "processing")
const ollamaEmbedding = new OllamaEmbeddings({
baseUrl: cleanUrl(ollamaUrl),
model: knowledge.embedding_model
})
const chunkSize = await defaultEmbeddingChunkSize()

View File

@ -0,0 +1,11 @@
{
"extName": {
"message": "Page Assist - Un'interfaccia web per modelli AI locali"
},
"extDescription": {
"message": "Usa i tuoi modelli AI in esecuzione locale per assisterti nella navigazione web."
},
"openSidePanelToChat": {
"message": "Apri Copilot per chattare"
}
}

View File

@ -48,7 +48,7 @@ export default defineConfig({
outDir: "build",
manifest: {
version: "1.1.10",
version: "1.1.11",
name:
process.env.TARGET === "firefox"
? "Page Assist - A Web UI for Local AI Models"