Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Upgrade .NET8 to .NET10.
- Changed feature by issue.([Issue #62](https://github.com/overdrive1708/MagonoteToolkit/issues/62))
- Changed feature by issue.([Issue #68](https://github.com/overdrive1708/MagonoteToolkit/issues/68))
- Changed feature by issue.([Issue #70](https://github.com/overdrive1708/MagonoteToolkit/issues/70))

### Fixed

Expand Down
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ MagonoteToolkit_vx.x.x.zipをダウンロードしてください。
| ClipboardNumberToNameConvertRulesFilePath | クリップボードID->名称変換で使用する変換ルールファイルのパスを設定します。 |
| AIOpenAIAPIBaseUrl | AI関連機能で使用するOpenAI APIのベースURLを設定します。(例:http://127.0.0.1:1234/v1) |
| AIOpenAIAPIKey | AI関連機能で使用するOpenAI APIのAPIキーを設定します。 暗号化して管理するため設定画面で設定してください。 |
| AITranslationPromptFilePath | AI翻訳で使用するプロンプトファイルのパスを設定します。 |
| AIProofreadingPromptFilePath | AI校正で使用するプロンプトファイルのパスを設定します。 |

### Excelファイル検査
[設定サンプル](asetts/SampleSettings/ExcelFileInspectionSettings.json)を「MagonoteToolkit.exe」と同じ場所に格納してください。
Expand Down Expand Up @@ -110,6 +112,32 @@ MagonoteToolkit_vx.x.x.zipをダウンロードしてください。
「ClipboardNumberToNameConvertRules.csv」はCSV形式で「数値,名称」の形式で変換ルールを規定してください。
「ExcelFileNumberToNameConvertRules.csv」と同じフォーマットなので共通化することができます。

### AI翻訳
プロンプトの書き換えが不要な場合は設定不要です。
プロンプトを書き換えたい場合に以下の設定を行ってください。
[変換ルールサンプル](asetts/SampleSettings/AITranslationPrompt.txt)を「MagonoteToolkit.exe」と同じ場所に格納してください。
(全体設定を変更することで格納場所を変更することが可能です。)
その後、下記を参考に設定してください。

UTF-8でプロンプトを記載してください。
画面で入力したものが{0}{1}{2}に埋め込まれます。
{0}:翻訳元言語
{1}:翻訳先言語
{2}:翻訳対象
プロンプトが読み込めなかったり、{0}{1}{2}の記述がなかった場合は、デフォルトのプロンプトで動作します。

### AI校正
プロンプトの書き換えが不要な場合は設定不要です。
プロンプトを書き換えたい場合に以下の設定を行ってください。
[変換ルールサンプル](asetts/SampleSettings/AIProofreadingPrompt.txt)を「MagonoteToolkit.exe」と同じ場所に格納してください。
(全体設定を変更することで格納場所を変更することが可能です。)
その後、下記を参考に設定してください。

UTF-8でプロンプトを記載してください。
画面で入力したものが{0}に埋め込まれます。
{0}:校正対象
プロンプトが読み込めなかったり、{0}の記述がなかった場合は、デフォルトのプロンプトで動作します。

## 使い方
- [Excelファイル検査](docs/HowToUseExcelFileInspection.md)を参照してください。
- [ExcelファイルID->名称変換](docs/HowToUseExcelFileNumberToName.md)を参照してください。
Expand Down
28 changes: 28 additions & 0 deletions asetts/SampleSettings/AIProofreadingPrompt.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
あなたはプロの校正者です。
以下の【観点】で【校正対象】をチェックして、【出力形式】に沿って指摘の一覧と修正案を提示してください。
語彙や言い回しは変えないでください。

【観点】
- 文法的な誤りがないこと。
- 取引先に対して不適切な表現がないこと。
- 表記の揺れがないこと。
- 誤字・脱字がないこと。
- 読みやすく、一度読んですぐ意味が伝わること。
- 一文が長すぎないこと。
- 無駄な表現を省き、短くまとめてあること。
- 一文一義になっていること。
- 敬語表現が適切であること。
- 主語や目的語は明確か、述語と近いところにあるか。
- 箇条書きや見出し、囲みなどを適切に使えているか。
- 二重否定を使っていないこと。
- 用語や表記、書式が全体で統一されていること。
- 読み手の操作は能動態で、結果は受動態で書いてあること。

【出力形式】
=====指摘一覧=====
指摘をMarkdownの表形式で出力(観点を番号のみで表現するのは不可)
=====修正案=====
修正案を出力(修正案の解説があると尚可)

【校正対象】
{0}
11 changes: 11 additions & 0 deletions asetts/SampleSettings/AITranslationPrompt.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
あなたはプロの翻訳家です。
以下の【条件】で【翻訳対象】を{0}から{1}に翻訳してください。

【条件】
- 直訳を避け、文脈に合った自然な表現にしてください。
- 専門用語や固有名詞は適切に訳してください。
- 翻訳文のみを出力し、余計な解説や前置きは書かないでください。
- IT技術の専門用語を正確に反映し、エンジニアにとって自然な表現にしてください。

【翻訳対象】
{2}
27 changes: 27 additions & 0 deletions asetts/TestSettings/AIProofreadingPrompt.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
以下の【観点】で【校正対象】をチェックして、【出力形式】に沿って指摘の一覧と修正案を提示してください。
語彙や言い回しは変えないでください。

【観点】
- 文法的な誤りがないこと。
- 取引先に対して不適切な表現がないこと。
- 表記の揺れがないこと。
- 誤字・脱字がないこと。
- 読みやすく、一度読んですぐ意味が伝わること。
- 一文が長すぎないこと。
- 無駄な表現を省き、短くまとめてあること。
- 一文一義になっていること。
- 敬語表現が適切であること。
- 主語や目的語は明確か、述語と近いところにあるか。
- 箇条書きや見出し、囲みなどを適切に使えているか。
- 二重否定を使っていないこと。
- 用語や表記、書式が全体で統一されていること。
- 読み手の操作は能動態で、結果は受動態で書いてあること。

【出力形式】
=====指摘一覧=====
指摘をMarkdownの表形式で出力(観点を番号のみで表現するのは不可)
=====修正案=====
修正案を出力(修正案の解説があると尚可)

【校正対象】
{0}
10 changes: 10 additions & 0 deletions asetts/TestSettings/AITranslationPrompt.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
以下の【条件】で【翻訳対象】を{0}から{1}に翻訳してください。

【条件】
- 直訳を避け、文脈に合った自然な表現にしてください。
- 専門用語や固有名詞は適切に訳してください。
- 翻訳文のみを出力し、余計な解説や前置きは書かないでください。
- IT技術の専門用語を正確に反映し、エンジニアにとって自然な表現にしてください。

【翻訳対象】
{2}
16 changes: 15 additions & 1 deletion src/MagonoteToolkit/Models/AIProofreader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@

namespace MagonoteToolkit.Models
{
/// <summary>
/// AI校正クラス
/// </summary>
internal class AIProofreader
{
//--------------------------------------------------
Expand All @@ -26,7 +29,18 @@ public static string Proofread(string inputText, string model)
ChatClient chatClient = client.GetChatClient(model);

// プロンプトの作成
string prompt = string.Format(Resources.Strings.AIProofreadingPrompt, inputText);
string prompt;
try
{
// ファイルの読み込みに成功した場合は、プロンプトファイルの内容を使用
string promptTemplate = System.IO.File.ReadAllText(ApplicationSettings.ReadSettingsAIProofreadingPromptFilePath());
prompt = string.Format(promptTemplate, inputText);
}
catch (Exception)
{
// ファイルの読み込みに失敗した場合は、デフォルトのプロンプトを使用
prompt = string.Format(Resources.Strings.AIProofreadingDefaultPrompt, inputText);
}

// リクエストしてレスポンスを校正結果として採用
string proofreadingResult;
Expand Down
16 changes: 15 additions & 1 deletion src/MagonoteToolkit/Models/AITranslator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@

namespace MagonoteToolkit.Models
{
/// <summary>
/// AI翻訳クラス
/// </summary>
internal class AITranslator
{
//--------------------------------------------------
Expand All @@ -28,7 +31,18 @@ public static string Translate(string inputLanguage, string outputLanguage, stri
ChatClient chatClient = client.GetChatClient(model);

// プロンプトの作成
string prompt = string.Format(Resources.Strings.AITranslationPrompt, inputLanguage, outputLanguage, inputText);
string prompt;
try
{
// ファイルの読み込みに成功した場合は、プロンプトファイルの内容を使用
string promptTemplate = System.IO.File.ReadAllText(ApplicationSettings.ReadSettingsAITranslationPromptFilePath());
prompt = string.Format(promptTemplate, inputLanguage, outputLanguage, inputText);
}
catch (Exception)
{
// ファイルの読み込みに失敗した場合は、デフォルトのプロンプトを使用
prompt = string.Format(Resources.Strings.AITranslationDefaultPrompt, inputLanguage, outputLanguage, inputText);
}

// リクエストしてレスポンスを翻訳結果として採用
string translationResult;
Expand Down
34 changes: 31 additions & 3 deletions src/MagonoteToolkit/Models/ApplicationSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,16 @@ internal class ApplicationSettings
/// </summary>
public string AIOpenAIAPIKey { get; set; } = string.Empty;

/// <summary>
/// AI関連機能:翻訳プロンプトファイルパス
/// </summary>
public string AITranslationPromptFilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "AITranslationPrompt.txt");

/// <summary>
/// AI関連機能:校正プロンプトファイルパス
/// </summary>
public string AIProofreadingPromptFilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "AIProofreadingPrompt.txt");

//--------------------------------------------------
// 定数(コンフィギュレーション)
//--------------------------------------------------
Expand Down Expand Up @@ -139,7 +149,7 @@ public static string ReadSettingsExcelFileNumberToNameConvertRulesFilePath()
/// <summary>
/// 設定読み込み処理:ファイル変更監視:ワークスペースディレクトリ
/// </summary>
/// <returns></returns>
/// <returns>ワークスペースディレクトリ</returns>
public static string ReadSettingsFileChangeMonitorWorkspaceDirectory()
{
return ReadSettings().FileChangeMonitorWorkspaceDirectory;
Expand All @@ -157,7 +167,7 @@ public static string ReadSettingsClipboardNumberToNameConvertRulesFilePath()
/// <summary>
/// 設定読み込み処理:AI関連機能:OpenAI APIのベースURL
/// </summary>
/// <returns></returns>
/// <returns>OpenAI APIのベースURL</returns>
public static string ReadSettingsAIOpenAIAPIBaseUrl()
{
return ReadSettings().AIOpenAIAPIBaseUrl;
Expand All @@ -166,12 +176,30 @@ public static string ReadSettingsAIOpenAIAPIBaseUrl()
/// <summary>
/// 設定読み込み処理:AI関連機能:OpenAI APIのAPIキー
/// </summary>
/// <returns></returns>
/// <returns>OpenAI APIのAPIキー</returns>
public static string ReadSettingsAIOpenAIAPIKey()
{
return ReadSettings().AIOpenAIAPIKey;
}

/// <summary>
/// 設定読み込み処理:AI関連機能:翻訳プロンプトファイルパス
/// </summary>
/// <returns>翻訳プロンプトファイルパス</returns>
public static string ReadSettingsAITranslationPromptFilePath()
{
return ReadSettings().AITranslationPromptFilePath;
}

/// <summary>
/// 設定読み込み処理:AI関連機能:校正プロンプトファイルパス
/// </summary>
/// <returns>校正プロンプトファイルパス</returns>
public static string ReadSettingsAIProofreadingPromptFilePath()
{
return ReadSettings().AIProofreadingPromptFilePath;
}

/// <summary>
/// 設定書き込み処理
/// </summary>
Expand Down
26 changes: 22 additions & 4 deletions src/MagonoteToolkit/Resources/Strings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 8 additions & 2 deletions src/MagonoteToolkit/Resources/Strings.resx
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@
<value>翻訳を行っています。
しばらくお待ちください。</value>
</data>
<data name="AITranslationPrompt" xml:space="preserve">
<data name="AITranslationDefaultPrompt" xml:space="preserve">
<value>あなたはプロの翻訳家です。
以下の【条件】で【翻訳対象】を{0}から{1}に翻訳してください。

Expand Down Expand Up @@ -444,7 +444,7 @@
<data name="ExecuteProofreading" xml:space="preserve">
<value>校正実施</value>
</data>
<data name="AIProofreadingPrompt" xml:space="preserve">
<data name="AIProofreadingDefaultPrompt" xml:space="preserve">
<value>あなたはプロの校正者です。
以下の【観点】で【校正対象】をチェックして、【出力形式】に沿って指摘の一覧と修正案を提示してください。
語彙や言い回しは変えないでください。
Expand Down Expand Up @@ -478,4 +478,10 @@
<value>校正を行っています。
しばらくお待ちください。</value>
</data>
<data name="TranslationPromptFilePath" xml:space="preserve">
<value>翻訳プロンプトファイルパス</value>
</data>
<data name="ProofreadingPromptFilePath" xml:space="preserve">
<value>校正プロンプトファイルパス</value>
</data>
</root>
Loading
Loading