第1步:IDE编辑器 - 终端
pip install -U langchain-openai langchain-core python-dotenv
第2步:项目.env,写KIMI的key
KIMI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
第3步:新建Python文件
import os
# ========== 0. 环境 ==========
# pip install -qU langchain-openai langchain-core python-dotenv
import dotenv
from langchain_core.documents import Document
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI
dotenv.load_dotenv() # 自动读 KIMI_API_KEY
# ========== 1. 原始文档 ==========
page_content = """机密文件 - 仅供内部使用
日期:2023年7月1日
主题:各种话题的更新和讨论
亲爱的团队,
希望这封邮件能找到你们一切安好。在这份文件中,我想向你们提供一些重要的更新,并讨论需要我们关注的各种话题。请将此处包含的信息视为高度机密。
安全和隐私措施
作为我们不断致力于确保客户数据安全和隐私的一部分,我们已在所有系统中实施了强有力的措施。我们要赞扬IT部门的John Doe(电子邮件:john.doe@example.com)在增强我们网络安全方面的勤奋工作。未来,我们提醒每个人严格遵守我们的数据保护政策和准则。此外,如果您发现任何潜在的安全风险或事件,请立即向我们专门的团队报告,联系邮箱为security@example.com。
人力资源更新和员工福利
最近,我们迎来了几位为各自部门做出重大贡献的新团队成员。我要表扬Jane Smith(社保号:049-45-5928)在客户服务方面的出色表现。Jane一直受到客户的积极反馈。此外,请记住我们的员工福利计划的开放报名期即将到来。如果您有任何问题或需要帮助,请联系我们的人力资源代表Michael Johnson(电话:418-492-3850,电子邮件:michael.johnson@example.com)。
营销倡议和活动
我们的营销团队一直在积极制定新策略,以提高品牌知名度并推动客户参与。我们要感谢Sarah Thompson(电话:415-555-1234)在管理我们的社交媒体平台方面的杰出努力。Sarah在过去一个月内成功将我们的关注者基数增加了20%。此外,请记住7月15日即将举行的产品发布活动。我们鼓励所有团队成员参加并支持我们公司的这一重要里程碑。
研发项目
在追求创新的过程中,我们的研发部门一直在为各种项目不懈努力。我要赞扬David Rodriguez(电子邮件:david.rodriguez@example.com)在项目负责人角色中的杰出工作。David对我们尖端技术的发展做出了重要贡献。此外,我们希望每个人在7月10日定期举行的研发头脑风暴会议上分享他们的想法和建议,以开展潜在的新项目。
请将此文档中的信息视为最机密,并确保不与未经授权的人员分享。如果您对讨论的话题有任何疑问或顾虑,请随时直接联系我。
感谢您的关注,让我们继续共同努力实现我们的目标。
此致,
Jason Fan
联合创始人兼首席执行官
Psychic
jason@psychic.dev"""
documents = [Document(page_content=page_content)]
# ========== 2. 拼接翻译链 ==========
model = ChatOpenAI(base_url="https://api.moonshot.cn/v1",
api_key=os.getenv("KIMI_API_KEY"),
model="moonshot-v1-128k",
temperature=0)
prompt = ChatPromptTemplate.from_messages([
("system", "You are a professional document translator."),
("human", "Translate the following Chinese text into English. Keep the original format:\n\n{text}")
])
chain = {"text": RunnablePassthrough()} | prompt | model | StrOutputParser()
# ========== 3. 翻译 ==========
translated_docs = [Document(page_content=chain.invoke(doc.page_content)) for doc in documents]
# ========== 4. 输出 ==========
print(translated_docs[0].page_content)