SemanticKernel之使用结构化Prompt

💡 原文中文,约10000字,阅读约需24分钟。
📝

内容提要

本文介绍了一个具体案例,将公众号上的中文技术文章翻译成选择的语言。使用Playwright读取html内容,利用SemanticKernel的OpenAIChatCompletionService功能进行翻译,然后用Playwright将结果发送到Qiit上。具体实现了C#代码。

🔎

延伸解读

结构化提示词的设计要点

文章中的提示词明确划分了角色、目标、约束、技能和工作流。约束部分特别强调将HTML转为Markdown、保留代码块、处理图片标签,并禁止添加个人观点。这种结构让模型输出更可控,尤其适合技术翻译场景,能减少格式丢失和随意发挥。

从文本提取到HTML转Markdown的优化

早期方案直接提取网页文本进行翻译,会导致表格等复杂格式丢失。优化后让GPT直接将HTML转为Markdown,即使遇到特殊HTML表示,也能输出相对友好的Markdown格式。这一改进提升了翻译结果的结构完整性,尤其对含表格或嵌套标签的文章更有效。

自动化流程中的关键步骤与注意事项

代码使用Playwright读取公众号文章,提取标题、内容和图片链接,再通过SemanticKernel调用OpenAI进行翻译,最后用Playwright登录Qiita并填充草稿。注意发布前需手动确认,且登录凭据从本地文件读取,实际使用时需注意安全与合规。

❓

Q&A

如何使用Playwright读取公众号文章的HTML内容?

用户输入文章的URL,系统使用Playwright读取HTML内容。

SemanticKernel的OpenAIChatCompletionService功能有什么作用?

该功能用于根据结构化提示词翻译文章内容。

翻译结果是如何发布到Qiit上的?

翻译结果通过Playwright发送到Qiit上,用户需手动确认发布。

用户可以选择哪些语言进行翻译?

用户可以选择日语、英语、法语、德语和韩语等多种语言进行翻译。

在翻译过程中如何处理HTML中的图片?

图片标签会被转成Markdown格式,同时保留图片链接。

C#代码在翻译和发布流程中起什么作用?

C#代码实现了获取文章、翻译和发布的整个流程。

🏷️

标签

➡️

继续阅读