一个简单的ai agent or skills
·
前言
系统涉及到多国语言的翻译,之前依赖人工翻译多国语言效率较差。
可以通过ai工具实现多语言翻译和自动写入功能
关键代码
功能采用python脚本实现
.env文本配置OPENAI_API_KEY和OPENAI_BASE_URL,可以从iflow心流平台免费申请试用
https://platform.iflow.cn/?spm=5d4b8e0.2ef5001f.0.0.584473e83RUgnb
文件格式
OPENAI_API_KEY=sk-XXXXX # 国内访问可加这个(可选)
OPENAI_BASE_URL=https://apis.iflow.cn/v1
i18n_agent.py代码
import os
import configparser
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
load_dotenv()
LANG_MAPPING = {
"i18n": "英语",
"i18n_de": "德语",
"i18n_es_ES": "西班牙语(西班牙)",
"i18n_fr_FR": "法语(法国)",
"i18n_zh_CN": "简体中文",
"i18n_zh_HK": "繁体中文(香港)"
}
I18N_FILE_DIR = "D:/work/src/ass-common/src/main/resources"
#这里的api_key可以设置到环境变量,也可以手工写入
llm = ChatOpenAI(
model="deepseek-v3.2",
temperature=0,
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL")
)
def translate_text(original_value: str, target_lang: str) -> str:
"""
将原始文本翻译为指定目标语言,仅返回翻译结果,无多余解释
:param original_value: 原始文本(如"提交")
:param target_lang: 目标语言(如"德语""繁体中文(香港)")
:return: 翻译后的文本
"""
prompt = f"请精准翻译以下文本为{target_lang},仅返回翻译结果,不要额外内容:\n{original_value}"
translated = llm.invoke(prompt)
return translated.content.strip()
def write_to_properties(key: str, value: str, file_name: str) -> str:
"""
将key=value写入对应的.properties文件,遵循Java规范
:param key: 国际化key(如common.submit)
:param value: 翻译后的value
:param file_name: 文件名(如i18n、i18n_de)
:return: 执行结果
"""
file_path = os.path.join(I18N_FILE_DIR, f"{file_name}.properties")
os.makedirs(I18N_FILE_DIR, exist_ok=True)
# 读取现有内容,检查key是否存在
key_exists = False
if os.path.exists(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if line and not line.startswith('#'):
if '=' in line:
k, _ = line.split('=', 1)
if k.strip() == key:
key_exists = True
break
# 如果key不存在,则追加
if not key_exists:
# 检查文件是否存在且不为空,并且最后一个字符不是换行符
needs_newline = False
if os.path.exists(file_path) and os.path.getsize(file_path) > 0:
with open(file_path, 'rb') as f:
f.seek(-1, os.SEEK_END)
last_char = f.read()
if last_char != b'\n':
needs_newline = True
with open(file_path, 'a', encoding='utf-8') as f:
if needs_newline:
f.write('\n')
f.write(f"{key}={value}\n")
return f"✅ 成功写入 {file_path}\n key: {key}\n value: {value}"
else:
return f"⚠️ key已存在,跳过写入 {file_path}\n key: {key}"
def run_i18n_agent(key: str, original_value: str):
"""
执行国际化翻译Agent
:param key: 国际化key(如common.hello)
:param original_value: 原始value(如"你好")
:return: 执行结果
"""
results = []
for file_name, target_lang in LANG_MAPPING.items():
print(f"🔄 正在翻译为 {target_lang}...")
translated_value = translate_text(original_value, target_lang)
write_result = write_to_properties(key, translated_value, file_name)
results.append(write_result)
print(f"✅ {target_lang} 完成")
return "\n".join(results)
if __name__ == "__main__":
test_key = "common.test3"
test_value = "test 测试331"
print("🚀 开始执行国际化翻译Agent...")
result = run_i18n_agent(test_key, test_value)
print("\n📝 最终执行结果:")
print(result)
关键配置
项目资源文件路径
I18N_FILE_DIR = "D:/work/src/ass-common/src/main/resources"
多语言文件名称及描述
LANG_MAPPING = {
"i18n": "英语",
"i18n_de": "德语",
"i18n_es_ES": "西班牙语(西班牙)",
"i18n_fr_FR": "法语(法国)",
"i18n_zh_CN": "简体中文",
"i18n_zh_HK": "繁体中文(香港)"
}
大模型信息
llm = ChatOpenAI(
model="deepseek-v3.2",
temperature=0,
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL")
)
要生成的key和value
一般情况下一次生成一个就可以了,后续可以考虑根据这个扩展
if __name__ == "__main__":
test_key = "common.test3"
test_value = "test 测试331"
print("🚀 开始执行国际化翻译Agent...")
result = run_i18n_agent(test_key, test_value)
print("\n📝 最终执行结果:")
print(result)
总结
这是一个比较初级的多语言翻译的agent,还需要完善的更加智能
更多推荐



所有评论(0)