|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 糖逗 于 2026-4-13 20:19 编辑
1. 目标
浏览器插件,鼠标选中网页的外文,可以点击翻译,自动翻译为中文,效果如下:
2. 操作步骤
①初始提示词,及Trea优化后的提示词
初始提示词:
需求:开发1个浏览器插件,实现用户鼠标网页中的外文后,自动翻译成中文
流程:用户鼠标选中文字后,调用百炼的大模型qwen3-max将文字翻译成中文
百炼大模型调用方式:使用参考qwen3-max模型,调用方式参考 `https://bailian.console.aliyun.c ... asia-pacific-china` 中的OpenAI兼容下的Completions API方法
用python调用,官方给的参考代码是:
from openai import OpenAI
import os
client = OpenAI(
# 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url=" `https://dashscope.aliyuncs.com/compatible-mode/v1` ",
)
messages = [{"role": "user", "content": "你是谁"}]
completion = client.chat.completions.create(
model="qwen3-max", # 您可以按需更换为其它深度思考模型
messages=messages,
extra_body={"enable_thinking": True},
stream=True
)
is_answering = False # 是否进入回复阶段
print("\n" + "=" * 20 + "思考过程" + "=" * 20)
for chunk in completion:
delta = chunk.choices[0].delta
if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
if not is_answering:
print(delta.reasoning_content, end="", flush=True)
if hasattr(delta, "content") and delta.content:
if not is_answering:
print("\n" + "=" * 20 + "完整回复" + "=" * 20)
is_answering = True
print(delta.content, end="", flush=True)
UI的样式要求美观简洁,不要遮挡用户正常阅读。并且要求翻译的文本展示在网页原文用户选中的文本下方,以便于用户进行对照。
模型的key是使用的本地环境变量DASHSCOPE_API_KEY,请不要在插件里让用户填写key,直接调用获取本地的DASHSCOPE_API_KEY。要求做好数据安全,保护key。
要求:如果翻译失败,请给详尽的报错,报错中文,以及代码报错,以便定位问题。
插件的icon图片允许用户自定义昂在image文件夹下,图片名称可以自定义,兼容。
我需要你先基于我上面的描述,先生成2个文件:①需求说明文件 ②UI设计文件
先不开发代码
Trea优化后的提示词
# 需求说明文件
## 项目概述
开发一款浏览器插件,实现用户在网页中选中外文文本后自动翻译成中文的功能。该插件将通过调用阿里云百炼大模型qwen3-max进行翻译,并以美观简洁的方式展示翻译结果,不影响用户正常阅读体验。
## 核心功能需求
1. **文本选择与翻译触发**:用户使用鼠标在网页中选中文本后,自动触发翻译功能
2. **翻译服务集成**:通过阿里云百炼qwen3-max模型API实现文本翻译
3. **翻译结果展示**:在用户选中的文本下方显示翻译结果,便于原文与译文对照
4. **错误处理机制**:翻译失败时提供详尽的中文错误提示及代码错误信息
5. **自定义图标支持**:允许用户在image文件夹下自定义插件图标,支持多种图片名称
## 技术实现要求
1. **API调用方式**:使用OpenAI兼容的Completions API方法,参考 `https://bailian.console.aliyun.c ... asia-pacific-china` 中的技术文档
2. **API基础URL**:使用 `https://dashscope.aliyuncs.com/compatible-mode/v1` 作为API调用基础地址
3. **认证方式**:通过本地环境变量DASHSCOPE_API_KEY获取认证密钥,不在插件中提供密钥输入界面
4. **数据安全**:确保API密钥的安全存储与使用,防止密钥泄露
5. **开发语言**:后端翻译服务使用Python实现,参考以下官方示例代码:
```python
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url=" `https://dashscope.aliyuncs.com/compatible-mode/v1` ",
)
messages = [{"role": "user", "content": "你是谁"}]
completion = client.chat.completions.create(
model="qwen3-max",
messages=messages,
extra_body={"enable_thinking": True},
stream=True
)
is_answering = False
print("\n" + "=" * 20 + "思考过程" + "=" * 20)
for chunk in completion:
delta = chunk.choices[0].delta
if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
if not is_answering:
print(delta.reasoning_content, end="", flush=True)
if hasattr(delta, "content") and delta.content:
if not is_answering:
print("\n" + "=" * 20 + "完整回复" + "=" * 20)
is_answering = True
print(delta.content, end="", flush=True)
```
## 界面设计要求
1. **UI风格**:美观简洁,不遮挡用户正常阅读
2. **翻译结果位置**:在网页原文用户选中的文本下方展示翻译结果
3. **图标自定义**:支持用户在image文件夹下自定义插件图标,兼容不同图片名称
## 错误处理要求
1. 翻译失败时提供中文错误提示
2. 同时显示代码错误信息,便于问题定位与调试
# UI设计文件
## 整体设计原则
- 简洁直观:界面元素简洁,不干扰用户正常浏览
- 上下文感知:翻译结果与选中文本紧密关联
- 响应式设计:适应不同网页布局和字体大小
## 主要UI组件设计
### 1. 翻译结果展示框
- **位置**:位于用户选中文本的正下方,与原文保持视觉关联
- **尺寸**:宽度与选中文本区域匹配,高度根据翻译内容自动调整
- **背景**:半透明白色背景,轻微阴影效果,确保与网页内容区分
- **边框**:1px淡灰色边框,8px圆角设计
- **内边距**:12px内边距,确保文本与边框有适当间距
### 2. 翻译内容样式
- **字体**:采用系统默认无衬线字体,与原文保持相似字号
- **颜色**:深灰色(#333333)文本,确保良好可读性
- **段落**:保持与原文相似的段落结构,适当行间距(1.5倍)
### 3. 错误提示样式
- **背景色**:淡红色背景(#FFF5F5)
- **边框**:1px红色边框(#FF4D4F)
- **错误图标**:在提示框左侧显示错误图标
- **文本内容**:包含中文错误描述和代码错误信息,使用等宽字体显示代码错误
### 4. 插件图标
- **位置**:浏览器工具栏
- **尺寸**:符合浏览器插件图标标准尺寸(16x16px, 32x32px, 48x48px, 128x128px)
- **自定义支持**:允许用户在image文件夹下放置自定义图标,支持常见图片格式(png, jpg, svg)
### 5. 交互反馈
- **加载状态**:翻译过程中显示简单的加载动画或"翻译中..."提示
- **成功状态**:翻译完成后平滑显示结果,无额外提示
- **失败状态**:显示错误提示框,提供重试选项
## 布局规范
- 翻译结果框与选中文本之间保持8px间距
- 翻译框最大宽度不超过800px,超过时自动换行
- 在小屏幕设备上,翻译框宽度不超过屏幕宽度的90%
- 避免翻译框覆盖页面其他重要内容,必要时自动调整位置
## 视觉层次
1. 原文文本(用户选中)
2. 翻译结果框(次要视觉焦点)
3. 错误提示(需要用户注意时提升视觉优先级)
## 动画效果
- 翻译结果显示时使用淡入效果(0.3秒过渡)
- 翻译过程中显示简单的脉冲加载动画
- 错误提示出现时使用轻微抖动效果以引起注意
2. 问题微调及优化
①插件加载报错:Could not load icon 'image/icon16.png' specified in 'icons'.无法加载清单。
解决方案:在image文件夹下手动添加图片(上文需求中说明图片是手动添加的,注意图片的格式是.png);然后将上面报错丢给Trea,让它自己解决
②选中文本后翻译报错:如下
翻译失败:翻译请求失败,请检查网络连接
插件选中文本运行后,一直显示这个报错,请自检,或优化代码,右翻译
失败的时候给详细的报错说明(可以是运行代码报错)
- 解决方案:增加报错信息,方便定位,我跟Trea说
翻译失败:翻译请求失败,请检查网络连接
插件选中文本运行后,一直显示这个报错,请自检,或优化代码,在翻译失败的时候给详细的报错说明(可以是运行代码报错)
③选中文本后翻译报错:如下
翻译请求失败,请检查:1.后端服务是否运行2.网络连接是否正常3.本地服务器端口是否为5000
错误代码:TypeError:Failedtofetch
at translateText (chrome-extension://alnaoickhmeapamglcapjjkeoldbadeg/background.js:22:28)
at chrome-extension://alnaoickhmeapamglcapjjkeoldbadeg/background.js:6:5 解决方案:将报错丢给Trea,让它自己解决
④等待过程加载:在用户选中文字到返回结果前,有一段时间没有反应
解决方案:我跟Trea说:帮我优化下,在用户选中文字到返回结果前,有一个加载动作(如果可以告诉完成率就更好了),以便用户知道插件在工作
3. Tips
①Trea不能直接生成图片,所以涉及到图片,要人工自己添加(比如上文提到的icon问题)
②大模型调用,给详尽的调用参考(即上下文)给它,它才能理解
③使用后端的方式将大模型key隐藏,不直接暴露,降低泄露风险
④前期可以让应用给详细的报错,这样方便Trea定位问题
|
|