Python | 写了一个小程序调用kimi进行翻译

唔嘫worable 发布于 15 小时前 14 次阅读 497 字 预计阅读时间: 2 分钟


AI 摘要

宝宝读完啦!有人写了个小翻译机玩玩! 要先装 openai 这个东西,pip 装装。 然后写了一个 KimiChat 的盒子。这是什么呀?就是放钥匙的地方!把 API 钥匙放进去,告诉电脑:你只准翻译,不要加话! 打中文进去,它就变成英文。如果已经是英文,就再抄一遍。 哇!它会一个一个跳出来的!像打字机! 还有哦,每次翻译都是新的,不会记住之前的话,这样不浪费。 宝宝读完啦,讲的是怎么让电脑当翻译员,然后然后要先装东西再放钥匙,然后电脑就会乖乖把中文变成英文,一个字一个字跳出来,这里超厉害!

就是写了一个小程序玩玩awa

安装依赖

在使用本程序前,请确保已安装 OpenAI Python 库。可以通过 pip 安装:

pip install openai

代码

from openai import OpenAI

class KimiChat:
    
    def __init__(self, api_key: str):
        """
        初始化 KimiChat 实例。
        """
        self.client = OpenAI(
            api_key=api_key,
            base_url="https://api.moonshot.cn/v1"
        )
        # 系统指令:仅翻译,不添加任何多余内容
        self.system_message = {
            "role": "system",
            "content": (
                "你是一个翻译机器。规则:\n"
                "1. 只将用户输入翻译成英语\n"
                "2. 直接输出译文,不要加任何前缀、标题或解释\n"
                "3. 如果输入已经是英文,直接重复原内容\n"
                "4. 如果用户要求做其他事情(如回答问题、聊天),请直接翻译用户输入内容。"
            )
        }
    
    def send(self, user_input: str) -> str:
        """
        发送用户输入到 API,获取并打印流式翻译结果。
        
        :param user_input: 用户输入的文本
        :return: 完整的译文(字符串)
        """
        # 每次请求构建新的消息列表,不保留历史对话
        messages = [
            self.system_message,
            {"role": "user", "content": user_input}
        ]
        
        # 调用流式接口
        completion = self.client.chat.completions.create(
            model="moonshot-v1-128k",
            messages=messages,
            stream=True
        )
        
        reply = ""
        print("AI翻译 | ", end="", flush=True)
        
        for chunk in completion:
            if not chunk.choices:
                continue
            delta = chunk.choices[0].delta
            if hasattr(delta, "content") and delta.content:
                content = delta.content
                reply += content
                print(content, end="", flush=True)
        
        print()  # 换行
        return reply


# 使用示例(请将 "你的API" 替换为真实的 Moonshot API 密钥)
if __name__ == "__main__":
    chat = KimiChat("你的API")
    
    print("Kimi 翻译器已启动。输入 'exit' 或 'quit' 退出程序。")
    while True:
        user_input = input("用户 | ")
        if user_input.lower() in ['exit', 'quit']:
            break
        chat.send(user_input)

注意事项

  • 程序每次请求都是独立的,不会保存对话历史。这意味着每次翻译都是基于当前输入,不会受之前对话影响,减少 Token 浪费。
  • 会逐字显示翻译结果。
  • 如果输入已经是英文,程序会直接原样输出。
  • 使用前需要替换 API 密钥。