AI 工具开发实战1开发一个命令行 AI 翻译工具——支持中英互译、多语言、文件翻译一个轻量的命令行翻译工具不依赖任何第三方翻译 API直接用大模型的能力做翻译。本篇从零开始写完你就能在终端里用aitrans命令翻译文本和文件。为什么不用 Google 翻译 APIGoogle 翻译 API 按字符收费量大不便宜。而且把文本发给 Google数据隐私方面有些场景不适合。用大模型 API 替代的好处是选国产模型DeepSeek ¥2/百万 token翻译一万字只要几分钱。项目结构aitrans/ ├── aitrans.py # 主程序Click CLI ├── translators.py # 翻译引擎 ├── config.py # 配置管理 ├── requirements.txt └── .env # API Key安装依赖mkdiraitranscdaitrans python-mvenv venvsourcevenv/bin/activate# requirements.txt click8.1.7 python-dotenv1.0.0 openai1.50.0pipinstall-rrequirements.txt配置文件# config.pyimportosfromdotenvimportload_dotenv load_dotenv()# 支持多个模型后端按需切换MODELS{deepseek:{api_key:os.getenv(DEEPSEEK_API_KEY,),base_url:https://api.deepseek.com/v1,model:deepseek-chat,},doubao:{api_key:os.getenv(DOUBAO_API_KEY,),base_url:https://ark.cn-beijing.volces.com/api/v3,model:doubao-2.1-pro,},}DEFAULT_BACKENDos.getenv(AI_BACKEND,deepseek)DEFAULT_TARGETos.getenv(AI_DEFAULT_LANG,中文)翻译引擎# translators.pyfromopenaiimportOpenAIfromconfigimportMODELS,DEFAULT_BACKENDclassAITranslator:AI 翻译引擎。def__init__(self,backendNone):backendbackendorDEFAULT_BACKEND cfgMODELS[backend]self.clientOpenAI(api_keycfg[api_key],base_urlcfg[base_url],)self.modelcfg[model]deftranslate(self,text,target_lang中文,source_langNone):翻译文本。source_hintf源语言是{source_lang}ifsource_langelsepromptf将以下文本翻译成{target_lang}{source_hint}。只输出译文不要解释\n\n{text}responseself.client.chat.completions.create(modelself.model,messages[{role:system,content:f你是一个专业的翻译助手。输出简洁的译文不添加任何解释。},{role:user,content:prompt},],temperature0.1,# 翻译场景用低温度max_tokensmin(len(text)*2,4096),)returnresponse.choices[0].message.content.strip()defbatch_translate(self,texts,target_lang中文):批量翻译一次调用完成。numbered\n\n---\n\n.join(f[{i1}]{t}fori,tinenumerate(texts))promptf将以下{len(texts)}段文本分别翻译成{target_lang}保持编号\n\n{numbered}responseself.client.chat.completions.create(modelself.model,messages[{role:user,content:prompt}],temperature0.1,)# 解析带编号的返回resultresponse.choices[0].message.contentreturnself._parse_batch(result,len(texts))def_parse_batch(self,response,count):解析批量翻译结果。importre translations[]foriinrange(1,count1):patternrf\[{i}\](.*?)(?\[\d\]|$)matchre.search(pattern,response,re.DOTALL)ifmatch:translations.append(match.group(1).strip())else:translations.append()returntranslationsCLI 主程序#!/usr/bin/env python3# aitrans.pyimportclickfromtranslatorsimportAITranslator LANG_MAP{en:英文,zh:中文,ja:日文,ko:韩文,fr:法文,de:德文,es:西班牙文,ru:俄文,ar:阿拉伯文,}click.group()defcli():aitrans - AI 驱动的命令行翻译工具passcli.command()click.argument(text)click.option(--to,-t,default中文,help目标语言)click.option(--from,-f,from_lang,defaultNone,help源语言可选)click.option(--backend,-b,defaultNone,help模型后端deepseek/doubao)deftrans(text,to,from_lang,backend):翻译一段文本。tAITranslator(backend)resultt.translate(text,target_langto,source_langfrom_lang)click.echo(result)cli.command()click.argument(filepath,typeclick.Path(existsTrue))click.option(--to,-t,default中文,help目标语言)click.option(--output,-o,defaultNone,help输出文件默认覆盖原文件加 .trans 后缀)click.option(--backend,-b,defaultNone)deffile(filepath,to,output,backend):翻译一个文件。withopen(filepath,r,encodingutf-8)asf:contentf.read()tAITranslator(backend)# 分段翻译长文件chunkscontent.split(\n\n)iflen(content)3000andlen(chunks)1:resultst.batch_translate(chunks[:10],target_langto)translated\n\n.join(results)else:translatedt.translate(content,target_langto)outputoutputorf{filepath}.transwithopen(output,w,encodingutf-8)asf:f.write(translated)click.echo(f✅ 已翻译并保存到{output})cli.command()click.option(--backend,-b,defaultNone)defrepl(backend):交互式翻译模式。tAITranslator(backend)click.echo(交互翻译模式输入 :q 退出:en 切换目标为英文:zh 切换为中文)target中文whileTrue:textclick.prompt(,prompt_suffix )iftext:q:breakeliftext.startswith(:):langLANG_MAP.get(text[1:],text[1:])click.echo(f 目标语言切换为{lang})targetlangcontinueresultt.translate(text,target_langtarget)click.echo(f{result})click.echo()if__name____main__:cli()使用方式# .env 配置DEEPSEEK_API_KEYsk-your-keyAI_BACKENDdeepseek# 翻译文本python aitrans.py transHello, this is a test message# → 你好这是一条测试消息。# 指定目标语言python aitrans.py transHello world--to日文# → こんにちは、世界# 翻译文件python aitrans.pyfileREADME.md--to中文# → ✅ 已翻译并保存到 README.md.trans# 交互模式python aitrans.py replThe transformer architecture is widely used 转换器架构被广泛应用于自然语言处理。:en# 切换目标为英文目标语言切换为英文今天天气真好 The weather is reallynicetoday.设为全局命令# 在 ~/.zshrc 或 ~/.bashrc 中加aliasaitranspython /path/to/aitrans/aitrans.py# 之后直接在终端用aitrans transHello world成本分析翻译一本 10 万字的英文小说到中文用 DeepSeek-V4¥2/1M token输入约 15 万 token 输出约 12 万 token费用约 ¥0.54对比 Google Translate API约 ¥20/百万字符同样 10 万字约 ¥2价格接近但翻译质量更好、支持批量操作。总结这个工具的核心功能就三个aitrans trans翻译文本aitrans file翻译文件aitrans repl交互式翻译你可以根据自己的需要扩展加语音输入、加流式输出、加缓存机制、加更多语言支持。下一篇将开发一个本地 RAG 知识库工具——丢给它一个文件夹直接问答。本文是《AI 开发者工具链实战》系列的第 1 篇。如果觉得有用欢迎点赞 收藏 关注后续会持续更新 AI 工具开发实战系列全部附完整源码。