検索
ホームページテクノロジー周辺機器AIChatGPT APIに基づくワードマーキング翻訳ブラウザスクリプトの実装

はじめに

最近 GitHub に ChatGPT API をベースにしたブラウザスクリプト openai-translator が登場しました 短期間でスターが 12k に達しました 翻訳だけでなく研磨もサポートしていますブラウザのプラグインの他にデスクトップクライアントのパッケージ化にもtauriが使われています tauriはさておきRust部分を使えばブラウザ部分の実装は比較的簡単です 今日は手動で実装してみます。

openAI によって提供されるインターフェイス

たとえば、次のコードをコピーし、ブラウザ コンソールでリクエストを開始して、上記のコードの必要な変換

//示例
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;

OPONAI_API_KEY を完了できます。あなたのものと私のものに置き換えてください。

単語翻訳の実現

単語翻訳は Web ページの一般的な機能です。ユーザーが単語またはテキストを選択すると、小さなウィンドウが自動的にポップアップして単語またはテキストの翻訳を表示します。 。

  1. まず、空の DIV 要素と、HTML ページに翻訳をトリガーするボタンを追加します。
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)
  1. マウスアップ イベント リスナーをページに追加します。ユーザーがテキストを選択するときに、検索キーワードを設定します。
document.addEventListener("mouseup", (event) => {
const selection = window.getSelection().toString().trim();
if (selection) {
keyword=selection;
}
});
  1. マウスをクリックして変換ロジックを実行します。 AJAX リクエストを使用して、バックグラウンドから翻訳結果を取得し、DIV 要素に表示できます。
function translate(){
if(keyword){
// 执行翻译逻辑
}
}
icon.addEventListener("mouseover", translate);
  1. CSS スタイル シートの DIV 要素にスタイルを追加して、ページ上にフローティングして表示できるようにします。
#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;
}

以上の手順で単語翻訳の基本的な機能が実現できるので、その効果を見てみましょう。

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

#react antd の実装

上記のコードは最も単純なバージョンのみを実装しており、スタイルもこれは十分に美しいものではないので、webpack react antd を使用して最新のプラグインを実装できます。ここでは、以前に作成したテンプレート tampermonkey-starter を使用します。

antd の Popover コンポーネントを使用して表示し、react を使用して JS コードを再構築すると、次のような効果が得られます。

基于 ChatGPT API 的划词翻译浏览器脚本实现#単語翻訳

翻訳ボタンをクリックすると、インターフェースを通じて翻訳結果が表示されます。以下のリクエスト。ただし、API が完全に返されるまで翻訳結果は表示されないため、処理が遅くなります。ストリームを使用できますか? OpenAI インターフェイスはストリーム レンダリングをサポートしていますか? このようにして、結果は単語ごとにポップアップ表示されます。

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();
}
};

上記のコードでは、フェッチ API を使用して HTTP リクエストを送信し、応答で読み取り可能なストリームを取得します。 getReader メソッドを使用してリーダー オブジェクトを取得し、それを使用してストリーム データを処理し、eventsource-parser パッケージを使用してサーバーから送信されたイベントからのデータを解析できます。

応答の内容は、Server-sent events (サーバーから送信されたイベント) に応じて 1 つずつ表示されます。

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

#テキスト読み上げ

一般翻訳プラグ-すべての ins には音声再生機能があり、Web Speech API を使用できます。この API は、SpeechSynthesis と SpeechSynthesisUtterance という 2 つの音声合成インターフェイスを提供します。

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);
}
}

次に、この関数を直接呼び出して、音声再生を実現するために読み上げる必要があるテキストを渡します

speak('Hello, world!');

summary

この記事では、OpenAI が提供する翻訳用インターフェイスの使用、翻訳をトリガーするボタンの追加、および HTML ページでのマウスアップ イベント監視イベントの追加、AJAX リクエストを使用した翻訳結果の取得など、単語翻訳の基本機能の実装方法を紹介します。インターフェースであり、DIV 要素に表示されます。また、webpack React antd を使用して最新のプラグインを実装する方法と、Web Speech API を使用して音声再生機能を実装する方法も紹介します。

以上がChatGPT APIに基づくワードマーキング翻訳ブラウザスクリプトの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は51CTO.COMで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Gemma Scope:AI'の思考プロセスを覗くためのGoogle'の顕微鏡Gemma Scope:AI'の思考プロセスを覗くためのGoogle'の顕微鏡Apr 17, 2025 am 11:55 AM

ジェマの範囲で言語モデルの内部の仕組みを探る AI言語モデルの複雑さを理解することは、重要な課題です。 包括的なツールキットであるGemma ScopeのGoogleのリリースは、研究者に掘り下げる強力な方法を提供します

ビジネスインテリジェンスアナリストは誰で、どのようになるか?ビジネスインテリジェンスアナリストは誰で、どのようになるか?Apr 17, 2025 am 11:44 AM

ビジネスの成功のロック解除:ビジネスインテリジェンスアナリストになるためのガイド 生データを組織の成長を促進する実用的な洞察に変換することを想像してください。 これはビジネスインテリジェンス(BI)アナリストの力です - GUにおける重要な役割

SQLに列を追加する方法は? - 分析VidhyaSQLに列を追加する方法は? - 分析VidhyaApr 17, 2025 am 11:43 AM

SQLの変更テーブルステートメント:データベースに列を動的に追加する データ管理では、SQLの適応性が重要です。 その場でデータベース構造を調整する必要がありますか? Alter Tableステートメントはあなたの解決策です。このガイドの詳細は、コルを追加します

ビジネスアナリストとデータアナリストビジネスアナリストとデータアナリストApr 17, 2025 am 11:38 AM

導入 2人の専門家が重要なプロジェクトで協力している賑やかなオフィスを想像してください。 ビジネスアナリストは、会社の目標に焦点を当て、改善の分野を特定し、市場動向との戦略的整合を確保しています。 シム

ExcelのCountとCountaとは何ですか? - 分析VidhyaExcelのCountとCountaとは何ですか? - 分析VidhyaApr 17, 2025 am 11:34 AM

Excelデータカウントと分析:カウントとカウントの機能の詳細な説明 特に大規模なデータセットを使用する場合、Excelでは、正確なデータカウントと分析が重要です。 Excelは、これを達成するためにさまざまな機能を提供し、CountおよびCounta関数は、さまざまな条件下でセルの数をカウントするための重要なツールです。両方の機能はセルをカウントするために使用されますが、設計ターゲットは異なるデータ型をターゲットにしています。 CountおよびCounta機能の特定の詳細を掘り下げ、独自の機能と違いを強調し、データ分析に適用する方法を学びましょう。 キーポイントの概要 カウントとcouを理解します

ChromeはAIと一緒にここにいます:毎日何か新しいことを体験してください!!ChromeはAIと一緒にここにいます:毎日何か新しいことを体験してください!!Apr 17, 2025 am 11:29 AM

Google Chrome'sAI Revolution:パーソナライズされた効率的なブラウジングエクスペリエンス 人工知能(AI)は私たちの日常生活を急速に変換しており、Google ChromeはWebブラウジングアリーナで料金をリードしています。 この記事では、興奮を探ります

ai' s Human Side:Wellbeing and the Quadruple bottuntai' s Human Side:Wellbeing and the Quadruple bottuntApr 17, 2025 am 11:28 AM

インパクトの再考:四重材のボトムライン 長い間、会話はAIの影響の狭い見方に支配されており、主に利益の最終ラインに焦点を当てています。ただし、より全体的なアプローチは、BUの相互接続性を認識しています

5ゲームを変える量子コンピューティングの使用ケースあなたが知っておくべきである5ゲームを変える量子コンピューティングの使用ケースあなたが知っておくべきであるApr 17, 2025 am 11:24 AM

物事はその点に向かって着実に動いています。量子サービスプロバイダーとスタートアップに投資する投資は、業界がその重要性を理解していることを示しています。そして、その価値を示すために、現実世界のユースケースの数が増えています

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン