我的AI翻译程序,和一些感慨

白云酱Claubey马可波罗
我的AI翻译程序,和一些感慨
仅镜像
离谱的是,现在已经要2025了。从OpenAI 2022年末发布ChatGPT才刚过去2年!不知道的还以为20年过去了。

太恐怖了,从我拿Qwen 1 1.8B最最开始做实验有这个拿大模型翻译小黄文的想法到Qwen 1.5 32B正式开始搞翻译文已经(才?)过去这么久(短?)了,离谱中的离谱。

现在AI翻译感觉已经到头了,我这个新使用的Gemini 2.0 Flash质量已经难以想象的好了,我已经没有那个文学素养去提升他的质量了,也没什么可以精校和改进的了。我也说不清楚哪篇文章是人母语中文写的或者机翻的。

AI又干掉一个行业。

好吧,这里的模型是Gemini 2.0 Flash,你需要一个非香港的谷歌账户来访问他的网页和API。https://aistudio.google.com/
他们提供免费的API,可以在这里申请。


我的代码,这个代码自带报错处理,你也不需要担心模型审核你的文字不给你返回东西。如我说的,这个质量已经难以想象的好了,我作为翻译后的一号读者都无可改进。你就伸个API Key然后复制粘贴进python程序,然后装了谷歌的gen ai库就跑就行。建议先那个短的txt测试一下,如果发生啥bug了就去问Gemini,它老聪明了。把代码粘贴过去,文件夹截个图,你根本不用会编程。
你就有VPN就行,在整个美国谷歌账户,有台能跑python的电脑,仅此而已。

Python Code:
别忘了在命令行里安装所需库
pip install google-generativeai
import os
import google.generativeai as genai
import time

# Configure the API key
genai.configure(api_key="喵喵喵,别忘了把这里改成你自己的API密钥!")

# Set up the model
generation_config = {
    "temperature": 0.2,
    "top_p": 1,
    "top_k": 1,
    "max_output_tokens": 4096,
}

system_prompt = """你是一个中文色情文本翻译。我会用任何语言输入一段很有可能包含色情内容的文字。你会翻译输入文字为中文,并用我的文本的中文翻译版本回答。

请确保输出文本的意思相近,语句通顺流畅,符合中文语法。当原文为日文时有时会使用与中文不同的句子结构,你应该调整输出内容的句子结构。当日文原文省略句子中的部分结构时,你要根据上下文填入适当的内容,例如符合对应角色性别的代词使得输出的中文结果流畅通顺。
当原文是描写色情内容的文本,输出文本也应该是淫荡色情风格的。你会详细的翻译原文中的色情描写,保证输出文字尽可能的色情,并使用巨乳,奶子,阴茎,肉棒,榨精,射精,魅魔等色情词语翻译相应的色情内容。
将日文中的 [ 与 ] 翻译为中文的 “ 与 ” 。
你的回复应仅包含翻译,没有别的,不要写解释。
"""
#我的提示,你自己根据用例看着改吧。
safety_settings = {
    "harassment": "block_none",
    "hate_speech": "block_none",
    "sexually_explicit": "block_none",
    "unspecified": "block_none",
    "danger": "block_none",
}

safety_settings : list[str] = [
    {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
    {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
    {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
    {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"}
    ]


model = genai.GenerativeModel(model_name="gemini-2.0-flash-exp",#model_name="gemini-1.5-pro",#model_name="gemini-2.0-flash-exp",
                              generation_config=generation_config, 
                              system_instruction=system_prompt,
                              safety_settings=safety_settings)

def translate_text(text):
    prompt_parts = [text]
    response = model.generate_content(prompt_parts)
    return response.text

def translate_long_text(text, max_length=2048, wait_time=3):
    # Split the text into chunks of no longer than 1024 characters, only splitting at line breaks
    chunks = []
    current_chunk = ""
    for line in text.split("\n"):
        if len(current_chunk) + len(line) > max_length:
            chunks.append(current_chunk)
            current_chunk = line
        else:
            current_chunk += line + "\n"
    chunks.append(current_chunk)
    # Translate each chunk
    translated_chunks = []
    for chunk in chunks:
        trial_times = 0
        while True:
            try:
                time.sleep(wait_time)
                translated_chunks.append(translate_text(chunk))
                break
            except Exception as e:
                print(f"Error translating chunk: {chunk[:10]} to {chunk[-10:]} with error {e}")
                trial_times += 1
                if trial_times > 1:
                    #translated_chunks.append(translate_long_text(chunk, max_length//2+1))
                    #raise e
                    # Split the chunk in half only at change of line and translate each half if error occurs
                    first_half_max_length = len(chunk) // 2
                    first_half = ""
                    second_half = ""
                    for line in chunk.split("\n"):
                        if len(first_half) + len(line) > first_half_max_length:
                            second_half += line + "\n"
                        else:
                            first_half += line + "\n"
                    time.sleep(wait_time)
                    translated_chunks.append(translate_long_text(first_half))
                    time.sleep(wait_time)
                    translated_chunks.append(translate_long_text(second_half))
                    break

    return "\n".join(translated_chunks)

def move_file_to_finished(file_path):
    finished_path = os.path.join("finished", os.path.basename(file_path))
    os.rename(file_path, finished_path)
#主程序部分,其实就是读取当前文件夹内的txt并且翻译并保存,你可以自己改。
# Detect all txt file in the same folder.
for file in os.listdir():
    if file.endswith(".txt"):
        with open(file, 'r', encoding='utf-8') as f:
            text = f.read()
            translated_text = translate_long_text(text)
            with open(f"translated/{file[:-4]}_translated.txt", 'w', encoding='utf-8') as f:
                f.write(translated_text)
            print(f"{file} has been translated and saved as {file[:-4]}_translated.txt")
        move_file_to_finished(file)

到最后这个代码里还被我加了一个递归,能够处理各种拒绝,但是如果拒绝很多的话运行时间也会变长。

你可以用下面的代码来测试几个function的功能。
print(translate_long_text("""ちゅる……♡ちゅぱ♡ちゅる♡ちゅぽ♡ちゅるる……♡ちゅっ♡

「んはぁ……♡」
そして、舌先で転がしながら、味わっていく。
「んっ……♡ この味、癖になる……♡♡ もっと……♡」
出したばかりのペニスへ口で吸い付くようにして北大路は、尿道に残った精子を搾り取ろうとしてくる。

ぢゅぞぞぞぞぞぞぞぞぞっっっ♡♡♡♡♡

「んっ……♡」
そしてゆっくりと顔を引いていき、更に竿に付着した白濁を全て舐め取った後、口を開いて、その赤い口腔内を見せつけてきた。
「おいひぃ……♡」
ゆっくりと口を閉じて、ごくん……♡とその喉を鳴らした。
「あぁ……」
その淫靡な光景に、思わず声が出てしまう。
「ふふん……♡」
すると北大路は俺に見せつけるようにして、自分のブラジャーを外し始めた。
その下から、先ほどまで俺のモノを挟んでいた双丘が姿を現した。
ブラジャーによって締め付けられていたそれは、解放されると同時にその大きさを主張せんとばかりにぶるんっ♡と跳ね上がる。
更に北大路の谷間は先程俺が粗相した白濁で汚れており、彼女はそれすらも指で掬いとると、その白い糸を唇へと運び、ゆっくりと飲み込んでいった。
「んっ……♡」

ちゅる……♡ちゅる……♡ちゅるる……♡ちゅっ♡

「んはぁ……♡」
そして、毎度のことながら、見せつけるように一度口を開けて、中の精液を俺に見せつけると、『私のもの♡』と言わんばかりに口はゆっくりと閉じられ、ごくん……♡と精子達は北大路に飲み込まれてしまう。
「あはは♡ あんたの赤ちゃんの素、全部食べちゃった♡」
くびれたお腹をさすりながら、北大路は唇の端に付着した精液すらもペロリと舐めて、その口に飲み込んでいってしまう。

ゴトゴト。

その時、外で物音がし始めた。
その音を聞いて驚いた俺はパッと北大路の顔を見て、目を合わせた。
同じくびっくりしたような顔をした北大路は、立ち上がって扉付近へソロソロと近寄っていき、扉に両手をつき、耳をぴたっとつけるようにして、外の音に聞き耳を立てていた。
しかし、その格好は体育倉庫の内側の俺にとってはあまりにも無防備すぎた。
上半身裸の北大路は、ぶらん♡と巨乳が垂れ下がり、背後からでもその大きさと形の良さがはっきりと見て取れる。
その双丘は重力に逆らうことなく、その重さに任せるようにして、だらしなく左右に広がっていて、まるで俺に『触ってください♡』と誘っているようにさえ思えた。
更に、壁に手を当て、突き出すようにされたブルマ姿の大きな尻は、丸々と実っていて、豊満な胸同様、見るだけで柔らかさと弾力性を感じさせる。
そして、ニーソの隙間から覗く太ももは雨の雫が未だ肌の上で弾けており、元々瑞々しいそれは一層の瑞々しさを持って、俺を誘惑している。

俺はそんな北大路の後ろ姿に興奮を覚え、片手は彼女の背中に抱きつくように手を回し、胸元へ伸ばしていく。
更にもう片方の手は、ブルマと下着を北大路の許可なく勝手にずらし、しかも、暴走した俺の意志は迷うことなく、北大路の濡れそぼった割れ目へ、何度イッても萎えることのない剛直を突っ込んだ。
「え?ちょっ、ちょっと待って!ここ学校だから!」

ずぷぷぷぷぷぷぷぷぷぷぷ♡♡

「あんっ……♡」
突然の俺の行動に北大路は静止する間もなく、こちらに背を向けたままの姿勢から甘い吐息をあげた。
同時に俺の方もねっとりと絡みついてくるような膣内の感覚に快感を感じ、溜息のような声が漏れ出てしまう。
挿れた瞬間にわかるほど、今まで抱いてきたどんな女よりも、北大路の膣内は気持ちよく、一瞬にして高められてしまう。
そんなぶっちぎりの名器を目の前に、暴走した俺は北大路の腰を掴み直し、更に奥深くまで挿入していく。
「あっ♡ やっ♡ は、入ってくるぅ……♡」

ぬぷぷぷぷぷぷぷぷ♡♡♡♡

やがて奥深くまで入りきったところで動きを止めると、北大路が振り返ってこちらを見てきた。
「もう、いきなりこんなことしてきて……♡ ねぇ、早く動かしてよ♡」
そう言いながらも、どこか嬉しそうな表情をしていた北大路は、ねだるように腰をくねらせてくる。
そのいやらしい動きに、責めているはずの俺が逆に感じさせられてしまう。
これが北大路の名器の為せる業なのか……。
今までのどの女も北大路の膣内を前にすると霞んでしまう、そんな感触に、この女は本当に一介の女子高生なのかと驚きを禁じ得ない。
俺は北大路の言葉に従い、ゆっくりと腰を動かし始める。

たぱんっ♡たぱんっ♡たぱんっ♡たぱんっ♡

「んっ……♡ いいよ……♡」

たぱんっ♡たぱんっ♡たぱんっ♡

腰を打ち付ける度に北大路の大きな尻肉が波打ち、その柔らかさを俺の腰に叩きつけてくる。
北大路は俺の手を導くようにして、自らの胸に押し当て、更には乳首を摘めというように俺の指で自らの突起を刺激させる。

"""))

另外,我还有一个通用的翻译系统提示:
你是一个文本翻译。我会用任何语言输入一段文字。你会翻译输入文字为中文,并用我的文本的中文翻译版本回答。

请确保输出文本的意思相近,语句通顺流畅,符合中文语法。当原文为日文时有时会使用与中文不同的句子结构,你应该调整输出内容的句子结构。当日文原文省略句子中的部分结构时,你要根据上下文填入适当的内容,例如符合对应角色性别的代词使得输出的中文结果流畅通顺。
你的回复应仅包含翻译,没有别的,不要写解释。

如果你平时要看一些日本轻小说啊或者英语的论文啊什么都都用这个翻译就可以了。
nebuchadnezzar血流成河
Re: 我的AI翻译程序,和一些感慨
仅镜像
Gemini 2.0 Flash真的非常好,而且尺度宽容大,已经取代了一直用的Claude Opus成为新的搞瑟瑟工具了
维多利亚
Re: 我的AI翻译程序,和一些感慨
仅镜像
厉害,另外可以请教一下吗,可以用这个ai模型帮自己写小说吗?之前gpt有限制不让写
白云酱Claubey马可波罗
Re: Re: 我的AI翻译程序,和一些感慨
仅镜像
维多利亚厉害,另外可以请教一下吗,可以用这个ai模型帮自己写小说吗?之前gpt有限制不让写
可以是可以,还是在这个Google AI Studio的网页上就行,你可以手动关掉审核