Inhaltsverzeichnis
Vorwort
Die von openAI bereitgestellte Schnittstelle
Wortmarkierungsübersetzung realisieren
Heim Technologie-Peripheriegeräte KI Implementierung eines Browserskripts zur Wortmarkierungsübersetzung basierend auf der ChatGPT-API

Implementierung eines Browserskripts zur Wortmarkierungsübersetzung basierend auf der ChatGPT-API

May 01, 2023 pm 03:28 PM
html chatgpt div

Vorwort

Seit kurzem gibt es auf GitHub ein Browser-Skript, das neben der Unterstützung von Übersetzungen auch Polier- und Zusammenfassungsfunktionen unterstützt Zusätzlich zu Browser-Plug-Ins wird auch ein Desktop-Client mit Tauri gepackt und der Rust-Teil verwendet. Heute werden wir ihn relativ einfach implementieren.

Die von openAI bereitgestellte Schnittstelle

Zum Beispiel können wir den folgenden Code kopieren und eine Anfrage in der Browserkonsole initiieren, um die Übersetzung abzuschließen

//示例
const OPENAI_API_KEY = "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";

const prompt = `Translate this into Chinese:
hello world`;
const res = await fetch("https://api.openai.com/v1/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
authorization: `Bearer ${OPENAI_API_KEY}`,
},
body: JSON.stringify({
model: "text-davinci-003",
prompt,
max_tokens: 1000,
temperature: 0,
}),
});
const response = await res.json();

const result = response.choices[0].text;
Nach dem Login kopieren

OPONAI_API_KEY im obigen Code muss durch Ihren eigenen ersetzt werden.

Wortmarkierungsübersetzung realisieren

Wortmarkierungsübersetzung ist eine gängige Webseitenfunktion. Wenn der Benutzer ein Wort oder einen Textabschnitt auswählt, wird automatisch ein kleines Fenster geöffnet, in dem die Übersetzung des Wortes oder Textes angezeigt wird. 🔜

    let keyword;
    const translation = document.createElement("div"); 
    translation.id ="translation"; 
    const icon = document.createElement("img"); 
    icon.style.width ="30px";
    icon.style.height = "30px";
    icon.src ="http://example.com/icon.png";
    translation.appendChild(icon)
    Nach dem Login kopieren
  1. Mausklick, um die Übersetzungslogik auszuführen. Sie können AJAX-Anfragen verwenden, um die Übersetzungsergebnisse aus dem Hintergrund abzurufen und in einem DIV-Element anzuzeigen.
    document.addEventListener("mouseup", (event) => {
    const selection = window.getSelection().toString().trim();
    if (selection) {
    keyword=selection;
    }
    });
    Nach dem Login kopieren
  1. Fügen Sie Stile zum DIV-Element im CSS-Stylesheet hinzu, damit es schwebt und auf der Seite angezeigt wird.
    function translate(){
    if(keyword){
    // 执行翻译逻辑
    }
    }
    icon.addEventListener("mouseover", translate);
    Nach dem Login kopieren
  1. Die oben genannten Schritte können die Grundfunktion der Wortübersetzung erkennen.

React + Antd-Implementierung

Der obige Code implementiert nur die einfachste Version und der Stil ist nicht schön genug, sodass wir hier Webpack + React + Antd verwenden können, um ein modernes Plug-In zu implementieren Ich verwende eine zuvor erstellte Vorlage tampermonkey-starter. 基于 ChatGPT API 的划词翻译浏览器脚本实现

Mit der Popover-Komponente von antd zum Anzeigen und Rekonstruieren des js-Codes mit „react“ können wir die folgenden Effekte erzielen.

Klicken Sie auf die Übersetzungsschaltfläche

Klicken Sie auf die Übersetzungsschaltfläche. Es wird eine Anfrage über die Schnittstelle gestellt und die Übersetzungsergebnisse werden unten angezeigt. Die Übersetzungsergebnisse werden jedoch erst angezeigt, wenn die API vollständig zurückgegeben wird. Können wir Stream verwenden? Auf diese Weise werden die Ergebnisse Wort für Wort angezeigt. 基于 ChatGPT API 的划词翻译浏览器脚本实现

#translation {
position: fixed;
top: 10px;
right: 10px;
max-width: 300px;
padding: 5px;
background-color: #f7f7f7;
border: 1px solid #ccc;
box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.1);
z-index: 9999;
}
Nach dem Login kopieren

Im obigen Code verwenden wir die Fetch-API, um eine HTTP-Anfrage zu senden und einen lesbaren Stream in der Antwort zu erhalten. Wir können die getReader-Methode verwenden, um ein Reader-Objekt abzurufen und es zum Verarbeiten von Stream-Daten zu verwenden, indem wir das Paket eventsource-parser verwenden, um Daten von vom Server gesendeten Ereignissen zu analysieren.

Auf diese Weise wird der Antwortinhalt einzeln entsprechend den vom Server gesendeten Ereignissen (vom Server gesendeten Ereignissen) angezeigt.

基于 ChatGPT API 的划词翻译浏览器脚本实现Text to Speech

Allgemeine Übersetzungs-Plug-Ins verfügen über eine Sprachwiedergabefunktion, wir können die Web Speech API verwenden. Diese API bietet zwei Sprachsyntheseschnittstellen: SpeechSynthesis und SpeechSynthesisUtterance

import { createParser } from "eventsource-parser";

const translate = async (text: string) => {
const resp = await fetch("https://api.openai.com/v1/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
authorization:
`Bearer ${OPENAI_API_KEY}`,
},
body: JSON.stringify({
model: "text-davinci-003",
prompt: `Translate this into Chinese:
${text}`,
max_tokens: 1000,
temperature: 0,
frequency_penalty: 0,
stream: true,
}),
});
if (resp.status !== 200) {
const res = await resp.json();
setLoading(false);
console.error(res);
return;
}
const parser = createParser((event) => {
if (event.type === "event") {
const data = event.data;
if (data === "[DONE]") {
setLoading(false);
}
try {
let json = JSON.parse(event.data);
setResult((prev) => {
return prev + json.choices[0].text;
});
} catch (error) {
console.log(error);
}
}
});
const data = resp.body;
if (!data) {
console.log("Error: No data received from API");
return;
}
const reader = resp.body.getReader();
try {
while (true) {
const { done, value } = await reader.read();
if (done) {
setLoading(false);
break;
}
const str = new TextDecoder().decode(value);
parser.feed(str);
}
} finally {
reader.releaseLock();
}
};
Nach dem Login kopieren

Rufen Sie dann diese Funktion direkt auf und übergeben Sie den zu lesenden Text. Anschließend können Sie die Sprachwiedergabe realisieren

function speak(text) {
if ('speechSynthesis' in window) {
const utterance = new SpeechSynthesisUtterance(text);
utterance.voice = speechSynthesis.getVoices()[0];
utterance.pitch = 1;
utterance.rate = 1;
speechSynthesis.speak(utterance);
}
}
Nach dem Login kopieren
Zusammenfassung

In diesem Artikel werden die Grundlagen vorgestellt Um die Übersetzung von Wortmarkierungen zu implementieren, umfassen die Funktionen die Verwendung der von OpenAI bereitgestellten Schnittstelle für die Übersetzung, das Hinzufügen von Schaltflächen, die Übersetzungen auslösen, und Listening-Ereignisse für Mouse-up-Ereignisse auf der HTML-Seite sowie die Verwendung von AJAX-Anforderungen zum Abrufen von Übersetzungsergebnissen von der Schnittstelle und deren Anzeige in DIV-Elementen , usw. Außerdem wird erläutert, wie Sie mit Webpack + React + Antd ein modernes Plug-In implementieren und wie Sie die Web Speech API verwenden, um die Sprachwiedergabefunktion zu implementieren.

Das obige ist der detaillierte Inhalt vonImplementierung eines Browserskripts zur Wortmarkierungsübersetzung basierend auf der ChatGPT-API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles