# Kimi 开放平台服务协议 Source: https://platform.kimi.com/docs/agreement/modeluse 了解 Kimi 开放平台的账号、API 使用、计费、数据与合规规则及双方权利义务。 **版本生效日期:2026年7月30日** **版本更新日期:2026年7月30日** 欢迎使用"Kimi大模型开放平台"服务! Kimi大模型开放平台是由北京月之暗面科技有限公司及关联公司(简称"我们"或者"月之暗面")提供的以生成式人工智能服务为核心功能的服务平台(简称"本服务"),本服务主要适用于您作为开发者使用我们提供的应用程序编程接口(API)或其他开发者工具,开发面向组织内部或终端用户的产品及服务的使用场景。 本协议是针对开放平台服务所制定的具体协议,与[《Kimi用户服务协议》](/docs/agreement/userservice)(以下简称"用户协议")[《Kimi开放平台隐私政策》](/docs/agreement/userprivacy)等共同构成您使用本服务的协议,除本协议外,您在使用本服务时也应同时了解并遵守上述协议,尤其是遵守用户服务协议中的用户使用规范。本协议内容与上述协议存在冲突的,以本协议为准。 **本服务提供付费服务,请在使用本服务前,务必仔细阅读并充分理解本协议,特别是涉及免除或者减轻我们责任、排除或限制您的权利的与您有重大利害的条款。该等条款将以加粗等形式特别提示您注意,请您重点阅读。** **本服务主要面向的对象是具备完全民事行为能力的成年人、企业及其他合法组织。如果您系未成年人或不具备使用本服务的民事行为能力,请在法定监护人陪同下仔细阅读并充分理解本协议,征得法定监护人的同意后并在其监护下才可使用本服务。** **如果您无法准确理解或不同意本协议的任一内容,请暂时不要使用本服务。当您通过网络页面点击确认、勾选等方式同意本协议或实际充值、使用本服务时,均表示您与我们已就本协议达成一致,同意受本协议约束。** ## 一、账号使用说明 1. **注册及认证**:您在使用本服务前,可以通过手机号码等方式注册账号,并确认同意本协议以及其他相关规则、政策。使用服务前,您需要进行实名认证,否则您将无法通过充值使用本服务。您需要保证您提供的身份信息及账号信息真实、准确、合法、有效,并及时更新。如果您选择拒绝提供身份信息,或提供的信息不准确、不真实、不规范或我们有理由怀疑为错误、不实、不合法的资料的,您可能无法使用本服务或在使用过程中部分功能受到限制。 2. **个人认证**:如果账号作为个人使用,您应当确保认证主体是具备完全民事行为能力的成年人。如果使用者未成年或不具备使用本服务的民事行为能力,应当由具备完全民事行为能力的法定监护人来完成注册和认证,由法定监护人对该账号及账号的使用负责。 3. **企业认证**:如果账号作为企业使用,您应当确保您享有企业赋予您注册并使用本服务的授权,并代表企业完成认证,由企业对该账号及账号的使用负责。 4. **注册要求**:您的注册应当符合用户协议的注册规范。此外,您不应是任何国家、国际组织或者地域实施的贸易限制、制裁或其他法律、规则限制的对象。 5. **使用及转让**:注册成功后,本人或企业对账号享有合法使用权并对账号项下的所有行为承担法律责任。账号管理人应妥善保管账号,不得以任何形式将账号擅自转让、出借、出租或提供给他人使用。如因您未保管好账号,包括账号被盗窃或非法利用后未及时采取补救措施,所导致的损失,您应自行负责。 6. **账户安全**:您应自行确保账号和API密钥的安全,账号下的全部行为都将视为您的行为。如您的账号被泄露或盗用,请您务必尽快联系我们;如您API密钥被泄露或盗用,您可以尽快通过您的账号对API密钥进行删除操作。**因账号或API密钥泄漏,或者无授权主体使用您的账户导致服务受到影响或者遭受损失,责任由您自行承担。当我们有理由怀疑您的账号或API密钥泄漏时,我们有权暂时停止您的服务,以保护您的账户安全。** ## 二、服务使用说明 1. **免费服务**:**我们可能通过赠送充值金额、发放代金券或提供测试服务等方式免费向您提供部分服务,对于该部分服务,我们有权决定是否继续提供或停止**。您在使用免费服务时请务必注意该特点,避免因无法继续使用免费服务而导致您受到影响。免费服务对应的金额不可提现、不可转让,不可开具发票。 2. **付费服务**:当您完成身份认证后,您可以通过预充值来购买并使用我们的付费服务。**在您充值前,请务必阅读并理解本协议、充值协议以及我们在网页上公布的使用手册等全部内容,产品定价、类型等产品内容将以官网网页/订购页面公示为准,相关页面可能会不时进行调整,请您及时关注,如遇到不清楚的地方,请及时和客服联系**。您在充分理解本服务的内容、定价以及使用方法等内容后,再进行后续的充值和使用。 3. 企业用户应对其用户账号项下发生的全部行为(包括但不限于通过线上点击“同意”“勾选”“主动提交”等方式在线签署协议、浏览、上传、输入任何内容)承担责任。通过用户账号实施的各项操作,均视为经用户合法授权作出,并视为用户真实意思表示,对用户具有法律约束力。凡使用用户账号及密码登录平台并进行操作的人员,均视为已获得用户充分授权(以下简称“被授权人”)。被授权人有权代表用户办理包括但不限于以下事项: (1)签署、确认、接受与本服务有关的协议、订单、确认函及其他法律文件; (2)代表用户购买、开通、续费、升级或变更本服务,并代表用户支付相应费用; (3)代表用户申请、确认及接收发票; (4)确认产品或服务的交付、验收、部署、开通、使用情况; (5)办理与用户使用相关的其他事项。 被授权人可以使用其本人名下或者第三方名下的微信、支付宝、银行卡、信用卡或其他合法支付账户代用户履行付款义务。前述付款均视为代用户支付,不因此改变用户作为合同相对方及付款义务人的身份,也不因此使付款人与我们建立独立的产品或服务合同关系。用户确认并同意,对于被授权人或其他付款人为用户支付的全部款项,均用于履行用户依据相关协议、订单所负的付款义务。 除因我们违约导致依法应当退款或存在不可抗力导致本协议无法履行的情形外,用户不得以付款账户并非用户自身账户、付款人为用户员工、关联方、法定代表人、股东、实际控制人或其他第三方,或者付款人与用户之间存在内部纠纷、授权争议、劳动争议、委托关系终止等任何原因,主张付款无效、要求撤销交易、拒绝履行合同义务或者要求我们向付款人或其他第三方返还已支付款项。 如我们有合理理由认为付款存在异常、涉嫌盗刷、冒名支付、欺诈、洗钱、商业贿赂或者其他违法违规风险,或者用户、被授权人或付款人未能按照我们要求提供授权关系、付款依据或其他合理证明材料的,我们有权暂停提供产品或服务、拒绝接受付款、暂停交付、要求更换付款方式或者解除相关交易,由此产生的责任由用户承担。 用户应确保被授权人及付款人的付款行为符合适用法律法规,不涉及洗钱、恐怖融资、商业贿赂、诈骗、逃税或者其他违法犯罪活动。如因用户、被授权人或者付款人的付款行为违法违规,或者因付款授权、资金来源、支付方式等原因引起任何第三方索赔、行政调查、司法程序或其他纠纷,导致我们遭受任何损失、责任、费用(包括但不限于律师费、诉讼费、仲裁费、调查费用及向第三方承担的赔偿责任)的,用户应负责赔偿我们因此遭受的全部损失。 **特别提示**:用户确认,其应自行负责管理和规范其员工、管理人员、代理人及其他经其授权使用账号人员的权限。被授权人的任何付款、购买、续费、升级、开通服务等行为,均视为用户行为,由此产生的全部法律后果均由用户承担;用户不得以内部审批流程未完成、授权文件缺失、员工离职、超越权限等内部管理原因对我们提出抗辩。 4. **价格调整说明**:本服务的价格如果发生调整,会及时通知您,通知您的方式包括通过客服联系、向您预留的联系方式发送信息以及网站价格页面公示等,请您务必注意查阅价格调整通知。**如该价格调整对您产生实质不利的影响,您应当及时停止服务,如您继续使用该服务,视为您同意该价格调整方案,您不应再以该价格调整对您不利向我们主张权利**。 5. **售后服务**:您可以通过网站公示的"联系客服"获取客服的联系方式(如企业微信),通过官方客服获取售后服务。您也可以向 [support@moonshot.cn](mailto:support@moonshot.cn) 发送邮件沟通售后服务事宜。 6. **日常维护**:我们可能会根据服务运营和升级的需要对本服务进行日常维护,日常维护期间可能导致本服务部分或全部不可用。 ## 三、权利与义务 1.**您的权利与义务**: 您有权依据本协议的约定使用本服务并获得满足您购买的服务方案所描述特征的对应服务,我们许可您以调用接口的形式使用本服务。该许可为非排他的、不可转让、不可再许可的普通许可,本服务仅供您内部使用或向最终用户提供服务。您有权获得售后服务支持、进行反馈和投诉,您有权就已支付的金额要求开具发票。 **您不得转让本条款下的任何权利或义务。** 您使用本服务应遵守法律、法规以及本协议,也应遵守我们在本服务相关页面公布的其他相关规则、政策,不得利用本服务进行违法、违规以及其他可能危害国家安全、社会公共利益、侵犯他人合法权益、扰乱平台经营秩序的行为。尤其是,您利用本服务的输出对外提供产品或服务时,应当严格遵守各项法律法规,取得合法经营资质和政府审批,满足监管规定,保障网络安全、数据安全和个人信息安全。特别地,您知悉使用服务向公众提供内容生成式人工智能产品或服务的需要开展安全评估和算法备案工作,且应按照法律、法规及政策相关的要求,对生成内容的安全性、合法性、合规性进行有效管理和控制,建立包括但不限于内容审核、用户管理、数据安全、监测预警和应急处置等机制。**如因用户使用您提供的服务导致数据安全、舆情风险或发生任何产品或服务被滥用、传播、不当利用而产生的风险和责任,应由您自行承担。因此给我们造成损失的,您应向我们承担相应责任且我们有权终止本协议而不承担任何责任。** **您承诺您清楚本服务的特点,尤其是理解您输入的知识文档、数据、文本、文件、资料、链接等内容会在本协议约定范围(包括提供、优化服务等)内被使用,因此,在使用本服务前,请务必谨慎输入可能含有个人信息或者商业秘密的信息,您一旦输入,视为您同意我们在服务范围内利用上述信息。如因您的输入对您自身、我们或第三方产生损害,都应由您承担全部责任。我们基于您的输入所产生的输出,您应当合法合规进行利用,如因您的不当使用导致您自身、我们或者第三方产生损害,也应由您承担全部责任。** 2. **我们的权利与义务:** 我们将依法依规为您提供符合您所购买的服务方案标准的服务,积极履行法定义务,保护网络安全、数据安全和您的个人信息,尽力在现有技术上维护本服务安全、稳定、持续的运行,努力提升和改进技术,保障您的服务使用体验。 **如果您存在违反法律、法规、用户协议及本协议约定或平台规则的行为,我们有权自行判断,并采取相应措施,包括但不限于通知您整改、屏蔽删除您的内容,冻结、关闭、转移您的账号或冻结、划扣金额,拒绝、暂停或停止向您提供服务等。** ## 四、服务规范 1. **您应当遵守用户协议的约定,尤其是遵守用户协议中的使用规范以及我们在网站公示的其他使用规范。** 2. 您使用本服务,尤其是利用本服务的输出对外提供产品或服务时,应当严格遵守各项法律法规,取得合法经营资质和政府审批,满足监管规定,保障网络安全、数据安全和个人信息安全,不得侵害国家、公共利益和第三人合法权益。 3. 您应当对接入的安全性负责,保证接入没有安全漏洞或者对本服务造成威胁的因素。 4. 您应当仔细阅读用户服务协议中的风险提示,我们再次强调,**由于技术限制,本服务不对输出内容进行任何准确性和有效性的保证,请您不要将本服务的输出内容作为唯一的事实来源或绝对真实信息对外提供服务,不能将输出直接作为医疗、法律、金融、教育等领域的专业建议对外提供服务,不要直接使用生成内容作出可能对个人产生法律影响或其他重大影响的决定。此外,您也不应将输出内容视为月之暗面的观点或以月之暗面的观点对外提供输出,我们不对本服务输出中涉及的内容、主体、或对搜索网页链接中的内容的真实性、准确性、可靠性进行任何背书。** 5. 如您选择使用本服务中的联网搜索功能,服务输出的内容可能实质性来自于对第三方在互联网上公布信息的整理。考虑到该等信息并非由我们发布和控制,因此您应自行确认该等信息的准确性、完整性、时效性、可靠性、合法性以及是否侵犯第三人权利,并对该信息的后续使用负责。 ## 五、客户信息和客户数据 1. 我们会按照《Kimi开放平台隐私政策》收集、使用和保护您的个人信息。需要注意的是,**如果您利用本服务开发及提供您的产品或服务,并收集终端用户的个人信息,则您应当严格按照《个人信息保护法》的规定处理个人信息,对您收集和使用的个人信息负全部责任。您利用本服务所开发的终端的用户个人信息保护应当直接适用您的而非本服务的隐私政策。** 2. 企业实名认证时,需要提供企业的主体名称、统一社会信用代码、法人或组织的登记/资格证明、开户名、开户行、开户行账号等企业信息。另外,企业可能需要提供企业联系人的个人信息,包括姓名、手机号码、电子邮箱,用于向您推广、介绍服务,发送业务通知、签订合同、开具发票或与您进行业务沟通等。如您提供的上述信息包含第三方的个人信息,您承诺并保证您向我们提供这些信息前已经获得了相关权利人的授权许可。 3. 请您理解,客户数据不同于用户个人信息,您通过本服务(不包括第三方服务)进行处理的数据,为客户数据。您在合法范围内,对您的数据拥有完全的控制权。作为中立的技术服务提供者,我们只会严格执行您的指示处理客户数据,除非法律法规另有规定、依据本协议及产品规则或基于您的要求为您提供技术协助进行故障排除或解决技术问题,我们不会对客户数据进行任何非授权的使用或披露。 4. 您应确保本服务下您提供的客户数据来源及内容合法,以及您享有处理数据的相应权限。您应保证使用本服务对该等数据的处理符合相关法律法规的要求,不存在任何违法违规、侵权或违反与第三方合同约定的情形,亦不会将数据用于违法违规目的,再次强调,因客户数据内容及您的数据处理行为违反法律法规、部门规章或国家政策而造成的全部结果及责任均由您自行承担。 5. 您理解并同意,您应根据自身需求自行对客户数据进行存储,我们仅依据相关法律法规要求或基于本服务的需要存储客户数据,我们没有义务存储您的数据或信息,亦不对您的数据存储工作或结果承担任何责任。 6. 您知悉并同意,我们或我们委托授权合作伙伴将仅按照如下方式处理您的客户业务数据:(1)按照本协议及您可能不时做出的任何进一步有文件记录的指示且不为其自身目的处理相关数据;(2)为落实现行法律法规要求或按照主管部门指示处理客户业务数据。 ## 六、知识产权 1. 除了依照法律规定应享有权利的相关权利人外,月之暗面对本服务(包括但不限于软件、技术、程序、代码、模型权重、用户界面、网页、文字、图表、版面设计、商标、电子文档)享有法律法规允许范围内的全部权利(包括但不限于著作权、商标权、专利权等知识产权和其他权利)。 2. 在未侵害他人合法知识产权或其他权利并遵守本协议的前提下,您在法律允许的范围内,拥有对您输入和输出内容的知识产权、其他权利和对内容负责的义务。由于技术限制,我们无法保证其他用户的内容与您的内容完全不一致,不排除会出现输出内容雷同的情况,鉴于此,您对输出所享有的权利无法当然及于其他用户的内容。 3. **为了提升您使用本服务的体验,您授予我们一项免费的使用权,以在法律允许的范围内将您输入输出之内容及反馈用于模型服务优化。** 4. 未经我们同意,您不能单独或(和)结合其它方式展示或使用我们或我们的关联公司所拥有的商标、服务标记、商号、字号、域名、网站名称或其他任何显著品牌特征("标识"),也不能将我们或我们的关联公司作为您的案例、合作对象等在您的网站、客户端、应用程序等、新闻媒体、资本市场等公开场合披露。 ## 七、违约责任 1. 您了解并同意,针对您违反本协议及相关法律法规的行为,**我们可以独立判断,包括依据您的各项信息与行为数据或其他互动关系来综合认定,在无需通知的情况下,对您采取包括但不限于警示提醒、限期改正、限制账号功能、暂停使用、冻结和罚没充值金额、关闭账号、禁止重新注册、删除相关内容等处置措施**。我们有权公告处理结果,且有权根据实际情况决定是否恢复使用。 2. **您应当独立承担因您的违约行为导致的全部法律责任或第三方主张的任何索赔和要求。因此给我们造成任何损失的,您应当予以全部赔偿(包括我们维权所支出的诉讼费、仲裁费、律师费、公证费、公告费、鉴定费、差旅费、调查取证费、赔偿金、违约金、和解费用、行政处罚的罚金等)。您同意我们通过账户余额(包括同一主体下的各关联账户)或者取消对应服务来抵扣您给我们带来的损失。** ## 八、免责声明及责任限制 1. **不可抗力等原因**:我们依照法律规定履行基础保障义务,但对于下述原因导致的合同履行障碍、履行瑕疵、履行延后或履行内容变更等情形,我们不承担相应的责任: (1)因自然灾害、罢工、暴乱、战争、政府行为、司法行政命令等不可抗力因素; (2)因电力供应故障、通讯网络故障等公共服务因素或移动通讯终端病毒或黑客攻击、系统不稳定等第三人因素; (3)在已尽善意管理的情况下,因常规或紧急的设备与系统维护、设备与系统故障、网络信息与数据安全等因素。 2. **您理解并同意,本服务是按照现有技术和条件所能达到的现状提供的,我们无法保证本服务毫无瑕疵。我们会尽最大商业努力确保官网和服务的连贯性和安全性,同时请您理解并同意,我们不就任何由第三方产品所引起的问题负责,也不就下述事项进行任何明示或暗示的保证: (1)不保证本服务完全满足您的要求或使用目的; (2)不保证本服务准确可靠、功能可用、及时、无错误、不受干扰、无中断、持续稳定、不存在任何故障; (3)不保证本服务中的全部信息无瑕疵、无偏见、不侵权、完全合理; (4)不保证本服务的代码、程序及其指向的内容的准确性、稳定性和完整性; (5)不保证通过恶意诱导或其他违反本协议的使用方式所输出的内容与本服务运营主体的观点保持一致; (6) 其他我们无法控制或合理预见的情形。** 3. 我们有权定期或不定期地对提供网络服务的网站或相关的设备进行检修或者维护,如因此类情况而造成网络服务在合理时间内的中断或暂停,我们无需为此承担责任。 4. **我们不对由于您使用本服务,或通过本服务向您的客户/用户提供的产品、服务、信息、数据而引起的任何损害承担责任。同时,无论基于何种责任理论,我们均不对您承担任何间接、附带、衍生性或惩罚性的赔偿责任,包括但不限于利润损失、商业信誉受损、资料丢失或其他有形或无形损失,不论是否知道或应当知道上述损失或损害的可能性。** 5. **除非法律法规另有明确规定,否则我们对您承担的全部直接责任,无论基于何种原因或方式,均不会超过您在最近一个自然月的消费总额(如有)。** 6. 我们有权根据本协议处理违法违规内容,但该权利并不构成我们的义务或承诺。我们无法保证能够及时发现或处理所有违法行为。 7. **我们保留将本条款下的权利或义务转让给任何关联公司、子公司或与本服务相关的任何业务继受者的权利。** ## 九、注销 1. 您有权注销您的账号,您可以通过我们的联系邮箱或者与客服沟通申请注销您的账户。**注销账号前请您注意账号充值余额的使用情况,一旦注销,您的账号、数据、API和充值余额都会被清空,即使您再次通过同一主体进行注册,请您审慎选择。** 2. 我们需要一定时间来审核您的注销情况,当我们收到您的注销申请时,我们可能会冻结您账号的使用。如果您在审核期间内想撤回您的注销申请,请及时与我们联系。 3. 注销时,如账户还有余额未使用,我们向您发送余额清空提醒,如您同意注销,我们会继续您的注销流程。如您未明确同意,则您的账户将暂时不会被注销。 4. 注销账号后,我们仍需按照网络安全法等法律法规的要求,保留您相应的注册数据及行为记录。如您在注销前使用本服务过程中存在违法或违约的行为,我们仍有权行使本协议所约定的权利。 5. 如您存在违反法律法规或者严重违约的行为,我们有权单方面注销您的账号。 ## 十、服务终止 1. 您有权随时停止使用本服务,包括注销您的账户。 2. 如果您出现违反法律法规,违反本协议或平台规则,侵害国家、公众、我们或者第三人合法权益的情况,我们会视情况终止服务。 3. **为了整体服务运营的需要,我们有权视具体情况决定服务/功能设置、范围,修改、中断、中止或终止本服务。** 4. 本服务可能因为第三人侵害或不可抗力而终止。 5. **若您主动注销或因违约导致服务终止时,针对您未消耗的金额,我们有权不予退还**。因我们的原因导致服务终止,我们会与您就退款问题进行沟通和协商,并退回与您协商一致的退款金额。 ## 十一、通知与送达 1. 您应向我们提供真实有效的联系方式。联系方式变更的,请您务必及时向我们更新。若因您的联系信息存在虚假、无效、未及时更新等情形致使您无法及时获取业务通知、客户服务、投诉处理、纠纷协调、技术支持等情况的,将由您自行承担相应后果和责任。 2. 我们将通过官网的网页公告、电子邮件、手机短信、即时通讯工具等方式中的一种或多种方式向您发送与官网和服务有关的业务通知、服务提示、验证消息、营销信息等各种信息(包括但不限于更新后的服务规则、服务升级、广告等)。您通过任何形式提供给我们的联系地址、电话、电子邮件或(和)其他联系方式,均被视为有效送达的联系方式。此类通知将对您的权利义务产生重大影响,请您务必及时关注。前述信息在以下情况下视为已送达:(1)以网页公告等形式公布的,一经公布即生效(另有说明除外);(2)以电子形式(包括系统通知、站内信、电子邮件、手机短信、即时通讯工具等)发送的,在发送成功后视为已送达;(3)以纸质载体发出的,以交邮后的第三(3)个自然日视为已送达。 3. 我们可能会向您在使用官网及服务的过程中提供的您的联系方式发送通知,用于用户消息告知、身份验证、安全验证、用户使用体验调研等用途。此外,我们也可能会通过在前述联系方式与您分享您可能感兴趣的服务、功能或活动等商业性信息,如不愿接受这些信息,您可以通过手机短信中提供的退订方式进行退订,也可以直接与我们联系进行退订。 ## 十二、法律适用与争议解决 1. 本协议之订立、生效、解释、修订、补充、终止、执行与争议解决均适用中华人民共和国大陆地区法律。 2. 若本协议的签订、履行或解释发生争议,双方应努力友好协商解决。**如协商不成,任何一方均有权向北京月之暗面科技有限公司住所地有管辖权的法院起诉。** ## 十三、其他 1. **条款的可分性与可执行性**:若本协议中任何一条款被认定为废止、无效或不可执行,该条款应被视为可分割的,不影响本协议其他条款的有效性及可执行性。此外,我们延迟或暂不行使本协议项下的任何权利,并不应被视为对该权利的放弃。 2. **本协议的更新:为持续优化服务体验并适应国家法律法规、政策调整、技术条件及产品功能等变化,我们可能会不定期地更新本协议。更新后的协议内容将构成本协议的组成部分,并通过页面公示、页面提示或信息推送等方式通知您。如您继续使用本服务,即表示您已同意接受更新后的本协议内容。如您对更新后的协议条款存有异议的,您有权停止登录或使用本服务。若您继续登录或使用本服务,即视为您认可并接受修改后的协议条款。** 3. **本协议的小标题**:本协议所设小标题仅为便于阅读而设,不作为协议条款的解释依据。 ## 十四、联系我们 1. **意见反馈途径:** 您在本服务中存在任何使用问题,请随时与我们联系。 您可以通过网站公示企业客服微信或发送邮件至 [support@moonshot.cn](mailto:support@moonshot.cn) 与我们取得联系。 2. **投诉举报途径:** 如果您发现本服务或其生成的内容存在违法违规行为、违法不良信息,或侵犯了您的合法权益(包括但不限于知识产权、个人信息、肖像权、名誉权等),请随时与我们联系进行举报或投诉。当您的合法权益受到侵害,投诉时需要按照法律规定提交您的真实身份信息以及构成侵权的初步证据。您可以通过发送邮件至 [support@moonshot.cn](mailto:support@moonshot.cn) 或联系我们的办公地址与我们取得联系。我们会按照法律的规定,尽快处理您的请求。 联系地址:北京市海淀区知春路76号京东科技大厦1栋13层 # Kimi 开放平台充值协议 Source: https://platform.kimi.com/docs/agreement/payment 了解 Kimi 开放平台充值、余额使用、退款、发票与相关风险提示。 **版本生效日期:2025年4月28日** **版本更新日期:2025年4月28日** 尊敬的用户,为保障您的合法权益,请您在点击支付按钮前,完整、仔细地阅读本充值协议。当您点击支付按钮,即表示您已阅读、理解本协议内容,并同意按照本协议约定的规则进行充值和使用余额行为。**如您不接受本协议的部分或全部内容,请您不要点击支付按钮。** ## 一、接受条款 欢迎您使用大模型开放平台。以下所述条款和条件为平台充值的用户(以下简称"用户"或"您")和北京月之暗面科技有限公司(以下简称"月之暗面"或"我们")就充值以及余额使用所达成的协议。 当您以在线点击"去充值""确认支付"等确认本协议或实际进行充值时,即表示您已理解本协议内容并同意受本协议约束,包括但不限于本协议正文及所有我们已经发布的或将来可能发布的关于服务的各类规则、规范、公告、说明和(或)通知等,以及其他各项网站规则、制度等。所有前述规则为本协议不可分割的组成部分,与协议正文具有同等法律效力。 我们有权根据国家法律法规的变化以及实际业务运营的需要不时修改本协议相关内容,并提前公示于软件系统、网站等以通知用户。修改后的条款应于公示通知指定的日期生效。如果您选择继续充值即表示您同意并接受修改后的协议且受其约束;如果您不同意我们对本协议的修改,请立即放弃充值或者停止使用本服务。 **请注意,本协议存在限制我们的责任以及您权益的条款,具体条款将以加粗并加下划线的形式提示您注意,我们督促您仔细阅读**。如果您对本协议的条款有疑问的,请通过客服渠道([support@moonshot.cn](mailto:support@moonshot.cn)或通过本产品意见反馈渠道或网站上标识的方式)进行询问,我们将向您解释条款内容。**如果您不同意本协议的任意内容,或者无法准确理解我们对条款的解释,请不要同意本协议或使用本协议项下的服务。** ## 二、定义 大模型开放平台个人充值账户:简称"账户",指由我们根据用户的大模型开放平台账户为用户自动配置的账户。用户向账户充值的行为视为用户向我们预付服务费,预付服务费可用于购买大模型开放平台提供的产品或服务。 ## 三、充值条件 当您充值时,您应该具有经实名认证成功后的大模型开放平台账户 ## 四、充值说明 1. **企业充值主体**。如您的账户为企业账户,进行充值的企业应当与注册认证的企业一致,否则可能会导致充值失败。 2. **充值方式**。您可以选择我们认可的第三方支付渠道(如支付宝和微信)支付充值金额。您通过第三方渠道进行支付时,应当遵守与该第三方的各项协议及其服务规则并在使用第三方支付服务过程中妥善保管个人信息,包括但不限于银行账号、密码、验证码等,我们对您因第三方支付服务产生的纠纷不承担任何责任。 3. **充值金额**。充值金额,是指您进行在线充值并实际支付的金额,不包括充值赠送金额。 您可根据其实际需求及软件系统要求的最低金额对其账户充值,您的账户内金额消耗完毕或余额不足时,您将无法使用平台服务。 4. **充值合法要求**。您承诺并保证用于其账户充值的资金来源的合法性,否则我们有权配合司法机关或其他政府主管机关的要求,对您的账户进行相应处理,包括但不限于锁定您的账户等。 5. **充值限制**。为了保障您的账户安全与充值体验的顺畅,我们可能会对充值次数进行一定的限制,是否限制以充值页面公示为准。 6. **充值金额使用**。账户余额的使用不设有效期,不能转移、转赠。您成功充值后可以立即开始使用相应产品或服务。 7. **委托第三方充值**。您若委托第三方对您的账户充值,则您承诺并保证了解和信任第三方,且第三方亦了解和同意接受您的委托,为您的账户充值。如我们被第三方告知充值非经第三方同意,则我们有权立即锁定您的账户(账户锁定期间,我们将暂停用户使用服务,同时锁定您的 API Key)。自您的账户被锁定之日起30日内,您应提供充足证据证实第三方事先同意为您充值,否则您同意并授权我们配合第三方的要求,自您被锁定的账户中将相应款项退还第三方。如届时您的账户余额不足以退还,则短缺部分,您需同意最晚在30日内充值相应金额且委托我们退还,或自您相应的第三方账户自行退还,除非第三方同意您可不退还这部分款项。 8. **充值提醒**。**您一旦进行充值,除因我们的原因导致服务终止使用等情形外,我们将不予退费**。您进行充值时,应仔细确认自己的账号及信息,避免因为您自身操作不当、不了解或未充分了解充值计费方式等因素造成充错账号、错选充值种类等情形而损害自身权益。 ## 五、发票和账单 针对您付费的充值金额,我们可以开具发票。个人认证账户支持开具个人发票和企业发票,企业认证账户仅支持按照认证的企业主体开票。具体开票事宜以发票相关网页公布的信息为准。 您可以在计费相关页面查看您充值金额消费的情况。如果您对费用消耗存在异议,请及时向我们提出异议。 ## 六、退款 1. 您应充分预估实际需求并确定充值金额,除非法律法规另有规定,账户不支持您对未消耗金额进行任意退款。 2. 如果您存在违反法律法规、侵害国家、公共利益或他人合法权益、违反公序良俗以及违约行为,我们有权在停止您服务的同时不再向您退还任何未使用完毕的预充值金额。 ## 七、法律适用与争议解决 1. 本协议之订立、生效、解释、修订、补充、终止、执行与争议解决均适用中华人民共和国大陆地区法律。 2. 若本协议的签订、履行或解释发生争议,双方应努力友好协商解决。**如协商不成,任何一方均有权向北京月之暗面科技有限公司住所地有管辖权的法院起诉**。 # Kimi 开放平台隐私政策 Source: https://platform.kimi.com/docs/agreement/userprivacy 了解 Kimi 开放平台如何收集、使用、存储、共享和保护个人信息,以及用户的数据权利。 **版本生效日期:2025年4月28日** **版本更新日期:2025年4月28日** ## 摘要 欢迎您使用Kimi开放平台! Kimi团队(以下简称"我们")一直以来高度重视个人信息和隐私的保护,严格遵守个人信息保护法、数据安全法等法律法规及有关标准,采取了相应的安全保护措施。我们致力于在为您提供优质产品和服务的同时,全方位守护您的个人信息和隐私安全。为了向您清晰地说明我们如何收集、使用、存储、共享和保护您的个人信息,以及您所享有的相关权利,我们制定了《Kimi开放平台隐私政策》(以下简称"本政策"),以便帮助您作出适当的选择。 在正式开始使用我们的产品和服务之前,请您注意,本政策为规范双方权利义务关系的重要文件,务必仔细阅读所有条款,特别是我们使用加粗等提示的条款。如果您对本政策内容存在任何疑问、意见或建议,可以与我们联系。**如果您不理解或不同意本隐私政策的部分或全部内容,请暂勿使用我们的产品和服务。一旦您开始使用我们的产品和服务,即表示您已充分理解并同意接受本隐私政策的所有条款**。 请您放心,我们会始终遵循**最小必要原则(最小影响、最小范围、最短时间)**处理您的个人信息,不会因为您想要使用我们的产品和服务而过度收集您的个人信息。我们**收集的个人信息种类**请参阅本政策的**第2节**。我们尊重并支持您对个人信息使用的控制权。我们仅会在为实现特定服务目的所必需的情况下收集您的个人信息。**对于非必要的个人信息,您有权选择不提供**。拒绝提供此类信息不会影响您正常使用我们的基本服务。 **本政策将帮助您了解以下内容:** 1.我们是谁、本政策的适用范围 2.我们如何收集和使用您的个人信息 3.我们如何使用Cookie和同类技术 4.我们如何委托处理、共享、转移、公开披露您的个人信息 5.我们如何存储您的个人信息 6.我们如何保护您的个人信息 7.如何行使您的权利 8.未成年人保护 9.政策更新规则 10.联系方式 ## 1. 我们是谁、本政策的适用范围 **1.1** 我们团队来自于北京月之暗面科技有限公司及其关联公司,联系方式详见第10节。 **1.2** 本政策适用于我们的开放平台服务。本政策所适用的个人信息主体类型适用于使用我们产品和服务的自然人用户。如果我们的某一产品或服务设有单独的隐私政策,则该政策将优先适用。对于该单独隐私政策未提及的部分,将适用本政策。为帮助您更好地掌控个人信息和隐私安全,我们特别提示您,**在通过我们的产品和服务访问第三方产品和服务时,您个人信息和隐私的处理将由该第三方依据其相关政策负责管理**。我们无法对第三方的处理活动负责,在这种情况下,建议您仔细阅读第三方的相关政策,以便了解您的权利和义务。 ## 2. 我们如何收集和使用您的个人信息 **2.1 收集和使用的原则** 我们在处理您个人信息时会严格遵循合法、正当、必要、诚信的原则,做到公开透明、准确地处理,持续向业内最佳实践努力。 **2.2 我们收集信息的方式** 我们会按照以下两种方式收集您的个人信息: * **您主动提供:** * 当您注册我们的账号或使用产品和服务时,您可能需要提供一些基本信息,如电话号码、电子邮件等。 * 在使用过程中,您可能会主动上传文字、图片、音频、视频或其他文件等内容。 * 当您向我们反馈问题、提出建议、投诉或请求客服支持时,您可能会提供相关的个人信息。 * **我们主动收集:** * 我们会通过技术手段自动收集您的设备信息,如设备型号、操作系统版本、唯一设备标识符等。 * 服务器会自动记录您的使用情况,包括访问时间、IP地址等。 * 我们可能会使用Cookie和类似技术来了解您的使用习惯,以便提供更个性化的服务。 **2.3 我们收集信息的种类和目的** 我们**可能会收集的信息种类**如下: * **账号信息**:您在注册和使用我们的产品和服务时提供的个人信息,如手机号码、头像、电子邮箱地址等。这些信息用于创建和管理您的账号,确保您能够顺利访问和使用我们的服务。 * **对话信息**:您在使用我们的产品和服务过程中输入和产生的文本、语音、图片、视频等内容。这些信息有助于我们优化模型,并了解您的需求和偏好,以便为您提供更精准的服务和支持。 * **设备信息和日志信息**:您在使用我们产品和服务时所用设备的相关数据,如设备型号、操作系统版本、唯一设备标识符、MAC地址、用户ID、对话ID、对话内容,以及IP地址、浏览器类型、电信运营商、使用语言、访问日期和时间等。收集这些信息是为了软件与服务的合法及安全运行,保障运营的质量及效率。 * **身份信息**:您进行投诉,或者其他需要验证个人身份的场景时,我们可能会向您收集您的身份信息。 **2.4 我们使用信息的方式和目的** 在使用您的个人信息时,我们的目标是在遵守所有相关法律法规的前提下,尽力为您提供最佳的服务体验。 **向您提供基本的服务功能**: * **账号注册和登录**:为注册和登录我们的产品和服务,您需要提供您的手机号码并通过验证码验证,以完成账号注册和登录。您提供的手机号码将作为我们与您取得联系的方式之一,包括但不限于接收通知(如政策更新、服务变更等)。 * **交互**:我们的产品和服务的正常使用依赖于您输入的内容,因此我们需要收集并使用您输入的文字、语音、图片或其他格式的文件,从而为您提供服务。 * **保证产品和服务的正常运行**:为保证产品和服务的正常开展,我们可能会收集并使用**非通信内容数据(包括日志数据、设备信息、Cookie和同类技术信息)**。我们可能会收集用于维护产品或服务安全稳定运行的必要信息,包括您的设备硬件型号、操作系统类型及操作系统版本号、网络设备硬件地址(MAC)、IP地址、软件版本号、浏览器类型及浏览器版本、分辨率、时区和语言等设备信息、网络接入方式及类型信息、网页浏览记录。请您了解,这些信息是我们提供服务和保障服务正常运行和网络安全所必须收集的基本信息。 **服务体验的优化与改进:** * 您使用客户支持服务时,我们可能收集您使用官网及相关服务而产生的**用户账号信息、咨询记录、报障记录和针对用户故障的排障过程(如通信或通话记录)**,我们将通过记录、分析这些信息以便更及时响应您的帮助请求,以及用于改进服务。 * 在您向我们进行反馈和投诉时,您可能需要按照法律规定主动提供您的**身份信息和联系方式**,以便我们有效处理投诉事宜。 **2.5 特别提示** **请您谨慎上传您的个人信息,尤其是敏感个人信息。** **如果信息无法单独或结合其他信息识别到您的个人身份,则其不属于法律意义上您的个人信息**。当您的信息可以单独或结合其他信息识别到您的个人身份时,或我们将无法与任何其他特定个人信息建立联系的数据与您的个人信息结合使用时,我们会严格按照本政策处理这些信息。 您上传任何内容(包括但不限于正常输入、反馈或联系我们时提供的文字、语音、图片或其他格式的文件)时,请特别留意这些内容是否**包含或涉及任何第三方的个人信息或者涉密信息等不适当的信息**。这包括但不限于姓名、联系方式或其他个人识别信息。在提交此类信息前,**您有责任确保已经获得了所有必要的合法授权,以避免无意中泄露他人隐私或者侵犯其合法权益**。 希望您理解,根据个人信息保护法的规定,下列情形**无需事先获得您的同意**: 1. **为订立、履行合同所必需**:当您与我们订立或履行合同时,可能需要处理您的个人信息,例如为了完成交易或提供服务。 2. **为履行法定职责或者法定义务所必需**:当我们需要遵守法律法规,履行法定职责或义务时,可能需要处理您的个人信息,例如与国家安全、刑事侦查、审判和执行等有关的或响应政府部门指示所必需。 3. **为应对突发公共卫生事件,或者紧急情况下为保护自然人的生命健康和财产安全所必需**:在紧急情况下,为了保护您或他人的生命、健康和财产安全,可能需要处理您的个人信息。 4. **为公共利益实施新闻报道、舆论监督等行为,在合理的范围内处理个人信息**:为了公共利益,如新闻报道和舆论监督,可能在合理范围内处理您的个人信息。 5. **在合理的范围内处理个人自行公开或者其他已经合法公开的个人信息**:如果您已经公开了某些个人信息,或者这些信息已经合法公开,我们可能在合理范围内处理这些信息。 6. **法律、行政法规规定的其他情形**:其他法律法规规定的情形。 ## 3. 我们如何使用Cookie和同类技术 **3.1** 我们使用Cookie和同类技术来提升您的用户体验,优化我们的服务性能,并为您提供更加个性化的服务。具体而言,我们使用Cookie的目的包括但不限于: * 记住您的偏好设置:例如语言设置、界面主题,以便您下次访问时无需重新设置。 * 分析网站流量和用户行为:通过收集匿名数据帮助我们了解用户的行为模式,以改进网站功能和服务质量。 * 增强安全性:用于识别和防止潜在的安全威胁,保护您的账号和个人信息免受未经授权的访问。 **3.2 我们不会将 Cookie 和同类技术用于本政策所述目的之外的任何用途。** **3.3** 我们尊重您的权利,您可以根据自己的需要管理或禁用Cookie。大多数浏览器允许您直接在设置中管理Cookie。您可以选择接受所有Cookie、仅接受某些类型的Cookie或完全拒绝所有Cookie。如果您希望删除已存储的Cookie,也可以通过浏览器的设置选项完成这一操作。请注意,禁用某些Cookie可能会严重影响您的用户体验。 ## 4. 我们如何委托处理、共享、转移、公开披露您的个人信息 **4.1 委托处理** 我们可能会委托第三方服务提供商(如我们的技术服务方等授权合作伙伴)处理您的个人信息,以便他们为我们提供技术支持、数据分析等服务。我们仅会在采用行业通用的安全技术前提下,基于合法、正当、必要、特定、明确的目的委托其处理您的信息。受托方只能接触到为履行其职责所必需的个人信息,并且必须遵守我们的指示和本政策的规定,不得超出约定的目的范围使用这些信息。 **4.2 共享** 除了获得您明确同意,或者依照法律规定无需获得您同意的情况外,**我们可能会与合作方(包括我们的关联方与其他第三方)共享您的个人信息,以实现软件工具开发包(SDK)等功能的正常使用。** **我们使用的SDK如下:** **网易易盾验证 SDK:** * **使用目的**:平台登录人机识别 * **涉及个人信息**:IP 地址、设备信息 * **收集方式**:SDK 自行采集 * **使用场景**:在用户登录需要进行人机识别验证时使用 * **第三方主体**:网易(杭州)网络有限公司 * 官**网链接/隐私政策**:[https://dun.163.com/clause/privacy](https://dun.163.com/clause/privacy) **4.3 转移** 除了基于您的请求,或者依照法律规定无需获得您同意的转移外,**我们有可能进行合并、收购、资产转移或其他类似的交易,如相关交易涉及到您的个人信息转移,我们会要求新持有您个人信息的公司、组织和个人继续受本政策约束,否则我们将要求该公司、组织和个人重新征得您的授权同意。** **4.4 公开披露** 除了获得您明确同意,或者依照法律规定无需获得您同意的情况外,我们不会公开披露您的个人信息。 ## 5. 我们如何存储您的个人信息 **5.1 存储地点** 我们将您的个人信息存储于中华人民共和国境内。除非取得您的单独同意,并且符合国家相关法律法规的规定,我们不会向境外提供您的任何个人信息。 **5.2 存储期限** **除国家法律法规另有规定外**,我们仅在**为实现服务目的所必需的时间内**保留您的个人信息。当我们的产品和服务发生停止运营的情形时,我们将采取短信、公告等形式通知您,并在合理的期限内匿名化处理或彻底删除您的个人信息,法律法规另有规定的除外。 ## 6. 我们如何保护您的个人信息 **6.1** 我们深知个人信息的安全保密对于您至关重要。**我们会尽可能避免收集无关的用户信息**,并采取**不低于业内一般性标准**的技术和组织措施来保护您的个人信息免受未经授权的访问、公开披露、使用、修改、损坏或丢失,包括但不限于: **数据加密**:我们将会采用业界领先的加密算法对用户个人信息进行加密处理,以确保即使数据被未经授权的第三方获取,也无法解析出用户的实际信息。 **数据传输安全**:我们采用加密技术为用户与服务器间的通信提供可靠的加密保护,确保数据在传输过程中不被截获或篡改。 **系统安全防护**:我们定期对服务器和系统进行安全检查与漏洞修补,以防止黑客的攻击和病毒的入侵。 **制度保障**:成立专门的数据保护部门,并指定负责人,负责用户个人信息的保护工作。定期对公司员工进行个人信息保护的培训和教育,确保全体员工了解和重视对用户个人信息的保护工作。严格限制公司员工对用户数据的访问权限,仅在业务需要时允许特定员工访问有关数据。访问用户个人信息的员工进行监督和考核,发现行为不当及时处理。 **数据备份**:我们会定期对用户个人信息数据进行备份,并将备份数据存储在不同的物理位置,以降低因意外或灾难造成数据丢失的风险。 **数据泄露预警**:我们设立了实时监控系统,对异常数据访问和泄露情况进行监控,一旦发现数据泄露迹象,我们将立即采取措施阻止泄露,果断查找原因并制定相应改进措施。 **6.2** 针对敏感个人信息,我们会在处理前取得您的单独同意,并采取更加严格的安全措施。 **6.3 请您特别注意,由于技术手段与管理手段的局限性,互联网环境并非百分之百安全。有些信息一旦泄露,其后果是不可逆的。尽管我们采取了上述措施并竭力提升安全水平,也无法担保绝对的安全。我们强烈建议您与我们一道采取更为积极的安全措施,拒绝出借账号、透露验证码、上传敏感信息等高危操作。** **6.4** 我们制定了网络安全事件应急预案,如果不幸发生个人信息泄露等安全事件,我们会立即启动应急预案,采取措施防止危害扩大。我们会及时将安全事件的基本情况、可能的影响以及我们已经采取的补救措施以电话、推送通知等方式告知您。难以逐一告知个人信息主体时,我们会采取合理、有效的方式发布公告。同时,我们也会将有关情况上报至监管部门,配合调查,追究责任方的法律责任。 ## 7. 如何行使您的权利 **7.1 知情权、决定权** **您对您个人信息的处理享有知情权、决定权,有权限制或者拒绝我们对您的个人信息进行处理,法律法规另有规定的除外。任何时候您都可以撤回对我们处理您个人信息的同意。以下是操作指引:** 您可以通过阅读本政策了解我们的处理活动并决定是否同意。如果您需要解释说明,可联系我们。**如果您不同意我们进行提供产品和服务所必需的处理,请暂勿使用我们的产品和服务。** 您可以通过管理设备操作系统的权限设置或者我们在产品和服务内提供的设置选项,改变或撤回部分授权。**当您撤回同意后,我们将不再处理相应的个人信息。这可能会影响部分功能的正常运行,但不会影响我们此前基于您的授权而开展的个人信息处理行为。如果您希望全面撤回同意,可以注销您的账号。** **7.2 查阅、复制、更正、补充、删除的权利** 您对您个人信息享有查阅、复制、更正、补充、删除等权利。 **7.3 账号注销** **如果您不再使用我们的产品和服务,或您希望全面撤回对个人信息处理的同意,您可以申请注销账号。您可以通过第10节的方式联系我们注销。请您注意,账号的注销是不可逆的。一旦注销,我们将停止为您提供服务并将按照法律法规的要求处理您的个人信息。如果删除、匿名化处理个人信息从技术上难以实现,我们会停止除存储和采取必要的安全保护措施之外的处理。** **7.4 近亲属权利** 在尊重用户隐私和个人信息保护的前提下,我们也认识到,如果用户不幸逝世,用户的近亲属可能需要访问或处理该用户的个人信息。**在该用户生前未通过书面或者其他合理方式向我们告知另有安排的前提下,该用户的近亲属可基于自身的合法、正当利益,向我们主张权利。** 近亲属行使上述权利时,需向我们提供以下证明材料以核对身份:近亲属的有效身份证件;用户死亡证明;能够证明近亲属关系的文件,如户口簿、出生证明、结婚证等;声明不违反用户生前意愿,不侵害他人权利的承诺书或保证书; 其他可能需要的材料,用于证明行使权利的合法性和正当性。 我们将在核实身份后,根据法律法规的要求,协助近亲属完成相关权利的行使。**但若用户生前另有安排,我们将尊重用户的意愿,不进行相关操作。此外,若发现任何滥用近亲属权利的行为,我们将采取相应措施加以制止。** **7.5 投诉和举报** 如果您认为我们处理个人信息的方式违反了法律法规或者本政策的规定,请与我们联系。 如果您发现存在个人信息被侵害的情况,有权向我们提出**投诉或举报**。 通常情况下,我们会在验证您的身份后尽快处理您的请求。 **7.6 其他** 对于与您的身份不直接关联的信息、无合理理由重复申请的信息,或者需要过多的技术手段(如需要开发新系统或从根本上改变现行惯例)、给他人合法权益带来风险或者不切实际的请求,我们可能会予以拒绝。 ## 8. 未成年人保护 **8.1** 我们主要向**具备完全民事行为能力的成年人**提供产品和服务,但我们**非常重视对未成年人个人信息和隐私的保护。** **8.2 受限于技术手段和法律规定,我们无法在注册和使用过程中准确地识别出未成年人**。网络环境复杂多变,尤其是对于未成年人来说,可能缺乏足够的判断力来识别潜在的风险。**如果您发现我们在产品和服务中输出了不适当的内容,请您尽快通知我们。** **8.3** 如果您是**未满18周岁的未成年人,应该通过您的父母或其他监护人来使用我们的产品和服务。** **8.4** 我们严格遵守国家相关法律法规的规定保护未成年人的个人信息,只会在**受到法律允许、父母或其他监护人明确同意或者保护未成年人所必要的情况下处理**此类信息。**如果您是未成年人的监护人,发现我们存在未经授权处理未成年人个人信息的情况,请联系我们,我们会尽快核实并作出适当的处理。** ## 9. 政策更新 **9.1** 为提升服务质量与自律水平,我们会不定期更新本政策。 **9.2** 对于重大政策更新,我们会以短信、弹窗通知或者其他显著的形式告知您。 **9.3** 如果您**不理解或不同意该更新,请在更新生效后暂停使用我们的产品和服务。如果您继续使用我们的产品和服务,即表示您已充分理解并同意接受本次更新。** ## 10. 联系我们 **10.1** 为落实个人信息保护的最小必要原则,提高处理效率并保障用户体验,您可以选择合适的方式联系我们: * 如果您对本政策内容或者个人信息管理操作有任何建议,可通过客服微信与我们联系。 * 如果您对本政策内容或者个人信息管理操作有任何意见或要进行投诉、举报,可发送邮件至 [support@moonshot.cn](mailto:support@moonshot.cn) 。 **10.2** 当您因合法权益遭受侵害需要投诉时,我们需要您提交**有效的身份证明、联系方式,还需要提交书面请求及构成侵权的初步证据**。我们会在验证您的身份后尽快处理您的请求,在十五个工作日内进行回复。 **10.3** 联系地址:北京市海淀区知春路76号京东科技大厦1栋13层。 # Kimi 用户服务协议 Source: https://platform.kimi.com/docs/agreement/userservice 了解 Kimi 用户服务的账号管理、使用规范、知识产权、责任限制与争议解决条款。 **版本生效日期:2025年4月28日** **版本更新日期:2025年4月28日** ## 导言 欢迎您使用Kimi产品和服务! Kimi产品和服务是由北京月之暗面科技有限公司及其关联公司(以下称"我们"或"月之暗面")以网页、应用程序、浏览器插件、小程序以及随技术发展出现的创新形态方式向您提供的产品与服务,包括但不限于以生成式人工智能服务为核心功能的平台(以下称"Kimi"或"本服务")。 鉴于用户协议列明的条款并不能及时、完整罗列并覆盖您与我们所有权利与义务,针对特定模块可能会另有单独的协议或者产品规则(以下称"具体协议")。具体协议是对本协议的补充和完善,是本协议的有效组成部分,与本协议不可分割且具有同等法律效力。当具体协议与本协议的内容存在冲突的,以具体协议的规定为准。 关于我们如何收集、使用、存储和保护您的个人信息及您享有何种权利,您可以阅读[Kimi隐私政策](/docs/agreement/userprivacy)进一步了解。 本协议是我们为您提供服务的基础,事关您的权利,**请在使用本服务前,务必仔细阅读并充分理解本协议,特别是涉及免除或者减轻我们责任、排除或限制您的权利的与您有重大利害的条款。该等条款将以加粗等形式特别提示您注意,请您重点阅读。** **如您未满18周岁,请在法定监护人陪同下仔细阅读并充分理解本协议,并征得法定监护人的同意后使用本服务。** **如果您无法准确理解或不同意本协议的任一内容,请暂时不要使用本服务。当您通过网络页面点击确认、勾选等方式同意本协议或实际使用本服务时,均表示您与我们已就本协议达成一致,同意受本协议约束。** ## 一、服务说明 1. **本服务**:我们以大模型为基础,向用户提供各项人工智能服务。模型基于用户输入信息(以下称"输入"),通过计算推理等输出相应的内容作为响应(以下称"输出"、"生成内容")。输入输出之内容均统称为"内容"。 2. **服务对象**:本服务主要面向的对象是具备完全民事行为能力的成年人。基于本服务的特点,本服务需要用户对内容进行有效识别和合理应用。**如果您是未成年人或不具备使用本服务的民事行为能力,请务必在监护人的同意和指导下使用本服务。** 3. **使用场景**:本服务适用于个人学习、研究、欣赏、日常生活及娱乐使用。 4. **风险提示**:人工智能和机器学习是快速发展的研究领域。我们一直在努力改进我们的服务,使其更加准确、可靠、安全和有益。然而,**鉴于机器学习的不确定性和概率性,使用我们的服务在某些情况下可能会产生不准确的输出结果,亦无法保证输出的时效性**。此外,受限于技术,**我们的输出也可能无法穷尽展示您想要的内容。** 因此,请您在使用服务时注意: **(1)请不要将输出视为唯一的事实来源或绝对真实信息,您需要自行评估内容的准确性和适用性。根据使用目的和场景,合理应用或分享,避免因错误或不适当的内容带来不良影响;** **(2)输出不可以用来替代医疗、法律、金融、教育等领域的专业建议;** **(3)不要直接使用生成内容作出可能对个人产生法律影响或其他重大影响的决定,例如关于个人的信用、教育、就业、住房、保险、法律、医疗或其他重要决策;** **(4)输出不代表月之暗面的观点,如果输出提及任何第三方产品或服务,这并不意味着该第三方认可该内容,或该第三方与月之暗面有关联。特别提示您,若您选择使用联网搜索功能,我们会自动搜索第三方公开发布的信息帮助回复您的输入,网页右侧的搜索栏会显示搜索来源。搜索来源均系第三方制作和提供,本服务的输出可能是模型对搜索来源中信息的整合,仅供您参考,不代表本服务赞成或同意网页链接内容的任何立场、观点,或对网页链接中的内容的真实性、准确性、可靠性进行任何背书。** ## 二、账号使用说明 1. **注册**:您在使用本服务前,可以通过手机号码等方式注册账号或登录界面展示的第三方账号关联登录,按要求填写真实、准确、合法、有效的相关信息,并确认同意本协议以及其他相关规则、政策。如涉及第三方账号关联登录,您应保证您所使用的相关第三方账号已进行实名制注册登记。您需要保证您提供的身份信息及账号信息真实、准确、合法、有效,并及时更新。如果您选择拒绝提供身份信息,或提供的信息不准确、不真实、不规范或我们有理由怀疑为错误、不实、不合法的资料的,您可能无法使用本服务或在使用过程中部分功能受到限制。此外,您不得注册超过合理数量的账号。 2. **使用及转让**:注册成功后,您本人对您的账号享有合法使用权并对您账号项下的所有行为承担法律责任。**您应妥善保管账号,不得以任何形式将账号擅自转让、出借、出租或提供给他人使用**。如因您未保管好账号,包括账号被盗窃或非法利用后未及时采取补救措施,所导致的损失,您应自行负责。 3. **注销**:您有权注销您的账号。但您注销账号后,我们仍需按照网络安全法等法律法规的要求,保留您相应的注册数据及行为记录。如您在注销前使用本服务过程中存在违法或违反本协议的行为,我们仍有权行使本协议所约定的权利。 4. **救济**:如您丢失账号或泄露验证码,您可以及时联系我们请求找回。如您发现任何非法使用用户账号的情况,请立即联系我们,我们将尽快配合和处理。 ## 三、权利与义务 1. **您的权利与义务**:您有权依据本协议的约定使用本服务,有权进行反馈和投诉。 您使用本服务应遵守法律、法规以及本协议,也应遵守我们在本服务相关页面公布的其他相关规则、政策。您不得利用本服务进行违法、违规以及其他可能危害国家安全、社会公共利益、侵犯他人合法权益、扰乱平台经营秩序的行为。您不得转让本条款下的任何权利或义务,任何此类尝试均无效。 2. **我们的权利与义务**:我们将依法依规为您提供服务,积极履行法定义务,保护网络安全、数据安全和您的个人信息,保护未成年人的合法利益和身心健康,尽力在现有技术上维护本服务安全、稳定、持续的运行,努力提升和改进技术,保障您的服务使用体验。**但由于技术和资源限制,我们无法保证本服务始终能及时响应您的需求,请您理解。** **如果您存在违反法律、法规、本协议约定或平台规则的行为,我们有权采取相应措施,包括但不限于通知您整改、屏蔽删除您的内容,冻结、关闭、转移您的账号,拒绝、暂停或停止向您提供服务等。** ## 四、用户使用规范 1. **您注册和使用账号时,应当**: (1) 对注册信息的真实性、合法性、有效性承担全部责任,您的账号名称、头像和简介等注册信息及其他个人信息中不得出现违法和不良信息,及时更新注册信息,不得冒用他人的名义(包括但不限于冒用他人姓名、名称、字号、头像或其他足以让人引起混淆的方式)注册账号或使用本服务; (2)妥善保管账号,并对该账号项下的所有行为承担法律责任; (3)不得恶意注册账号,包括但不限于频繁注册、批量注册等行为; (4)不得以任何形式将账号转让、出借、出租或提供给他人使用。 2. **您向本服务提交输入时,应当**: (1)保证这些输入不属于任何国家秘密或其他可能会对国家安全或者公共利益造成不利影响的数据,不侵犯任何人的知识产权、肖像权、名誉权、荣誉权、姓名权、隐私权、个人信息权益等合法权利/权益; (2)若您的输入中涉及个人信息,请您确保您已经取得相关个人信息主体的知情同意(涉及敏感个人信息的,应获得单独同意),或采取了符合法律要求的匿名化处理措施,否则请勿上传至本平台;不要在任何情况下输入不满十四周岁的未成年人的敏感个人信息; (3)若您的输入中涉及商业信息(尤其涉及商业秘密),请您确保您有权处理相应的商业信息,同时,请在上传前进行必要的脱敏处理,避免产生不利的商业影响。 3. **您不得将本服务用于任何违反法律法规,侵犯公共利益、我们或第三方合法权益的非法及不当目的**: (1)用于可能对人身健康、心理、社会或经济等产生严重有害影响或违反科技伦理的危险目的; (2)用于从事侵犯知识产权、商业秘密以及其他违反商业道德的行为; (3)用于利用算法、数据、平台等优势,实施垄断和不正当竞争行为; (4)用于从事诈骗、欺诈、误导或欺骗性活动; (5)用于侵犯隐私或合法个人信息权益,例如非法收集或披露个人身份信息或教育、财务或其他受保护的记录,包括但不限于地址、电话号码、电子邮件地址、个人身份证件中的号码和特征(例如身份证号、社保账号、护照号码)或信用卡号码; (6)用于其他法律法规所禁止、限制的,或可能损害公共利益、我们或第三方合法利益的使用方式。 4. **您不得利用本服务制作、复制、发布含有下列内容的违法信息**: (1)反对宪法所确定的基本原则的; (2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的; (3)损害国家荣誉和利益的; (4)歪曲、丑化、亵渎、否定英雄烈士事迹和精神,以侮辱、诽谤或者其他方式侵害英雄烈士的姓名、肖像、名誉、荣誉的; (5)宣扬恐怖主义、极端主义或者煽动实施恐怖活动、极端主义活动的; (6)煽动民族仇恨、民族歧视,破坏民族团结的; (7)破坏国家宗教政策,宣扬邪教和封建迷信的; (8)散布谣言,扰乱经济秩序和社会秩序的; (9)散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的; (10)侮辱或者诽谤他人,侵害他人名誉、隐私和其他合法权益的; (11)法律、行政法规禁止的其他内容。 5. **您不得利用本服务制作、复制、发布含有下列内容的不良信息**: (1)使用夸张标题,内容与标题严重不符的; (2)炒作绯闻、丑闻、劣迹等的; (3)不当评述自然灾害、重大事故等灾难的; (4)带有性暗示、性挑逗等易使人产生性联想的; (5)展现血腥、惊悚、残忍等致人身心不适的; (6)煽动人群歧视、地域歧视等的; (7)宣扬低俗、庸俗、媚俗内容的; (8)可能引发未成年人模仿不安全行为和违反社会公德行为、诱导未成年人不良嗜好等的; (9)其他对网络生态造成不良影响的内容。 6. **您不得从事以下危害网络安全、本服务运营安全及经营秩序的活动**: (1)非法侵入网络、干扰网络正常功能、窃取网络数据等危害网络安全的活动,例如:使用未经许可的数据或进入未经许可的服务器/账号;伪造TCP/IP数据包名称或部分名称;未经许可,企图探查、扫描、测试本服务系统或网络的弱点或其它实施破坏网络安全;未经允许进入网络或者计算机系统并删除、修改、增加存储信息;企图干涉、破坏本服务系统或网站的正常运行,故意传播恶意程序或病毒以及其他破坏干扰正常网络信息服务的; (2)提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具; (3)明知他人从事危害网络安全的活动,为其提供技术支持、广告推广、支付结算等帮助; (4)对本服务进行反向工程、反向汇编、反向编译、翻译或者以其他方式尝试发现本服务的源代码、模型、算法和系统的源代码或底层组件; (5)通过编写或使用任何自动化脚本、程序、工具(包括但不限于机器人、爬虫、定时任务等)来模拟人工操作,以实现自动、批量使用我们的产品或服务; (6)重复、大量地进行相同或相似操作,高频提交相同或相似内容等,干扰服务的正常运行和秩序; (7)未经我们授权,利用本服务来开发、服务与本服务有竞争可能性的应用程序、产品、服务或模型; (8)未经我们授权,将本服务的全部或部分进行复制、转让、出租、出借、出售或提供分许可、转许可; (9)其他危害网络安全、本服务运营安全及经营秩序的行为。 7. **您不得通过以下方式恶意对抗本服务的信息内容安全管理和风险防范机制,包括但不限于**: (1)恶意对抗行为,包括但不限于使用变体、乱码、字符、谐音等方式规避服务检测来输入或生成违法言论; (2)通过假扮身份、反向诱导、越狱攻击等方式进行恶意攻击、诱导和投毒; (3)删除、篡改或隐匿我们已标注的人工智能生成内容的标识(包括存在于生成内容上肉眼可见的显著标识以及通过特定技术手段植入生成内容元文件的隐蔽标识); (4)其他恶意对抗本服务的信息内容安全管理和风险防范机制的行为。 ## 五、知识产权与其他权利 1. 除了依照法律规定应享有权利的相关权利人外,月之暗面对本服务(包括但不限于软件、技术、程序、代码、模型权重、用户界面、网页、文字、图表、版面设计、商标、电子文档)享有法律法规允许范围内的全部权利(包括但不限于著作权、商标权、专利权等知识产权和其他权利)。 2. 在未侵害他人合法知识产权或其他权利并遵守本协议的前提下,您在法律允许的范围内,拥有对您输入和输出内容的知识产权、其他权利和对内容负责的义务。由于技术限制,我们无法保证其他用户的内容与您的内容完全不一致,不排除会出现输出内容雷同的情况,鉴于此,您对输出所享有的权利无法当然及于其他用户的内容。 3. **为了提升您使用本服务的体验,您授予我们一项免费的的使用权,以在法律允许的范围内将您输入输出之内容及反馈用于模型服务优化。** ## 六、违约责任 1. 您了解并同意,针对您违反本协议及相关法律法规的行为,**我们可以独立判断,包括依据您的各项信息与行为数据或其他互动关系来综合认定,在无需通知的情况下,对您采取包括但不限于警示提醒、限期改正、限制账号功能、暂停使用、关闭账号、禁止重新注册、删除相关内容等处置措施**。我们有权公告处理结果,且有权根据实际情况决定是否恢复使用。 2. **您应当独立承担因您的违约行为导致的全部法律责任或第三方主张的任何索赔和要求。因此给我们造成任何损失的,您应当予以全部赔偿(包括我们维权所支出的诉讼费、仲裁费、律师费、公证费、公告费、鉴定费、差旅费、调查取证费、赔偿金、违约金、和解费用、行政处罚的罚金等)。** ## 七、责任限制 1. **第三方提供的服务:在您使用本服务的过程中,可能会涉及到由第三方提供的系统或服务的支持。这意味着某些功能或访问权限可能依赖于这些第三方服务,其结果亦由相应的第三方供应商负责提供。对于此类第三方服务及其内容的安全性、准确性、有效性或其他潜在风险,我们不提供任何形式的保证。因此,因使用第三方服务而引发的任何争议或造成的损害,我们不承担法律责任。建议您在使用本服务接入的第三方服务前自行评估并审慎判断。您应当遵守第三方的服务条款,并承担相关风险。** 2. **不可抗力等原因**:我们依照法律规定履行基础保障义务,但对于下述原因导致的合同履行障碍、履行瑕疵、履行延后或履行内容变更等情形,我们不承担相应的责任: (1)因自然灾害、罢工、暴乱、战争、政府行为、司法行政命令等不可抗力因素; (2)因电力供应故障、通讯网络故障等公共服务因素或移动通讯终端病毒或黑客攻击、系统不稳定等第三人因素; (3)在已尽善意管理的情况下,因常规或紧急的设备与系统维护、设备与系统故障、网络信息与数据安全等因素。 3. ***技术限制:由于本服务所依赖的技术和资源瓶颈,我们不对以下事项作出任何保证: (1)不保证本服务符合您的实际或特定需求; (2)不保证本服务准确可靠、功能可用、及时、无错误、不受干扰、无中断、持续稳定、不存在任何故障; (3)不保证本服务中的全部信息无瑕疵、无偏见、不侵权、完全合理; (4)不保证本服务的代码、程序及其指向的内容的准确性、稳定性和完整性; (5)不保证通过恶意诱导或其他违反本协议的使用方式所输出的内容与本服务运营主体的观点保持一致。*** 4. 若您遇到涉及借款、投融资、理财等财产相关的信息,以及账号密码或广告等内容,请您务必保持警惕并自行判断。我们不对您基于上述信息产生的任何判断承担任何责任。 5. **对于您遭受的任何损失,包括但不限于利润损失、商业信誉受损、资料丢失或其他有形或无形损失,我们不承担任何间接、附带、衍生性或惩罚性的赔偿责任。除非法律法规另有明确规定,否则我们对您承担的全部直接责任,无论基于何种原因或方式,均不会超过您在使用本服务期间支付给我们的费用总额(如有)。** 6. 我们有权根据本协议处理违法违规内容,但该权利并不构成我们的义务或承诺。我们无法保证能够及时发现或处理所有违法行为。 7. **我们保留将本条款下的权利或义务转让给任何关联公司、子公司或与本服务相关的任何业务继受者的权利。** ## 八、服务终止 1. 用户有权随时按照注销流程终止本服务。如果用户出现违反法律法规,违反本协议或平台规则,侵害公众、我们或者第三人合法权益的情况,我们会视情况终止服务。 2. **为了整体服务运营的需要,我们有权视具体情况决定服务/功能设置、范围,修改、中断、中止或终止本服务。** ## 九、未成年人使用提示 1. 未成年人应该在其监护人的监督指导下使用本服务,在合理范围内正确学习使用网络,避免沉迷虚拟的网络空间,养成良好的上网习惯。 2. 未成年用户应当遵守《全国青少年网络文明公约》: 要善于网上学习,不浏览不良信息; 要诚实友好交流,不侮辱欺诈他人; 要增强自护意识,不随意约会网友; 要维护网络安全,不破坏网络秩序; 要有益身心健康,不沉溺虚拟时空。 3. **为更好的保护未成年人的隐私权益,请您务必严格遵守相关法律法规和用户使用规范,慎重上传包含未成年人信息或素材的内容,一经上传,即视为您同意我们在本服务中依法依约处理与该未成年人相关的内容。** ## 十、法律适用与争议解决 1. 本协议之订立、生效、解释、修订、补充、终止、执行与争议解决均适用中华人民共和国大陆地区法律。 2. 若本协议的签订、履行或解释发生争议,双方应努力友好协商解决。***如协商不成,任何一方均有权向北京月之暗面科技有限公司住所地有管辖权的法院起诉。*** ## 十一、其他 1. **条款的可分性与可执行性**:若本协议中任何一条款被认定为废止、无效或不可执行,该条款应被视为可分割的,不影响本协议其他条款的有效性及可执行性。此外,我们延迟或暂不行使本协议项下的任何权利,并不应被视为对该权利的放弃。 2. **本协议的更新:为持续优化服务体验并适应国家法律法规、政策调整、技术条件及产品功能等变化,我们可能会不定期地更新本协议。更新后的协议内容将构成本协议的组成部分,并通过页面公示、页面提示或信息推送等方式通知您。如您继续使用本服务,即表示您已同意接受更新后的本协议内容。如您对更新后的协议条款存有异议的,您有权停止登录或使用本服务。若您继续登录或使用本服务,即视为您认可并接受修改后的协议条款。** 3. **本协议的小标题**:本协议所设小标题仅为便于阅读而设,不作为协议条款的解释依据。 ## 十二、联系我们 1. **意见反馈途径**: PC端:您可以点击左侧栏中您的头像,选择"用户反馈"对我们的服务做出打分或评价。 手机端:您可以点击屏幕左上角的菜单栏,点击您的头像后,选择"举报与反馈"向我们提供您的宝贵意见。 以上这些操作路径可能会随产品界面的更新而有所变化,但是我们会始终保留用户的反馈途径,以便倾听您的宝贵意见。 2. **账号申诉途径:** 如果您发现您的账号存在任何问题,请随时与我们联系。您可以通过发送邮件至 [support@moonshot.cn](mailto:support@moonshot.cn) 与我们取得联系。 3. **投诉举报途径:** 如果您发现本服务或其生成的内容存在违法违规行为、违法不良信息,或侵犯了您的合法权益(包括但不限于知识产权、个人信息、肖像权、名誉权等),请随时与我们联系进行举报或投诉。 当您的合法权益受到侵害,投诉时需要按照法律规定提交您的真实身份信息以及构成侵权的初步证据。您可以通过发送邮件至 [support@moonshot.cn](mailto:support@moonshot.cn) 或联系我们的办公地址与我们取得联系。我们会按照法律的规定,尽快处理您的请求。 联系地址:北京市海淀区知春路76号京东科技大厦1栋13层 # 查询余额 Source: https://platform.kimi.com/docs/api/balance GET /v1/users/me/balance 查询您在 Kimi 开放平台上的可用余额、代金券余额和现金余额。 查询您在 Kimi 开放平台上的可用余额、代金券余额和现金余额。当可用余额小于等于 0 时,用户无法调用推理 API。 ```python python expandable theme={null} import os import requests api_key = os.environ.get("MOONSHOT_API_KEY") url = "https://api.moonshot.cn/v1/users/me/balance" response = requests.get( url, headers={"Authorization": f"Bearer {api_key}"}, ) print(response.json()) ``` ```bash curl expandable theme={null} curl https://api.moonshot.cn/v1/users/me/balance \ -H "Authorization: Bearer $MOONSHOT_API_KEY" ``` ```javascript node.js expandable theme={null} const apiKey = process.env.MOONSHOT_API_KEY; async function main() { const response = await fetch("https://api.moonshot.cn/v1/users/me/balance", { method: "GET", headers: { Authorization: `Bearer ${apiKey}`, }, }); const data = await response.json(); console.log(data); } main(); ``` | 字段 | 类型 | 说明 | | ------------------------ | ------- | ------------------------------------------------------------------------ | | `code` | integer | 响应码。0 表示成功。 | | `data` | object | 余额数据对象 | | `data.available_balance` | number | 可用余额(单位:人民币元),包含现金余额和代金券余额。当小于等于 0 时,用户无法调用推理 API | | `data.voucher_balance` | number | 代金券余额(单位:人民币元),不可为负 | | `data.cash_balance` | number | 现金余额(单位:人民币元),可为负值表示欠费。当为负值时,`available_balance` 等于 `voucher_balance` 的值 | | `scode` | string | 状态码 | | `status` | boolean | 请求状态 | **响应示例** ```json theme={null} { "code": 0, "data": { "available_balance": 49.58894, "voucher_balance": 46.58893, "cash_balance": 3.00001 }, "scode": "0x0", "status": true } ``` 当 `available_balance` 小于等于 0 时,调用推理 API 将返回 `exceeded_current_quota_error` 错误。请及时充值或检查代金券有效期。 `platform.kimi.com`(国内站)与 `platform.kimi.ai`(国际站)申请的 API Key 完全独立,混用会返回 401 错误。请确认调用端点与 Key 所属平台一致。 # 取消批处理任务 Source: https://platform.kimi.com/docs/api/batch-cancel POST /v1/batches/{batch_id}/cancel 取消一个正在进行的批处理任务。取消后,任务状态将先变为 cancelling,最终变为 cancelled。仅 validating、in_progress、finalizing 状态的任务可以取消。 取消一个正在进行的批处理任务。取消后,任务状态将先变为 `cancelling`,最终变为 `cancelled`。仅 `validating`、`in_progress`、`finalizing` 状态的任务可以取消。 ```python Python theme={null} import os from openai import OpenAI from openai.types import Batch client = OpenAI( api_key=os.environ.get("MOONSHOT_API_KEY"), base_url=os.environ.get("MOONSHOT_BASE_URL", "https://api.moonshot.cn/v1"), ) batch: Batch = client.batches.cancel("your_batch_id") print(f"状态: {batch.status}") # cancelling ``` ```bash cURL theme={null} curl -X POST ${MOONSHOT_BASE_URL:-https://api.moonshot.cn/v1}/batches/your_batch_id/cancel \ -H "Authorization: Bearer $MOONSHOT_API_KEY" ``` ```javascript Node.js theme={null} const OpenAI = require("openai"); const client = new OpenAI({ apiKey: process.env.MOONSHOT_API_KEY, baseURL: process.env.MOONSHOT_BASE_URL || "https://api.moonshot.cn/v1", }); async function main() { const batch = await client.batches.cancel("your_batch_id"); console.log(`状态: ${batch.status}`); // cancelling } main(); ``` 调用成功后,接口返回一个 `BatchObject` 对象,包含以下字段: | 字段 | 类型 | 说明 | | ------------------- | --------------- | ------------------------------------------------- | | `id` | string | 批处理任务的唯一标识符 | | `object` | string | 对象类型,固定为 `batch` | | `endpoint` | string | 请求端点 | | `input_file_id` | string | 输入文件 ID | | `completion_window` | string | 任务处理时间窗口 | | `status` | string | 当前状态。取消请求成功后通常为 `cancelling`,最终变为 `cancelled` | | `output_file_id` | string \| null | 处理成功的结果文件 ID | | `error_file_id` | string \| null | 处理失败的错误文件 ID | | `created_at` | integer | 创建时间(Unix 时间戳) | | `in_progress_at` | integer \| null | 开始执行时间(Unix 时间戳) | | `expires_at` | integer \| null | 过期时间(Unix 时间戳) | | `finalizing_at` | integer \| null | 开始准备结果的时间(Unix 时间戳) | | `completed_at` | integer \| null | 完成时间(Unix 时间戳) | | `failed_at` | integer \| null | 校验失败时间(Unix 时间戳) | | `cancelling_at` | integer \| null | 发起取消时间(Unix 时间戳) | | `cancelled_at` | integer \| null | 取消完成时间(Unix 时间戳) | | `request_counts` | object | 请求计数,包含 `completed`(已完成)、`failed`(失败)、`total`(总数) | | `metadata` | object \| null | 自定义元数据 | 仅 `validating`、`in_progress`、`finalizing` 状态的任务可以取消。若任务已处于 `completed`、`failed`、`expired` 或 `cancelled` 状态,调用此接口将返回 400 错误。 **常见错误说明** * **400 请求错误**:任务状态不允许取消,或请求参数无效。请确认任务状态后再发起取消。 * **401 未授权**:API Key 无效或缺失。请检查 `Authorization: Bearer ` 是否正确。 * **404 未找到**:指定的 `batch_id` 不存在。请确认 ID 拼写正确且该任务属于当前组织。 * **500 服务器错误**:服务端内部错误,请稍后重试;若持续出现,请附带 `request_id` 联系支持团队。 详见 [常见错误码说明](/docs/api/errors)。 完整的调用示例和状态流转说明,请参考 [Batch API 指南](/docs/guide/use-batch-api)。 # 创建批处理任务 Source: https://platform.kimi.com/docs/api/batch-create POST /v1/batches 创建一个批处理任务。需要先通过文件接口上传一个 purpose="batch" 的 JSONL 文件,然后使用返回的 file_id 创建任务。 **限制:** | 限制项 | 说明 | | ----------- | ------------------------ | | 文件格式 | 必须为 `.jsonl` 扩展名 | | 文件大小 | 不能为空,最大 100MB | | 组织文件配额 | 每个组织最多 1000 个 batch 类型文件 | | 模型一致性 | 同一批次内所有请求必须使用相同模型 | | `custom_id` | 文件内必须唯一 | | 模型权限 | 指定的模型必须存在且用户有访问权限 | 完整的调用示例请参考 [Batch API 指南](/docs/guide/use-batch-api)。 # 列出批处理任务 Source: https://platform.kimi.com/docs/api/batch-list GET /v1/batches 列出当前组织的批处理任务。 列出当前组织下的所有批处理任务,支持分页查询。常用于查看任务列表、检查批量任务状态或进行批量管理。 ```python Python theme={null} import os from openai import OpenAI from openai.pagination import SyncCursorPage from openai.types import Batch client = OpenAI( api_key=os.environ.get("MOONSHOT_API_KEY"), base_url=os.environ.get("MOONSHOT_BASE_URL", "https://api.moonshot.cn/v1"), ) batches: SyncCursorPage[Batch] = client.batches.list(limit=10) for batch in batches.data: print(f"{batch.id} - {batch.status} ({batch.request_counts.completed}/{batch.request_counts.total})") ``` ```bash cURL theme={null} curl "${MOONSHOT_BASE_URL:-https://api.moonshot.cn/v1}/batches?limit=10" \ -H "Authorization: Bearer $MOONSHOT_API_KEY" ``` ```javascript Node.js theme={null} const OpenAI = require("openai"); const client = new OpenAI({ apiKey: process.env.MOONSHOT_API_KEY, baseURL: process.env.MOONSHOT_BASE_URL || "https://api.moonshot.cn/v1", }); async function main() { const batches = await client.batches.list({ limit: 10 }); for (const batch of batches.data) { console.log(`${batch.id} - ${batch.status} (${batch.request_counts.completed}/${batch.request_counts.total})`); } } main(); ``` 列出任务接口返回一个分页列表对象,包含以下字段: | 字段 | 类型 | 说明 | | ---------- | -------------- | ------------------------------------------------------------------- | | `object` | string | 对象类型,固定为 `"list"` | | `data` | array\[object] | 批处理任务列表,每个元素为 `BatchObject` 对象,字段含义与[获取任务详情](/docs/api/batch-retrieve)一致 | | `has_more` | boolean | 是否还有更多数据。为 `true` 时,可通过 `after` 参数传入本页最后一个 `batch.id` 获取下一页 | **响应示例** ```json theme={null} { "object": "list", "data": [ { "id": "batch_xxx", "object": "batch", "endpoint": "/v1/chat/completions", "input_file_id": "file_xxx", "completion_window": "24h", "status": "completed", "output_file_id": "file_yyy", "error_file_id": null, "created_at": 1711475054, "in_progress_at": 1711475055, "expires_at": 1711561454, "finalizing_at": 1711475100, "completed_at": 1711475110, "failed_at": null, "cancelling_at": null, "cancelled_at": null, "request_counts": { "completed": 100, "failed": 0, "total": 100 }, "metadata": null } ], "has_more": false } ``` 完整的调用示例和状态流转说明,请参考 [Batch API 指南](/docs/guide/use-batch-api)。 当 `has_more` 为 `true` 时,需要通过 `after` 参数进行分页查询。将上一页最后一个 `batch.id` 作为 `after` 的值传入,即可获取下一页结果。若省略 `after` 参数,每次查询均返回第一页。 # 获取批处理任务详情 Source: https://platform.kimi.com/docs/api/batch-retrieve GET /v1/batches/{batch_id} 获取指定批处理任务的状态和详细信息。 获取指定批处理任务的当前状态、进度统计和详细元数据。通常用于创建任务后轮询任务是否完成。 ```python Python theme={null} import os from openai import OpenAI from openai.types import Batch client = OpenAI( api_key=os.environ.get("MOONSHOT_API_KEY"), base_url=os.environ.get("MOONSHOT_BASE_URL", "https://api.moonshot.cn/v1"), ) batch: Batch = client.batches.retrieve("your_batch_id") print(f"状态: {batch.status}") print(f"进度: {batch.request_counts.completed}/{batch.request_counts.total}") ``` ```bash cURL theme={null} curl ${MOONSHOT_BASE_URL:-https://api.moonshot.cn/v1}/batches/your_batch_id \ -H "Authorization: Bearer $MOONSHOT_API_KEY" ``` ```javascript Node.js theme={null} const OpenAI = require("openai"); const client = new OpenAI({ apiKey: process.env.MOONSHOT_API_KEY, baseURL: process.env.MOONSHOT_BASE_URL || "https://api.moonshot.cn/v1", }); async function main() { const batch = await client.batches.retrieve("your_batch_id"); console.log(`状态: ${batch.status}`); console.log(`进度: ${batch.request_counts.completed}/${batch.request_counts.total}`); } main(); ``` | 字段 | 类型 | 说明 | | ------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | 批处理任务的唯一标识符 | | `object` | string | 对象类型,固定为 `batch` | | `endpoint` | string | 请求端点 | | `input_file_id` | string | 输入文件 ID | | `completion_window` | string | 任务处理时间窗口 | | `status` | string | 当前状态:`validating`(校验中)、`failed`(校验失败)、`in_progress`(执行中)、`finalizing`(准备结果中)、`completed`(已完成)、`expired`(已过期)、`cancelling`(取消中)、`cancelled`(已取消) | | `output_file_id` | string \| null | 处理成功的结果文件 ID | | `error_file_id` | string \| null | 处理失败的错误文件 ID | | `created_at` | integer | 创建时间(Unix 时间戳) | | `in_progress_at` | integer \| null | 开始执行时间(Unix 时间戳) | | `expires_at` | integer \| null | 过期时间(Unix 时间戳) | | `finalizing_at` | integer \| null | 开始准备结果的时间(Unix 时间戳) | | `completed_at` | integer \| null | 完成时间(Unix 时间戳) | | `failed_at` | integer \| null | 校验失败时间(Unix 时间戳) | | `cancelling_at` | integer \| null | 发起取消时间(Unix 时间戳) | | `cancelled_at` | integer \| null | 取消完成时间(Unix 时间戳) | | `request_counts` | object | 请求数量统计,包含 `completed`(已完成)、`failed`(失败)、`total`(总数) | | `metadata` | object \| null | 自定义元数据 | 完整的调用示例和轮询脚本请参考 [Batch API 指南](/docs/guide/use-batch-api)。 当 `status` 为 `completed` 时,`output_file_id` 包含结果文件 ID;当 `status` 为 `failed` 时,建议查看 `error_file_id` 获取错误详情。如果指定的 `batch_id` 不存在,接口将返回 `404` 错误(`resource_not_found_error`)。 # 创建对话补全 Source: https://platform.kimi.com/docs/api/chat POST /v1/chat/completions 为聊天消息创建补全结果。支持标准聊天、Partial Mode 和 Tool Use(函数调用)。 创建一个对话补全请求,模型将根据输入的消息列表生成回复。 `content` 字段支持以下两种形式: **纯文本字符串** ```json theme={null} { "content": "你好" } ``` **对象数组**(用于多模态输入) 数组中每个元素通过 `type` 字段区分类型: ```json theme={null} { "content": [ { "type": "text", "text": "描述这张图片" }, { "type": "image_url", "image_url": { "url": "data:image/png;base64,..." } }, { "type": "video_url", "video_url": { "url": "data:video/mp4;base64,..." } } ] } ``` 其中 `image_url` 和 `video_url` 也支持直接传入字符串,效果等同于对象形式中的 `url` 字段: ```json theme={null} { "type": "image_url", "image_url": "data:image/png;base64,..." } ``` #### 参数说明 数组中每个元素的字段说明如下: | 参数名称 | 是否必须 | 说明 | 类型 | | ----------- | ---------------------- | -------------------------------------------- | ------------------------------------------ | | `type` | required | 内容类型 | `"text"` \| `"image_url"` \| `"video_url"` | | `text` | 当 `type=text` 时必填 | 文本内容 | string | | `image_url` | 当 `type=image_url` 时必填 | 用于传输图片,支持对象形式 `{"url": "..."}` 或直接传入 URL 字符串 | object \| string | | `video_url` | 当 `type=video_url` 时必填 | 用于传输视频,支持对象形式 `{"url": "..."}` 或直接传入 URL 字符串 | object \| string | 当 `image_url` 传入对象时,其字段说明如下: | 参数名称 | 是否必须 | 说明 | 类型 | | ----- | -------- | ------------------------------- | ------ | | `url` | required | 使用 base64 编码或通过 file id 指定的图片内容 | string | 当 `video_url` 传入对象时,其字段说明如下: | 参数名称 | 是否必须 | 说明 | 类型 | | ----- | -------- | -------------------------------------------------------------- | ------ | | `url` | required | 使用 base64 编码或通过 file id 指定的视频内容,例如 `data:video/mp4;base64,...` | string | 无论使用对象形式(`url` 字段)还是字符串简写,均支持以下两种格式: * base64 编码:`data:image/png;base64,...` 或 `data:video/mp4;base64,...` * 文件引用:`ms://` 详见[使用 Kimi 视觉模型](/docs/guide/use-kimi-vision-model)。 #### 调用示例 ```python python expandable theme={null} import os import base64 from openai import OpenAI from openai.types.chat import ChatCompletion client: OpenAI = OpenAI( api_key=os.environ.get("MOONSHOT_API_KEY"), base_url="https://api.moonshot.cn/v1", ) # 对图片进行 base64 编码 with open("您的图片地址", "rb") as f: img_base: str = base64.b64encode(f.read()).decode("utf-8") response: ChatCompletion = client.chat.completions.create( model="kimi-k2.6", messages=[ { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": f"data:image/jpeg;base64,{img_base}", }, }, { "type": "text", "text": "请描述这个图片", }, ], } ], ) print(response.choices[0].message.content) ``` ```bash curl expandable theme={null} curl https://api.moonshot.cn/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $MOONSHOT_API_KEY" \ -d '{ "model": "kimi-k2.6", "messages": [ { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": "data:image/jpeg;base64,/9j/4AAQ..." } }, { "type": "text", "text": "请描述这个图片" } ] } ] }' ``` ```javascript node.js expandable theme={null} const fs = require("fs"); const OpenAI = require("openai"); const client = new OpenAI({ apiKey: process.env.MOONSHOT_API_KEY, baseURL: "https://api.moonshot.cn/v1", }); async function main() { // 对图片进行 base64 编码 const imgBase = fs.readFileSync("您的图片地址").toString("base64"); const response = await client.chat.completions.create({ model: "kimi-k2.6", messages: [ { role: "user", content: [ { type: "image_url", image_url: { url: `data:image/jpeg;base64,${imgBase}`, }, }, { type: "text", text: "请描述这个图片", }, ], }, ], }); console.log(response.choices[0].message.content); } main(); ``` ### 非流式响应 ```json theme={null} { "id": "cmpl-04ea926191a14749b7f2c7a48a68abc6", "object": "chat.completion", "created": 1698999496, "model": "kimi-k2.6", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "你好,李雷!1+1等于2。如果你有其他问题,请随时提问!" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 19, "completion_tokens": 21, "total_tokens": 40, "cached_tokens": 10 } } ``` ### 流式响应 ```text theme={null} data: {"id":"cmpl-xxx","object":"chat.completion.chunk","created":1698999575,"model":"kimi-k2.6","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]} data: {"id":"cmpl-xxx","object":"chat.completion.chunk","created":1698999575,"model":"kimi-k2.6","choices":[{"index":0,"delta":{"content":"你好"},"finish_reason":null}]} ... data: {"id":"cmpl-xxx","object":"chat.completion.chunk","created":1698999575,"model":"kimi-k2.6","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":19,"completion_tokens":13,"total_tokens":32,"cached_tokens":12}} data: [DONE] ``` 响应示例中的模型名称会根据请求中的 model 参数返回。当使用 `kimi-k2.6` 模型时,响应中的 `"model"` 字段将显示为 `"kimi-k2.6"`。 Kimi API 是无状态的,本身不具有记忆功能。要实现多轮对话,需在每次请求时把前一轮的 assistant 回复(以及工具执行结果,如适用)原样追加到 `messages` 数组中再发送。 ```python theme={null} messages = [ {"role": "system", "content": "你是 Kimi。"}, {"role": "user", "content": "你好,我叫李雷。"} ] completion = client.chat.completions.create(model="kimi-k2.6", messages=messages) reply = completion.choices[0].message # 将 assistant 回复追加回 messages,供下一轮使用 messages.append({"role": "assistant", "content": reply.content}) messages.append({"role": "user", "content": "1+1 等于多少?"}) ``` 当对话历史过长时,建议只保留最近的若干条消息,或做消息压缩,以避免超出模型的上下文长度限制。 详见 [配置多轮对话参数](/docs/guide/engage-in-multi-turn-conversations-using-kimi-api)。 通过 `response_format` 参数可约束模型输出格式: * `{"type": "text"}`(默认):普通文本输出 * `{"type": "json_object"}`:强制输出合法 JSON Object * `{"type": "json_schema", "json_schema": {...}}`:按给定 JSON Schema 输出结构化数据(Structured Output) 使用 `json_object` 时,**必须在 system prompt 或 user prompt 中明确描述期望的 JSON 字段和类型**,否则模型可能输出不符合预期的结果。 ```json theme={null} { "model": "kimi-k2.6", "messages": [ {"role": "system", "content": "请输出 JSON,包含 title、author、summary 字段。"}, {"role": "user", "content": "总结这篇文章..."} ], "response_format": {"type": "json_object"} } ``` 详见 [使用 Kimi API 的 JSON Mode](/docs/guide/use-json-mode-feature-of-kimi-api)。 通过 `tools` 参数传入 JSON Schema 定义的外部工具,模型可决定在适当时机调用它们。 **请求示例** ```json theme={null} { "model": "kimi-k2.6", "messages": [{"role": "user", "content": "北京今天天气怎么样?"}], "tools": [ { "type": "function", "function": { "name": "get_weather", "description": "获取指定城市的天气", "parameters": { "type": "object", "properties": { "city": {"type": "string", "description": "城市名称"} }, "required": ["city"] } } } ] } ``` **响应中的 `tool_calls`** 当 `finish_reason` 为 `"tool_calls"` 时,模型返回 `tool_calls` 数组,包含 `id`、`function.name` 和 `function.arguments`: ```json theme={null} { "choices": [{ "message": { "role": "assistant", "content": "", "tool_calls": [{ "id": "call_xxx", "type": "function", "function": { "name": "get_weather", "arguments": "{\"city\":\"北京\"}" } }] }, "finish_reason": "tool_calls" }] } ``` **提交工具执行结果** 在本地执行工具后,将结果通过 `role="tool"` 消息追加到 `messages` 中(`tool_call_id` 必须与请求中的 `id` 对应): ```json theme={null} {"role": "tool", "tool_call_id": "call_xxx", "content": "晴,25°C"} ``` 详见 [使用 Kimi API 完成工具调用](/docs/guide/use-kimi-api-to-complete-tool-calls)。 `kimi-k3` 始终进行推理,使用顶层 `reasoning_effort`(支持 `"low"`、`"high"`、`"max"`,默认 `"max"`)。`kimi-k2.6` 和 `kimi-k2.7-code` 支持思考模式,模型在输出最终答案前会先输出推理过程(`reasoning_content`)。 **K2.x 请求参数** | 字段 | 类型 | 说明 | | --------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `thinking.type` | `"enabled"` \| `"disabled"` | 思考开关(`kimi-k2.7-code` 始终为 `enabled`,不可关闭) | | `thinking.keep` | `null` \| `"all"` | Preserved Thinking:是否将历史轮次的 `reasoning_content` 保留在上下文。`kimi-k2.6` 默认 `null`(不保留),可选 `"all"`;`kimi-k2.7-code` 固定为 `"all"`(保留),传入其他值报错 | **响应字段** 非流式响应中,`choices[0].message` 包含: | 字段 | 说明 | | ------------------- | ----------------- | | `content` | 最终答案 | | `reasoning_content` | 推理过程(仅在思考模式启用时返回) | ```json theme={null} { "choices": [{ "message": { "role": "assistant", "content": "1+1 等于 2。", "reasoning_content": "用户问的是基础数学问题,直接相加即可。" } }] } ``` 多轮对话中若使用思考模式,请务必将每一轮 assistant 消息的 `reasoning_content` 原样保留在 `messages` 中,否则模型可能丢失推理上下文。 详见 [配置思考模式](/docs/guide/use-thinking-models)。 设置 `stream: true` 可启用流式输出,模型会以 Server-Sent Events (SSE) 格式逐段返回生成的内容。推荐在聊天、代码生成、长文本输出等实时性要求高的场景中使用。 ```python theme={null} completion = client.chat.completions.create( model="kimi-k2.6", messages=[{"role": "user", "content": "请解释什么是递归。"}], stream=True ) for chunk in completion: if chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="") ``` **SSE 响应格式** 每一行以 `data:` 开头,内容为 JSON 对象。当 `finish_reason` 为 `null` 时,内容在 `delta.content` 中累加;当 `finish_reason` 不为 `null` 时,表示输出结束: ```text theme={null} data: {"id":"cmpl-xxx","object":"chat.completion.chunk","created":1698999575,"model":"kimi-k2.6","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]} data: {"id":"cmpl-xxx","object":"chat.completion.chunk","created":1698999575,"model":"kimi-k2.6","choices":[{"index":0,"delta":{"content":"你好"},"finish_reason":null}]} data: {"id":"cmpl-xxx","object":"chat.completion.chunk","created":1698999575,"model":"kimi-k2.6","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":19,"completion_tokens":13,"total_tokens":32,"cached_tokens":12}} data: [DONE] ``` **`stream_options`** 通过 `stream_options: {"include_usage": true}` 可在最后一个 chunk(`data: [DONE]` 之前)额外获取 `usage` 字段,显示本次请求的 Token 消耗: ```python theme={null} stream=True, stream_options={"include_usage": True} ``` 详见 [利用 Kimi API 的流式输出功能](/docs/guide/utilize-the-streaming-output-feature-of-kimi-api)。 Partial Mode(Prefill)允许你在 `messages` 的最后一条 assistant 消息中预填输出前缀,从而引导模型按照你期望的格式或方向继续生成。 **开启方式** 在 `messages` 数组末尾添加一条 `role="assistant"` 的消息,并设置 `partial: true`: ````python theme={null} completion = client.chat.completions.create( model="kimi-k2.6", messages=[ {"role": "user", "content": "用 Python 实现快速排序。"}, {"role": "assistant", "content": "```python\n", "partial": True} ] ) ```` 模型会从 \`\`\`\`python\n\` 之后继续生成代码,而不是先输出解释文字再写代码。 **常见用途** * 强制模型以特定格式开头(如 JSON 的 `{`、代码块的 \`\`\`\`python\`) * 角色扮演中保持角色名称前缀(配合 `name` 字段) * 在 `finish_reason="length"` 时,用相同的前缀续写被截断的内容 请勿将 Partial Mode 与 `response_format={"type": "json_object"}` 混用,否则可能获得预期外的模型回复。如需引导 JSON 输出,建议直接使用 [Structured Output](/docs/guide/response_format) 或单独设置 `partial: true` 并预填 `{`。 详见 [使用 Kimi API 的 Partial Mode](/docs/guide/use-partial-mode-feature-of-kimi-api)。 # 常见错误码说明 Source: https://platform.kimi.com/docs/api/errors 查询 Kimi API 的 HTTP 状态码、错误类型、常见原因和对应的排查处理方法。 当请求失败时,API 会返回包含错误信息的 JSON 响应: ```json theme={null} { "error": { "type": "content_filter", "message": "The request was rejected because it was considered high risk" } } ``` ## 错误列表 ## 400 — 请求错误 | error type | 典型 message | 原因与处理 | | ----------------------- | ------------------------------------------------------------------------------------- | --------------------------------------- | | `content_filter` | The request was rejected because it was considered high risk | 输入或模型输出触发内容安全审查。请修改提示词,避免敏感/高风险内容。 | | `invalid_request_error` | 请求格式错误、缺少必填参数或参数类型非法。对照接口文档检查请求体。 | | | `invalid_request_error` | Input token length too long | 输入 tokens 超过模型最大上下文限制。缩短输入或换用更大上下文模型。 | | `invalid_request_error` | prompt tokens + max\_tokens 超过模型规格。减小 max\_tokens 或换模型。 | | | `invalid_request_error` | Invalid purpose: only 'file-extract' accepted | 文件上传的 purpose 字段不正确,当前仅支持 file-extract。 | | `invalid_request_error` | File size is too large, max file size is 100MB, please confirm and re-upload the file | 上传文件超过 100MB 限制。压缩或拆分后重新上传。 | | `invalid_request_error` | File size is zero, please confirm and re-upload the file | 上传文件大小为 0。检查文件是否损坏或为空。 | | `invalid_request_error` | 上传文件总数超过上限。删除不再使用的早期文件后重试。 | | ## 401 — 认证错误 | error type | 典型 message | 原因与处理 | | ------------------------------ | -------------------------- | -------------------------------------------------------- | | `invalid_authentication_error` | Invalid Authentication | API Key 无效或格式错误。请检查 `Authorization: Bearer <key>`。 | | `incorrect_api_key_error` | Incorrect API key provided | 未提供 API Key 或 Key 错误。 | **平台 Key 隔离说明**:`platform.kimi.com`(中国站)与 `platform.kimi.ai`(国际站)的账户、余额和 API Key 完全独立,混用会返回 401。请确认调用端点与 Key 所属平台一致。 ## 403 — 权限错误 | error type | 典型 message | 原因与处理 | | ------------------------- | -------------------------------------------------- | --------------------------------- | | `permission_denied_error` | The API you are accessing is not open | 该 API 暂未对当前账号开放。 | | `permission_denied_error` | You are not allowed to get other user info | 不允许访问其他用户信息。请检查接口权限范围。 | | `permission_denied_error` | Your IP is not allowed to access this organization | 调用 IP 不在组织白名单内(国际站常见)。联系管理员添加 IP。 | ## 404 — 资源不存在 | error type | 典型 message | 原因与处理 | | -------------------------- | ------------------------------------------ | ----- | | `resource_not_found_error` | 模型不存在,或当前账号无权限访问该模型。检查 model 参数拼写及账号 tier。 | | ## 429 — 速率限制 / 额度不足 | error type | 典型 message | 原因与处理 | | ------------------------------ | ---------------------------------------------------------- | ------------------------------------------------------------------------------------- | | `engine_overloaded_error` | The engine is currently overloaded, please try again later | 服务节点负载较高(如高峰期容量压力)。按照 `Retry-After` 提示等待、降低并发并使用指数退避重试;该错误由服务端容量导致,充值或提升 Tier 不能直接消除。 | | `exceeded_current_quota_error` | 账户欠费或已停用。检查余额与账单。 | | | `exceeded_current_quota_error` | 账户 token 额度不足。充值后再试。 | | | `rate_limit_reached_error` | 触发组织级并发限制。降低并发或等待指定时间后重试。 | | | `rate_limit_reached_error` | 触发组织级 RPM(每分钟请求数)限制。按响应提示等待后重试。 | | | `rate_limit_reached_error` | 触发组织级 TPM(每分钟 token 数)限制。降低调用频率或升级 tier。 | | | `rate_limit_reached_error` | 触发组织级 TPD(每日 token 数)限制。次日恢复或升级套餐。 | | ## 499 / 500 / 503 / 504 — 连接与服务端错误 | HTTP | error type | 原因与处理 | | ---- | ------------------------------------ | --------------------------------------------------------------- | | 499 | `client_closed_request` | 客户端在服务端返回前断开连接。常见于流式响应被中间代理切断或用户主动取消。检查 KeepAlive 与超时设置。 | | 500 | `server_error` / `unexpected_output` | 服务端内部错误。请稍后重试;若持续出现,请附带 `request_id` 联系支持。 | | 503 | `server_unavailable` | 服务暂时不可用。稍后重试,通常与节点扩容/维护有关。 | | 504 | `504 Gateway Time-out` | 服务端 900 秒无响应,网关返回 HTML 超时页面。常见于非流式长请求,建议改用流式输出(`stream: true`)。 | ## 排障建议 * **收到 401**:先确认是否使用了正确平台的 API Key * **收到 429**:先根据 `error.type` 区分原因:节点过载请退避重试,组织限速可降低并发或升级用户等级,余额不足请充值,详见 [充值与限速](/docs/pricing/limits) * **收到 500**:请稍后重试,如持续出现请附带 `request_id` 联系支持团队 [api-service@moonshot.ai](mailto:api-service@moonshot.ai) * **收到 504**:服务端 900 秒无响应导致网关超时,建议改用流式输出(`stream: true`) # 计算 Token Source: https://platform.kimi.com/docs/api/estimate POST /v1/tokenizers/estimate-token-count 估算给定消息和模型所需的 Token 数量。输入结构与聊天补全几乎相同。 estimate-token-count 的输入结构体和 chat completion 基本一致。 ```bash theme={null} curl 'https://api.moonshot.cn/v1/tokenizers/estimate-token-count' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $MOONSHOT_API_KEY" \ -d '{ "model": "kimi-k3", "messages": [ { "role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。" }, { "role": "user", "content": "你好,我叫李雷,1+1等于多少?" } ] }' ``` ```python theme={null} import os import base64 import json import requests api_key = os.environ.get("MOONSHOT_API_KEY") endpoint = "https://api.moonshot.cn/v1/tokenizers/estimate-token-count" image_path = "image.png" with open(image_path, "rb") as f: image_data = f.read() # 我们使用标准库 base64.b64encode 函数将图片编码成 base64 格式的 image_url image_url = f"data:image/{os.path.splitext(image_path)[1].lstrip('.')};base64,{base64.b64encode(image_data).decode('utf-8')}" payload = { "model": "kimi-k3", "messages": [ { "role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。" }, { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": image_url, }, }, { "type": "text", "text": "请描述图片的内容。", }, ], } ] } response = requests.post( endpoint, headers={ "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" }, data=json.dumps(payload) ) print(response.json()) ``` 当没有 error 字段,可以取 `data.total_tokens` 作为计算结果。 # 文件接口 Source: https://platform.kimi.com/docs/api/files 了解 Kimi API 文件管理能力,包括上传、列出、查询、读取和删除用于内容抽取或视觉理解的文件。 Kimi API 提供文件管理功能,支持内容抽取、图片理解和视频理解。 上传文件用于内容抽取或视觉理解 列举当前用户已上传的所有文件 获取指定文件的元数据 删除不再需要的文件 获取文件内容抽取结果 # 获取文件内容 Source: https://platform.kimi.com/docs/api/files-content GET /v1/files/{file_id}/content 获取以 `file-extract` 用途上传的文件的提取文本内容。 ```python theme={null} # 注意,之前 retrieve_content api 在最新版本标记了 warning, 可以用下面这行代替 # 如果是旧版本,可以用 retrieve_content file_content = client.files.content(file_id=file_object.id).text ``` ```bash theme={null} curl https://api.moonshot.cn/v1/files/{file_id}/content \ -H "Authorization: Bearer $MOONSHOT_API_KEY" ``` # 删除文件 Source: https://platform.kimi.com/docs/api/files-delete DELETE /v1/files/{file_id} 删除一个已上传的文件。 删除一个已上传的文件。删除成功后,该文件将不再占用存储空间,也无法继续用于对话或 Batch 等场景。 ```python showLineNumbers expandable theme={null} import os from openai import OpenAI client = OpenAI( api_key=os.environ.get("MOONSHOT_API_KEY"), base_url="https://api.moonshot.cn/v1", ) # 删除指定文件 delete_result = client.files.delete(file_id="file-xxx") print(delete_result) ``` ```bash showLineNumbers theme={null} curl -X DELETE https://api.moonshot.cn/v1/files/file-xxx \ -H "Authorization: Bearer $MOONSHOT_API_KEY" ``` ```js showLineNumbers expandable theme={null} const OpenAI = require("openai"); const client = new OpenAI({ apiKey: process.env.MOONSHOT_API_KEY, baseURL: "https://api.moonshot.cn/v1", }); async function main() { const deleteResult = await client.files.delete({ file_id: "file-xxx", }); console.log(deleteResult); } main(); ``` 删除文件接口返回一个 JSON 对象,包含以下字段: | 字段 | 类型 | 说明 | | --------- | ------- | ------------ | | `id` | string | 已删除文件的标识符 | | `object` | string | 固定为 `"file"` | | `deleted` | boolean | 文件是否删除成功 | **响应示例** ```json theme={null} { "id": "file-xxx", "object": "file", "deleted": true } ``` 删除操作不可撤销。单个用户最多只能上传 1000 个文件,当文件总数达到上限时,需要先删除不再使用的文件才能继续上传。 如果文件不存在或已被删除,接口将返回 `404` 错误。请确认 `file_id` 正确无误。 # 列出文件 Source: https://platform.kimi.com/docs/api/files-list GET /v1/files 列出当前用户上传的所有文件。 ```python theme={null} file_list = client.files.list() for file in file_list.data: print(file) # 查看每个文件的信息 ``` # 获取文件信息 Source: https://platform.kimi.com/docs/api/files-retrieve GET /v1/files/{file_id} 获取指定已上传文件的元数据。 ```python theme={null} client.files.retrieve(file_id=file_id) # FileObject( # id='clg681objj8g9m7n4je0', # bytes=761790, # created_at=1700815879, # filename='xlnet.pdf', # object='file', # purpose='file-extract', # status='ok', status_details='') ``` # 上传文件 Source: https://platform.kimi.com/docs/api/files-upload POST /v1/files 上传文件用于内容提取、图片理解或视频理解。 单个用户最多只能上传 1000 个文件,单文件不超过 100MB,同时所有已上传的文件总和不超过 10G 容量。文件解析服务限时免费,请求高峰期平台可能会有限流策略。 文件接口支持以下格式:`.pdf`、`.txt`、`.csv`、`.doc`、`.docx`、`.xls`、`.xlsx`、`.ppt`、`.pptx`、`.md`、`.jpeg`、`.png`、`.bmp`、`.gif`、`.webp`、`.ico`、`.xbm`、`.dib`、`.pjp`、`.tif`、`.pjpeg`、`.avif`、`.dot`、`.apng`、`.epub`、`.tiff`、`.jfif`、`.html`、`.json`、`.mobi`、`.log`、`.go`、`.h`、`.c`、`.cpp`、`.cxx`、`.cc`、`.cs`、`.java`、`.js`、`.css`、`.jsp`、`.php`、`.py`、`.py3`、`.asp`、`.yaml`、`.yml`、`.ini`、`.conf`、`.ts`、`.tsx` 等。 上传文件时选择 `purpose="file-extract"`,随后可以让模型获取文件中的信息作为上下文。 ```python showLineNumbers expandable theme={null} from pathlib import Path import os from openai import OpenAI client = OpenAI( api_key=os.environ["MOONSHOT_API_KEY"], base_url = "https://api.moonshot.cn/v1", ) # xlnet.pdf 是一个示例文件, 我们支持 pdf, doc 以及图片等格式 file_object = client.files.create(file=Path("xlnet.pdf"), purpose="file-extract") # 获取结果 # 注意,之前 retrieve_content api 在最新版本标记了 warning, 可以用下面这行代替 # 如果是旧版本,可以用 retrieve_content file_content = client.files.content(file_id=file_object.id).text # 把它放进请求中 messages = [ { "role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。", }, { "role": "system", "content": file_content, }, {"role": "user", "content": "请简单介绍 xlnet.pdf 讲了啥"}, ] # 然后调用 chat-completion, 获取 Kimi 的回答 completion = client.chat.completions.create( model="kimi-k2-turbo-preview", messages=messages, temperature=0.6, ) print(completion.choices[0].message) ``` ```bash showLineNumbers theme={null} # xlnet.pdf 是一个示例文件 curl https://api.moonshot.cn/v1/files \ -H "Authorization: Bearer $MOONSHOT_API_KEY" \ -F purpose="file-extract" \ -F file="@xlnet.pdf" ``` ```js showLineNumbers expandable theme={null} const OpenAI = require("openai"); const fs = require("fs") const client = new OpenAI({ apiKey: process.env.MOONSHOT_API_KEY, baseURL: "https://api.moonshot.cn/v1", }); async function main() { // xlnet.pdf 是一个示例文件, 我们支持 pdf, doc 以及图片等格式 let file_object = await client.files.create({ file: fs.createReadStream("xlnet.pdf"), purpose: "file-extract" }) // 注意,之前 retrieve_content api 在最新版本标记了 warning, 可以用下面这行代替 // 如果是旧版本,可以用 retrieve_content let file_content = await (await client.files.content(file_object.id)).text() // 把它放进请求中 let messages = [ { "role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。", }, { "role": "system", "content": file_content, }, {"role": "user", "content": "请简单介绍 xlnet.pdf 讲了啥"}, ] const completion = await client.chat.completions.create({ model: "kimi-k2-turbo-preview", messages: messages, temperature: 0.6 }); console.log(completion.choices[0].message.content); } main(); ``` 其中 `$MOONSHOT_API_KEY` 部分需要替换为您自己的 API Key。或者在调用前给它设置好环境变量。 如果你想一次性上传多个文件,并根据这些文件与 Kimi 对话,你可以参考如下示例: ```python expandable theme={null} from typing import * import os import json from pathlib import Path from openai import OpenAI client = OpenAI( base_url="https://api.moonshot.cn/v1", api_key=os.environ["MOONSHOT_DEMO_API_KEY"], ) def upload_files(files: List[str]) -> List[Dict[str, Any]]: """ upload_files 会将传入的文件(路径)全部通过文件上传接口 '/v1/files' 上传,并获取上传后的 文件内容生成文件 messages。每个文件会是一个独立的 message,这些 message 的 role 均为 system,Kimi 大模型会正确识别这些 system messages 中的文件内容。 :param files: 一个包含要上传文件的路径的列表,路径可以是绝对路径也可以是相对路径,请使用字符串 的形式传递文件路径。 :return: 一个包含了文件内容的 messages 列表,请将这些 messages 加入到 Context 中, 即请求 `/v1/chat/completions` 接口时的 messages 参数中。 """ messages = [] for file in files: file_object = client.files.create(file=Path(file), purpose="file-extract") file_content = client.files.content(file_id=file_object.id).text messages.append({ "role": "system", "content": file_content, }) return messages def main(): file_messages = upload_files(files=["upload_files.py"]) messages = [ *file_messages, { "role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助," "准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不" "可翻译成其他语言。", }, { "role": "user", "content": "总结一下这些文件的内容。", }, ] print(json.dumps(messages, indent=2, ensure_ascii=False)) completion = client.chat.completions.create( model="kimi-k2-turbo-preview", messages=messages, ) print(completion.choices[0].message.content) if __name__ == '__main__': main() ``` 上传文件时,选择 `purpose="image"` 或 `purpose="video"`,上传后的图片或视频可以用于模型的原生理解。 请参阅[使用视觉模型](/docs/guide/use-kimi-vision-model)了解完整示例。 # 加入开发者反馈社群! Source: https://platform.kimi.com/docs/api/join-the-community 加入 Kimi 开发者反馈群,与开发者交流、反馈问题并分享 Build on Kimi 项目。 打开 [飞书](https://www.feishu.cn/download) app ,扫码加入 **Kimi 开发者反馈群**,欢迎提供建议、反馈问题以及分享「Build on Kimi」 showcase! Qrcode Kimi Feishu # 列出模型 Source: https://platform.kimi.com/docs/api/list-models GET /v1/models 列出当前可用的所有模型。 列出当前可用的所有模型,包含模型 ID、上下文长度及能力标识等信息。建议在调用对话补全前查询本接口,以确认目标模型是否可用及具备对应能力。 ```python python expandable theme={null} import os from openai import OpenAI client = OpenAI( api_key=os.environ.get("MOONSHOT_API_KEY"), base_url="https://api.moonshot.cn/v1", ) models = client.models.list() print(models.data) ``` ```bash curl expandable theme={null} curl https://api.moonshot.cn/v1/models \ -H "Authorization: Bearer $MOONSHOT_API_KEY" ``` ```javascript node.js expandable theme={null} const OpenAI = require("openai"); const client = new OpenAI({ apiKey: process.env.MOONSHOT_API_KEY, baseURL: "https://api.moonshot.cn/v1", }); async function main() { const models = await client.models.list(); console.log(models.data); } main(); ``` 响应为一个对象,包含以下字段: | 字段 | 类型 | 说明 | | -------- | -------------- | ----------------- | | `object` | string | 对象类型,固定为 `"list"` | | `data` | array\[object] | 模型列表,每个元素为一个模型对象 | `data` 数组中每个模型对象的字段说明: | 字段 | 类型 | 说明 | | -------------------- | ------- | ----------------------- | | `id` | string | 模型 ID,例如 `kimi-k3` | | `object` | string | 对象类型,固定为 `"model"` | | `created` | integer | 模型创建时的 Unix 时间戳 | | `owned_by` | string | 模型所有者标识,例如 `"moonshot"` | | `context_length` | integer | 模型支持的最大上下文长度(tokens) | | `supports_image_in` | boolean | 是否支持图片输入 | | `supports_video_in` | boolean | 是否支持视频输入 | | `supports_reasoning` | boolean | 是否支持深度思考 | 模型列表及能力标识可能随平台更新而变化。若调用对话补全时收到 `resource_not_found_error`(404),说明模型不存在或当前账号无权限访问,请检查 `model` 参数拼写及账号 tier。 本接口需要有效的 API Key 进行认证。若收到 401 错误,请检查 `Authorization` 请求头是否为 `Bearer `,并确认 API Key 与调用端点所属平台一致(`platform.kimi.com` 与 `platform.kimi.ai` 的 Key 不可混用)。 # 模型参数参考 Source: https://platform.kimi.com/docs/api/models-overview 对比 Kimi 各模型系列在 Chat Completions API 中的默认参数、可调范围与使用约束。 不同模型系列对 Chat Completions API 参数有不同的默认值和约束。完整的模型列表请参阅[模型列表](/docs/models)。 ## 参数对比 当 `temperature` 接近 0 时,`n` 只能为 1,否则将返回 `invalid_request_error`。 ## 模型参数配置差异 切换模型时,除了替换 `model` 字段,还需要注意各模型对请求参数的支持范围和默认值不同: | 参数 | `kimi-k3` | `kimi-k2.7-code` | `kimi-k2.6` | `kimi-k2.5` | | ---------------------------------------- | ---------------------------------------- | ---------------------------------------------- | -------------------------------------------------------------------------------- | ---------------------------------------------- | | 上下文窗口 | 1M tokens | 256K tokens | 256K tokens | 256K tokens | | `thinking` | — | 可省略;显式设置时仅接受 `{"type":"enabled","keep":"all"}` | `{"type":"enabled"}`(默认)、`{"type":"disabled"}`、`{"type":"enabled","keep":"all"}` | `{"type":"enabled"}`(默认)、`{"type":"disabled"}` | | `reasoning_effort` | `"low"` / `"high"` / `"max"`(默认 `"max"`) | 不支持 | 不支持 | 不支持 | | `tool_choice` | `auto` / `none` / `required` | 不支持 `required` | 不支持 `required` | — | | `temperature` | 固定 `1.0` | 固定 `1.0` | 思考 `1.0` / 非思考 `0.6` | 思考 `1.0` / 非思考 `0.6` | | `top_p` | 固定 `0.95` | 固定 `0.95` | 固定 `0.95` | — | | `n` | 固定 `1` | 固定 `1` | 固定 `1` | — | | `presence_penalty` / `frequency_penalty` | 固定 `0` | 固定 `0` | 固定 `0` | — | 表中"固定"表示该参数不可修改:传入其他值会报错,建议不要显式传入。 ### `thinking` `thinking` 是 K2.x 专属请求参数: * `kimi-k2.6`:支持 `{"type": "enabled"}`(默认)、`{"type": "disabled"}`、`{"type": "enabled", "keep": "all"}` 三种配置。 * `kimi-k2.7-code`:思考默认开启,仅支持 `{"type": "enabled", "keep": "all"}`,传入其他配置会报错。从 `kimi-k2.6` 切换时,需要按 Preserved Thinking 的要求在 `messages` 中回传历史 `reasoning_content`。 详见[使用思考模式](/docs/guide/use-thinking-models)。 ### `reasoning_effort` K3 始终进行推理思考且保留式思考(Preserved Thinking)始终开启。通过请求顶层 `reasoning_effort` 配置推理强度,支持 `"low"` / `"high"` / `"max"` 三档,默认 `"max"`。详见[推理强度](/docs/guide/use-reasoning-effort)。 切换档位会破坏前缀缓存命中,建议在会话开始前确定 `effort` 档位,避免中途切换。 ### `tool_choice` `kimi-k3` 支持 `auto` / `none` / `required` 三档;`kimi-k2.6` 与 `kimi-k2.7-code` 不支持 `required`,传入会报错。详见[工具调用约束](/docs/guide/use-tool-choice)。 ### `temperature` * `kimi-k2.6` / `kimi-k2.5`:思考模式固定 `1.0`,非思考模式固定 `0.6`,传入其他值报错; * `kimi-k2.7-code`:固定 `1.0`,传入其他值报错。 * `kimi-k3`:固定 `1.0`,传入其他值报错。 建议调用以上模型时不要显式传入 `temperature`。 `kimi-k2.7-code-highspeed` 与 `kimi-k2.7-code` 为同一模型、参数约束完全一致,仅输出速度不同。 ### 常见问题 **从 `kimi-k2.6` 切换到 `kimi-k3`,需要改代码吗?** 将 `model` 替换为 `kimi-k3`,并移除 K2.x 的 `thinking` 配置;如需显式设置推理强度,使用顶层 `reasoning_effort`。K3 的多轮对话和工具调用需要把 API 返回的完整 assistant message 原样回传到 `messages`,包括可能返回的 `reasoning_content`。 **从 `kimi-k2.7-code` 切换到 `kimi-k3`,需要改代码吗?** 替换 `model` 即可,并继续原样回传完整 assistant message;如需显式设置推理强度,使用顶层 `reasoning_effort`。 **原来代码里用的是 OpenAI 的 `reasoning_effort`,切到 `kimi-k3` 需要改吗?** 不需要。K3 支持顶层 `reasoning_effort`,可选值为 `"low"` / `"high"` / `"max"`,默认 `"max"`。 **`tool_choice: "required"` 在 `kimi-k2.6` / `kimi-k2.7-code` 上能用吗?** 不能。这两个模型不支持 `required`,传入会报错;该档位仅 `kimi-k3` 支持。 ## Kimi K2.7 Code 系列 — thinking 参数 `kimi-k2.7-code` 系列包含 `kimi-k2.7-code` 及其高速版 `kimi-k2.7-code-highspeed`,二者为同一模型、参数约束完全一致(含上方表格与 `thinking` 行为),仅输出速度不同,下文统称 `kimi-k2.7-code`。 `kimi-k2.7-code` 面向代码场景,除 `thinking` 外的参数约束与 `kimi-k2.6` 完全一致。与 `kimi-k2.6` 不同的是,它 **始终开启思考、不可禁用**(传入 `{"type": "disabled"}` 会报错),且 **Preserved Thinking 始终开启**(`thinking.keep` 不传或传 `"all"` 都按 `"all"` 处理,传入其他非法值会报错)。因此调用时无需传入 `thinking` 参数,只需切换 `model` 即可,模型始终输出 `reasoning_content`。详细用法见[使用思考模式](/docs/guide/use-thinking-models)。 ## Kimi K2.6 — thinking 参数 Kimi K2.6 支持通过 `thinking` 参数控制是否启用深度思考。接受 `{"type": "enabled"}` 或 `{"type": "disabled"}`。 由于 OpenAI SDK 没有原生的 `thinking` 参数,需要使用 `extra_body` 传递: ```python Python theme={null} completion = client.chat.completions.create( model="kimi-k2.6", messages=[ {"role": "user", "content": "你好"} ], extra_body={ "thinking": {"type": "disabled"} }, max_tokens=1024*32, ) ``` ```bash cURL theme={null} curl https://api.moonshot.cn/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $MOONSHOT_API_KEY" \ -d '{ "model": "kimi-k2.6", "messages": [ {"role": "user", "content": "你好"} ], "thinking": {"type": "disabled"} }' ``` # API 概述 Source: https://platform.kimi.com/docs/api/overview 查看 Kimi API 的服务地址、认证方式、请求格式、兼容性和主要接口入口。 ## 服务地址 ``` https://api.moonshot.cn ``` Kimi 开放平台提供兼容 OpenAI 协议的 HTTP API,您可以直接使用 OpenAI SDK 接入。 使用 SDK 时,`base_url` 设置为 `https://api.moonshot.cn/v1`;直接调用 HTTP 端点时,完整路径如 `https://api.moonshot.cn/v1/chat/completions`。 ## 兼容 OpenAI 我们的 API 在请求/响应格式上兼容 OpenAI Chat Completions API。这意味着: * 可以直接使用 OpenAI 官方 SDK(Python / Node.js) * 支持大多数兼容 OpenAI 的第三方工具和框架(LangChain、Dify、Coze 等) * 只需将 `base_url` 指向 `https://api.moonshot.cn/v1` 即可切换 部分参数为 Kimi 专有扩展:`thinking` 参数需要通过 SDK 的 `extra_body` 传递;`partial` 是写在 messages 中 assistant 消息上的字段(`"partial": true`),不是顶层请求参数。详见[工具调用](/docs/api/tool-use)和 [Partial Mode](/docs/api/partial)。 ## 认证 所有 API 请求需要在 HTTP 头中携带 API Key: ``` Authorization: Bearer $MOONSHOT_API_KEY ``` API Key 可在 [Kimi 开放平台控制台](https://platform.kimi.com/console/api-keys) 创建和管理。 API Key 是敏感信息,请妥善保管。不要在客户端代码、公开仓库或日志中暴露。建议通过环境变量管理。 ## SDK 安装 ```bash Python theme={null} pip install --upgrade 'openai>=1.0' ``` ```bash Node.js theme={null} npm install openai ``` 初始化客户端: ```python Python theme={null} import os from openai import OpenAI client = OpenAI( api_key=os.environ["MOONSHOT_API_KEY"], base_url="https://api.moonshot.cn/v1", ) ``` ```javascript Node.js theme={null} const OpenAI = require("openai"); const client = new OpenAI({ apiKey: process.env.MOONSHOT_API_KEY, baseURL: "https://api.moonshot.cn/v1", }); ``` Python 版本需 ≥ 3.7.1,Node.js 版本需 ≥ 18,OpenAI SDK 版本需 ≥ 1.0.0。 ```bash theme={null} python -c 'import openai; print("version =", openai.__version__)' ``` ## 通用请求头 | 请求头 | 值 | 说明 | | --------------- | -------------------------- | ----- | | `Content-Type` | `application/json` | 请求体格式 | | `Authorization` | `Bearer $MOONSHOT_API_KEY` | 认证令牌 | ## 错误处理 请求失败时返回 JSON 格式的错误响应,包含 `error.type` 和 `error.message` 字段。常见的 HTTP 状态码包括 400(请求错误)、401(认证失败)、429(速率限制)、500(服务端错误)等。 完整的错误类型、错误消息和排障建议,请参阅[错误说明](/docs/api/errors)。 ## API 端点一览 | 端点 | 方法 | 说明 | | ------------------------------------- | ------ | ----------------------------- | | `/v1/chat/completions` | POST | [创建对话补全](/docs/api/chat) | | `/v1/models` | GET | [列出模型](/docs/api/list-models) | | `/v1/tokenizers/estimate-token-count` | POST | [计算 Token](/docs/api/estimate) | | `/v1/users/me/balance` | GET | [查询余额](/docs/api/balance) | | `/v1/files` | POST | [上传文件](/docs/api/files-upload) | | `/v1/files` | GET | [列出文件](/docs/api/files-list) | | `/v1/files/{file_id}` | GET | [获取文件信息](/docs/api/files-retrieve) | | `/v1/files/{file_id}` | DELETE | [删除文件](/docs/api/files-delete) | | `/v1/files/{file_id}/content` | GET | [获取文件内容](/docs/api/files-content) | ## 下一步 发送第一个 API 请求 了解各模型的能力和参数差异 让模型调用外部函数 完整的端点参数参考 # 平台新功能发布记录 Source: https://platform.kimi.com/docs/changelog/changelog/changelog 查看 Kimi 开放平台的历史功能发布、模型上线、产品优化与问题修复记录。 本文不定期更新 Kimi 开放平台的产品功能和对应的文档动态。 ## 2025年4月7日 * 模型产品降价 * 支持组织成员邀请/管理功能 * 修复创建项目时名称框光标移动失败问题 ## 2025年2月17日 * kimi-latest 模型上线 * 支持组织月账单导出 * 修正项目限速显示问题 * 支持项目日/月消费预警 ## 2025年1月13日 * moonshot-v1-vision-preview 模型上线 * 支持组织项目管理功能 * 微信支付二维码恢复上线 * 支持海外手机号注册登录 ## 2024年12月2日 * 优化资源管理列表复制样式为鼠标悬浮点击 * 优化资源列表按上传时间由近及远排序 * 支持一个企业实体认证多账号 * 修复发票退票失败问题 ## 2024年11月4日 * Context Caching 功能已放开给全量用户 * Cache 续期不再收取创建的费用 * 文档中心增加条款与协议内容显示 * 修改优化 APIKey 文案 * 修复支付成功后前端频闪问题 * 增加发票退票失败重试机制 * 修复修改删除 APIKey 的问题 ## 2024年9月30日 * File 文件资源管理前端功能支持 * 换绑手机号前端分两步验证新旧手机号 * 验证码短信内容中加验证码用途说明 * 修复可开票金额显示错误的问题 * 修复发票税号空格导致开票失败的问题 * 企业认证增加银行打款受理时间显示 * 增加自动断线重连操作文档说明 * 上线联网搜索功能 ## 2024年8月28日 * moonshot-v1-auto 上线 * 帐户余额自定义预警支持 * 手机号换绑功能支持 * 账号密码登陆支持 * Cache 存储费用降低 * MoonPalace 使用指南文档发布 * Kimi 企业级 API 发布 * 用户基本信息增加 tier 等级显示 ## 2024年7月31日 * Kimi API 调试工具 MoonPalace 发布 * Context Caching 管理翻页优化 * 用户消费分析上线 * 增加文档中 Context Caching 嵌入式计算器体验入口 * 企业认证企业名称字数检查放开 * 个人认证用户支持变更为企业认证用户 * API 入门指南文档更新 ## 2024年7月10日 * Context Caching 公测放开到 Tier3-Tier5 用户 * 开发者交流群二维码上线 * Kimi API 助手实践 Context Caching 第三篇 Blog 发布 * Kimi API 助手实践 Context Caching 第二篇 Blog 发布 * Context Caching 如何为 Kimi API 助手节省最高 90% 的调用成本 Blog 发布 ## 2024年7月1日 * Context Caching 产品正式开启公测 ## 2024年6月28日 * 企微客服二维码上线 * API Key 个数限制优化 * Kimi API 助手实践 Context Caching 第一篇 Blog 发布 * 发布用得起的长文本 Blog 发布 * 代金券有限期支持 ## 2024年5月29日 * Blog 空间上线 * 开放平台 DarkMode 支持 * 发票管理功能上线 * 微信/支付宝扫码支付优化 ## 2024年4月30日 * Tool Calling 功能上线 * 实名认证功能上线 * 公对公转账功能上线 * 微信/支付宝支付功能上线 * 余额监控接口支持 # MoBA:面向长文本大模型的混合块注意力机制 Source: https://platform.kimi.com/docs/changelog/changelog/moba 历史技术文章:了解 MoBA 如何将专家混合思想应用于稀疏注意力,以提高长文本模型的训练与推理效率。 > 本文发布于 2025-02-19 *MoBA通过将专家混合系统(Mixture of Experts, MoE)的思想与稀疏注意力(sparse attention)相结合,为大语言模型中的长文本处理方式带来革命性变化。* 高效处理和生成长序列的能力对大语言模型(LLMs)十分重要,然而传统注意力机制在扩展到长上下文时面临平方复杂度计算挑战。现有的解决方案通常会引入特定任务的稀疏先验(比如滑动窗口注意力,Sink注意力等),或需要对注意力机制进行彻底的改变(比如线性注意力)。在本文中,我们介绍了混合块注意力(Mixture of Block Attention, MoBA),它将专家混合(Mixture of Experts, MoE)的思想与稀疏注意力(Sparse Attention)结合,在保持原始Transformer架构的灵活性和性能的同时,尝试解决上述挑战。 ## 从全注意力(Full Attention)到混合块注意力(MoBA) MoBA是一种受专家混合(MoE)和块稀疏注意力(Block Sparse Attention)启发的注意力架构。在传统注意力中,每个 query 都会和完整的上下文(KV)进行计算,MoBA 使每个 query 能够有选择地专注于一部分(KV),保持性能的同时降低了计算成本。 总的来说,MoBA有下面关键创新,感兴趣的读者可以参考我们的论文了解详细信息[https://arxiv.org/abs/2502.13189](https://arxiv.org/abs/2502.13189) 1. **块划分和动态路由**:上下文被划分为块,MoE 式的门控网络动态地为每个 query 选择最相关的块。 2. **保持因果性**:MoBA 确保 query 不能关注未来的块,保持了语言模型的自回归特性。当前块应用了 causal 掩码以防止信息泄露。 3. **细粒度块划分**:类似于MoE中细粒度专家划分,上下文的细粒度划分增强了性能,允许更细致的注意力模式。 4. **MoBA与全注意力的混合**:MoBA可以无缝地在全注意力和稀疏注意力之间切换。这种灵活性使模型能够利用现有的预训练全注意力模型。 5. **高性能实现**:我们通过整合FlashAttention和MoE的优化技术,提供了MoBA的高性能实现。 ## 将 MoBA 扩展到1000万上下文 1. **Scaling Law 实验**:MoBA在 LM loss 方面实现了与全注意力相当的性能,即使对于序列末尾的 LM loss 差异也很小。 2. **混合策略**:尝试了训练混合和分层混合两种策略。训练混合是在训练期间将MoBA与全注意力交替使用(例如,用MoBA训练大多数语料,仅用少量语料激活全注意力),这样可以实现了与全注意力几乎相同的性能,同时提高了训练效率。分层混合策略,是在层间交替使用 MoBA 和全注意力,这在 SFT 期间进一步保证了效果。 3. **现实世界任务评估**:MoBA在各种长上下文基准测试中表现出色,包括大海捞针和RULER,取得和全注意力相同效果。 4. **效率和可扩展性**:MoBA显著减少了注意力计算时间,与全注意力相比,100万上下文长度实现了6.5倍的速度提升,在扩展到 1000 万上下文时实现了16倍的速度提升。 MoBA 与全注意力(使用 Flash Attention 实现)的效率对比。(a) 1M 模型加速评估:在序列长度从 8K 到 1M 增加的情况下,MoBA 与 Flash Attention 在 1M 模型上的计算时间扩展。(b) 固定稀疏率扩展:在序列长度从 8K 到 10M 增加的情况下,MoBA 与 Flash Attention 的计算时间扩展对比,保持恒定的稀疏率 95.31%(固定 64 个 MoBA 块,具有方差块大小和固定的 top-k=3)。 ## 结论和未来工作 通过动态选择相关的上下文块并保持与传统 Transformer 架构的兼容性,MoBA在性能和效率之间取得了平衡。它能够在全注意力和稀疏注意力模式之间无缝切换,使其成为长上下文任务的有效解决方案。未来的工作会进一步优化 MoBA 的块选择策略,并探索其在复杂推理任务中的潜力。 ## 参考资料 有关MoBA的更多详细信息,请参考技术报告和MoBA的GitHub仓库 [https://github.com/MoonshotAI/MoBA](https://github.com/MoonshotAI/MoBA) # Muon 优化器的首次大规模训练实践 Source: https://platform.kimi.com/docs/changelog/changelog/moonlight 历史技术文章:了解 Moonlight 项目如何通过权重衰减和更新比例调整,将 Muon 优化器扩展到大模型训练。 > 本文发布于 2025-03-03 近期,基于矩阵正交化(matrix orthogonalization)的 Muon 优化器在小规模语言模型训练中展现出了优异的性能,但其在大模型训练中的可扩展性尚未得到验证。我们发现了两个提升 Muon 可扩展性的关键技术:(1)引入权重衰减(weight decay);(2)精确调整每个参数的更新比例。有了这些改进,Muon可以直接用于大规模训练,无需额外的超参数调优。扩展性实验表明,相比 AdamW,在计算量最优的训练条件下,Muon 的计算效率上实现了约 2 倍提升。 *图注:Muon的扩展性验证。(a)比较Muon和Adam的扩展性实验表明,Muon的样本效率是Adam的2倍。(b)我们的Moonlight模型在MMLU上的表现与其他同类模型的对比。Moonlight在性能与训练计算量的权衡上推进了帕累托前沿。* 基于这些改进,我们推出了 Moonlight 模型,这是一个使用 Muon 训练的 3B/16B 参数的混合专家模型(MoE),训练数据量达 5.7T tokens。我们的模型推进了当前的帕累托前沿(Pareto frontier),与现有模型相比,用更少的训练计算量实现了更好的性能。 我们开源了内存优化且通信高效的分布式 Muon 实现。同时,我们也发布了经过预训练、指令微调的模型检查点(checkpoints)以及中间检查点,以支持后续研究。 相关代码已在 [https://github.com/MoonshotAI/Moonlight](https://github.com/MoonshotAI/Moonlight) 仓库开源。 查看技术报告:Muon is Scalable for LLM Training [https://arxiv.org/abs/2502.16982](https://arxiv.org/abs/2502.16982) ## 关键要点 我们的工作在 Muon 的基础上,系统地识别并解决了其在大规模训练场景中的局限性。主要技术贡献包括: * **Muon 的有效扩展性分析**:通过深入分析,我们发现权重衰减在Muon的可扩展性中起着关键作用。此外,我们提出通过参数级别的更新尺度调整,来保持矩阵参数和非矩阵参数之间更新均方根(RMS)的一致性。这些调整显著提高了训练稳定性。 * **高效分布式实现**:我们开发了采用 ZeRO-1 风格优化的分布式版 Muon,在保持算法数学特性的同时,实现了最优的内存效率和更低的通信开销。 * **扩展性定律(Scaling Law)验证**:我们进行了扩展性研究,将 Muon 与 AdamW 的高性能基准进行对比,结果显示了Muon 的卓越性能。根据 Scaling Law 结果,Muon 在仅使用约 52% 训练计算量的情况下,就达到了与AdamW 相当的性能。 ## 性能测试 我们将基于 Muon 训练的轻量级模型命名为"Moonlight"。我们将 Moonlight 与同等规模的最先进公开模型进行了对比: LLAMA3-3B 是一个使用 9 万亿 tokens 训练的 30 亿参数密集模型 Qwen2.5-3B 是一个使用 18 万亿 tokens 训练的 30 亿参数密集模型 Deepseek-v2-Lite 是一个使用 5.7 万亿 tokens 训练的 2.4 亿/ 160 亿参数混合专家模型 *注:Qwen 2和2.5的报告中未披露其优化器信息。†报告的参数数量不包括嵌入层参数。‡我们使用完整的TriviaQA数据集测试了所有列出的模型。* ## 使用示例 ### 模型下载 | Model | #Total Params | #Activated Params | Context Length | Download Link | | ------------------ | ------------- | ----------------- | -------------- | ------------------------------------------------------------------------------- | | Moonlight | 16B | 3B | 8K | [🤗 Hugging Face](https://huggingface.co/moonshotai/Moonlight-16B-A3B) | | Moonlight-Instruct | 16B | 3B | 8K | [🤗 Hugging Face](https://huggingface.co/moonshotai/Moonlight-16B-A3B-Instruct) | ### 用Hugging Face Transformers进行推理 我们将介绍如何使用transformers库在推理阶段使用我们的模型。建议使用python=3.10、torch>=2.1.0和transformers=4.48.2作为开发环境。 对于我们的预训练模型(Moonlight): ```python theme={null} from transformers import AutoModelForCausalLM, AutoTokenizer model_path = "moonshotai/Moonlight-16B-A3B" model = AutoModelForCausalLM.from_pretrained( model_path, torch_dtype="auto", device_map="auto", trust_remote_code=True, ) tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) prompt = "1+1=2, 1+2=" inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True).to(model.device) generated_ids = model.generate(**inputs, max_new_tokens=100) response = tokenizer.batch_decode(generated_ids)[0] print(response) ``` 对于我们的指令模型(Moonlight-Instruct): ```python theme={null} from transformers import AutoModelForCausalLM, AutoTokenizer model_path = "moonshotai/Moonlight-16B-A3B-Instruct" model = AutoModelForCausalLM.from_pretrained( model_path, torch_dtype="auto", device_map="auto", trust_remote_code=True ) tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) messages = [ {"role": "system", "content": "You are a helpful assistant provided by Moonshot-AI."}, {"role": "user", "content": "Is 123 a prime?"} ] input_ids = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device) generated_ids = model.generate(inputs=input_ids, max_new_tokens=500) response = tokenizer.batch_decode(generated_ids)[0] print(response) ``` Moonlight 采用与DeepSeek-V3相同的架构,这一架构受到许多主流推理引擎的支持,如VLLM和SGLang。因此,我们的模型也可以轻松地使用这些工具进行部署。 ### 训练代码 ```shell theme={null} # train qwen-like dense model with muon python3 examples/toy_train.py --model qwen --optimizer muon --dataset openwebtext-100k --hidden_size 896 --lr 1e-3 # train qwen-like dense model with adamw python3 examples/toy_train.py --model qwen --optimizer adamw --dataset openwebtext-100k --hidden_size 896 --lr 1e-3 ``` ## 中间检查点 我们已经发布了Moonlight和Moonlight-A的中间检查点(checkpoint)以支持进一步的研究工作: [https://github.com/MoonshotAI/Moonlight/blob/master/Moonlight\_intermediate\_checkpoints.pdf](https://github.com/MoonshotAI/Moonlight/blob/master/Moonlight_intermediate_checkpoints.pdf) 一些亮点: 1. 我们可以看到使用 Muon 训练的 Moonlight 模型在数学和编程方面的表现优于使用AdamW训练的Moonlight-A。 2. 我们还可以分析 Moonlight 和 Moonlight-A 中间检查点在 SVD Entropy 和 Srank 方面的不同表现。 ## 引用 如果您觉得 Moonlight 有用或想在您的项目中使用它,请引用我们的论文: ```bibtex theme={null} @misc{liu2025muonscalablellmtraining, title={Muon is Scalable for LLM Training}, author={Jingyuan Liu and Jianlin Su and Xingcheng Yao and Zhejun Jiang and Guokun Lai and Yulun Du and Yidao Qin and Weixin Xu and Enzhe Lu and Junjie Yan and Yanru Chen and Huabin Zheng and Yibo Liu and Shaowei Liu and Bohong Yin and Weiran He and Han Zhu and Yuzhi Wang and Jianzhou Wang and Mengnan Dong and Zheng Zhang and Yongsheng Kang and Hao Zhang and Xinran Xu and Yutao Zhang and Yuxin Wu and Xinyu Zhou and Zhilin Yang}, year={2025}, eprint={2502.16982}, archivePrefix={arXiv}, primaryClass={cs.LG}, url={https://arxiv.org/abs/2502.16982}, } ``` 了解更多: Muon优化器赏析:从向量到矩阵的本质跨越(By 苏剑林) [https://kexue.fm/archives/10592](https://kexue.fm/archives/10592) Muon续集:为什么我们选择尝试Muon?(By 苏剑林) [https://kexue.fm/archives/10739](https://kexue.fm/archives/10739) # 账号与财务 Source: https://platform.kimi.com/docs/guide/account-and-payments 查看 Kimi 开放平台的充值、余额、赠送金、发票、账单和企业实名认证等账号与财务问题。 * 个人用户充值:请先进行个人认证,然后在用户充值页面进行在线充值,在线充值支持微信/支付宝扫码支付两种方式,充值成功后会按照您的累积充值金额进行用户等级调整; * 企业用户充值:请先进行企业认证,企业认证通过后,您可以选择以下两种方式充值: 1. **在线充值**:支持微信/支付宝扫码支付,充值成功后立即到账,充值成功后会按照您的累积充值金额进行用户等级调整; 2. **银行对公汇款**:平台会为您提供专属收款账号,请使用与实名认证主体一致的银行账户进行汇款。线下对公汇款预计1-5个工作日到账(具体到账时间以银行的实际到账时间为准),我方银行账户到账后,转账充值金额将在10分钟左右自动转入您的账户,充值成功后会按照您的累积充值金额进行用户等级调整。 在使用大模型进行代码生成时,由于模型的随机性和复杂性,可能需要多次尝试才能生成符合预期的代码。编程工具会自动进行多轮重试和调用,这可能导致 token 用量快速增长。为了更好地控制成本和使用体验,我们建议您注意以下几点: * **预算控制** * **设置日消费上限**:在使用前,请前往 [Kimi 开放平台项目设置](https://platform.kimi.com/console/projects/settings) 配置「项目日消费预算」。一旦达到预算上限,系统将自动拒绝该项目下所有 API 请求(注:由于计费延迟,限制生效可能有约 10 分钟延迟)。设置方式请见 [组织管理最佳实践](/docs/guide/org-best-practice) * **余额预警提醒**:建议开启账户余额提醒功能。当账户余额低于预设金额(默认 ¥20)时,系统会通过短信通知您及时充值。 * **使用建议** * 建议先用较短上下文明确提示词测试,再逐步加入完整业务上下文。 * **持续监控**:建议在编程软件运行期间保持监控,及时处理异常情况,避免因无限循环或过度重试造成不必要的资源消耗。 * **模型选择**:如果对成本敏感,可以选择使用 `kimi-k2.6` 模型。 为了整体资源分配的公平性,同时防止恶意攻击,我们目前将基于账户的累计充值金额进行速率限制,具体如下表,如有更高需求请填写 [提升速率表单](https://platform.kimi.com/contact-sales),详细信息请查看 [充值与限速](https://platform.kimi.com/docs/pricing/limits) 页面。 * 个人:请登录我们的 [用户中心](https://platform.kimi.com/console/auth) 进行实名认证; * 企业:请登录我们的 [用户中心](https://platform.kimi.com/console/auth) 进行企业认证,请提前准备企业相关信息(企业名称,与企业名称相同的银行账号,统一社会信用代码),平台会向您公司账户打款随机金额,用于验证企业信息。请联系贵公司财务确认,填入来自北京月之暗面科技有限公司的打款金额,金额匹配成功后,企业认证通过。 * 认证成功后会为您赠送 15 元代金券,可用于支持该代金券的模型(Kimi K3 不支持使用新用户代金券,详见下方说明)。 不可以。模型发布后,国内注册并完成认证的用户获赠的 15 元代金券不可用于体验 Kimi K3,请充值后解锁使用。 Kimi K3 上下文长度为 1M tokens,计费不按上下文长度分段:所有用量均按量付费,输入(区分缓存命中与未命中)与输出分别按统一单价计费,详见 [Kimi K3 定价](/docs/pricing/chat-k3)。 * Kimi 销售团队可为企业调用 Kimi API 提供更多资源与支持,请前往 [https://platform.kimi.com/contact-sales](https://platform.kimi.com/contact-sales) 填写表单联系销售 * Kimi 智能助手现已推出 Kimi Business 企业会员权益,请前往 [https://www.kimi.com/membership/pricing](https://www.kimi.com/membership/pricing) 线上下单 * 认证状态仅支持个人认证变更为企业认证,变更成功后,账号充值请按照企业账号充值的指引操作; * 不支持企业认证账号变更。 * 平台支持按消耗金额或充值金额开具发票,请线上发起开票申请 [发票管理](https://platform.kimi.com/console/invoice) * 个人认证可以开具个人抬头/公司抬头发票;企业认证仅以开具企业认证主体抬头的发票 * 开票主体为北京月之暗面科技有限公司;发票项目名称为“技术服务费”,税收分类编码简称为“生产生活服务”,税率为 6%。发票票面显示为 `*生产生活服务*技术服务费`。 * 支持账号密码设置,密码设置成功后,可以通过手机号/密码登陆和账号名/密码登陆。[账号密码设置](https://platform.kimi.com/profile) * 支持手机号换绑。换绑的目标手机号需未注册过 Kimi 开放平台或 Kimi 智能助手。 * 不支持账号注销。 # AI 可读文档 Source: https://platform.kimi.com/docs/guide/ai-readable-docs 通过 llms.txt、llms-full.txt、OpenAPI Schema 和单页 Markdown,将 Kimi 开放平台文档提供给 AI 编程助手、企业机器人或 RAG 系统。 Kimi 开放平台文档站提供多种机器可读入口。你可以把整站文档直接交给 AI 编程助手、企业机器人或 RAG 系统使用,无需逐页抓取网页。 ## 全站入口 | 入口 | 地址 | 说明 | | :------------- | :------------------------------------------------------------------------------------------- | :------------------------------------------------- | | llms.txt | [https://platform.kimi.com/docs/llms.txt](https://platform.kimi.com/docs/llms.txt) | 全站页面索引,目录式结构,体积约 9 KB。适合先让模型了解站点结构,再按需读取具体页面 | | llms-full.txt | [https://platform.kimi.com/docs/llms-full.txt](https://platform.kimi.com/docs/llms-full.txt) | 全站文档的完整 Markdown,体积约 700 KB。适合作为完整上下文或 RAG 语料一次性读入 | | OpenAPI Schema | [https://platform.kimi.com/docs/openapi.json](https://platform.kimi.com/docs/openapi.json) | API 接口规范原文(OpenAPI 3.1)。适合对接 API、生成调用代码 | ## 单页 Markdown 任意文档页面在 URL 后加 `.md` 后缀,即可获得该页的 Markdown 版本,例如 [https://platform.kimi.com/docs/overview.md](https://platform.kimi.com/docs/overview.md)。页面右上角菜单也提供 Copy Page(复制本页 Markdown)和「在 Kimi 中打开」入口,适合只关心个别页面的场景。 复制页面菜单:复制页面、以 Markdown 格式查看、在 Kimi 中打开 ## 推荐使用方式 * **AI 编程助手**(Claude Code、Cursor 等):把 llms.txt 的地址加入规则或上下文文件,模型会先了解站点结构,再按需读取具体页面; * **RAG 全量索引、企业机器人知识源**:抓取 llms-full.txt,一次获得全站内容,按页面切分后建立索引; * **对接 API、生成调用代码**:直接使用 openapi.json,无需从文档页面提取接口信息。 英文文档站同样提供以上入口。 # 自动断线重连 Source: https://platform.kimi.com/docs/guide/auto-reconnect 为 Kimi API 流式请求实现断线重连,并结合 Partial Mode 从中断处继续生成。 因为并发限制、复杂的网络环境等情况,一些时候我们的连接可能因为一些预期外的状况而中断,通常这种偶发的中断并不会持续很久,我们希望在这种情况下业务依然可以稳定运行,使用简单的代码即可实现断线重连的需求。 本页示例默认使用最新模型 `kimi-k3`。K3 使用请求顶层 `reasoning_effort` 配置推理强度(支持 `"low"` / `"high"` / `"max"`,默认 `"max"`)。换用 `kimi-k2.6`、`kimi-k2.5` 等其他模型时,只需替换 `model` 字段,但各模型的参数配置存在差异,详见[模型参数参考](/docs/api/models-overview)。 ```python theme={null} import os from openai import OpenAI import time client = OpenAI( api_key=os.environ["MOONSHOT_API_KEY"], base_url = "https://api.moonshot.cn/v1", ) def chat_once(msgs): response = client.chat.completions.create( model = "kimi-k3", messages = msgs ) return response.choices[0].message.content def chat(input: str, max_attempts: int = 100) -> str | None: messages = [ {"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"}, ] # 我们将用户最新的问题构造成一个 message(role=user),并添加到 messages 的尾部 messages.append({ "role": "user", "content": input, }) st_time = time.time() for i in range(max_attempts): print(f"Attempts: {i+1}/{max_attempts}") try: response = chat_once(messages) ed_time = time.time() print("Query Successful!") print(f"Query Time: {ed_time-st_time}") return response except Exception as e: print(e) time.sleep(1) continue print("Query Failed.") return print(chat("你好,请给我讲一个童话故事。")) ``` 上面的代码实现了一个简单的断线重连功能,最多重复 100 次,每次连接之间等待 1s,你也可以根据具体的需求更改这些数值以及满足重试的条件。 # 基准测试最佳实践 Source: https://platform.kimi.com/docs/guide/benchmark-best-practice 使用推荐参数、采样次数、流式请求和重试策略,对 Kimi 模型进行可复现的基准评测。 基准测试是一项对稳定性要求极高的工程任务。 您需要与模型进行大量交互,即使是微小的系统偏差或网络波动也可能影响结果的准确性。 我们总结了以下最佳实践,帮助您的评估结果可复现且可信。 **重点提示:** * 对于下表中未提到的 benchmark 或其他闭源 benchmark,推荐 temperature = 1.0,stream = true,top\_p = 0.95 * Reasoning 相关的 benchmark: maxtoken 推荐设置到 128k,并且总测试题量至少要到 500-1000 题才会获得一个相对低的测试方差。(比如 AIME2025 建议测试 32 次 30\*32=960 题) * Code 相关的 benchmark:maxtoken 推荐设置到 256k * Agentic Task 相关的 benchmark:如果需要 multi hop search,maxtoken 推荐设置到 256k 并配合 context management 机制;其他类型的 agentic task 推荐至少设置 16-64k 的 maxtoken ## K2.6 模型基准测试推荐参数
Benchmark 分类 Benchmark Temperature Max token 推荐设置 推荐测试次数 Top-P 其他
Multi-modal MMMU-Pro 推荐设置:1.0 max tokens = 96k 3次 top\_p=0.95 thinking=
MMMU-Pro w/ python 推荐设置:1.0 per step tokens = 64k;
total max tokens = 256k
3次 top\_p=0.95 推荐max steps = 50
thinking=
CharXiv (RQ) 推荐设置:1.0 max tokens = 96k 3次 top\_p=0.95 thinking=
CharXiv (RQ) w/ python 推荐设置:1.0 per step tokens = 64k;
total max tokens = 256k
3次 top\_p=0.95 推荐max steps = 50
thinking=
MathVision 推荐设置:1.0 max tokens = 96k 3次 top\_p=0.95 thinking=
MathVision w/ python 推荐设置:1.0 per step tokens = 64k;
total max tokens = 256k
3次 top\_p=0.95 推荐max steps = 50
thinking=
V\* w/ python 推荐设置:1.0 per step tokens = 64k;
total max tokens = 256k
3次 top\_p=0.95 推荐max steps = 50
thinking=
Agent HLE-Full w/ tools 推荐设置:1.0 per step tokens = 48k;
total max tokens = 256k
1次 top\_p=0.95 推荐max steps = 300
thinking=
BrowseComp 推荐设置:1.0 per step tokens = 48k;
total max tokens = 256k
1次 top\_p=0.95 推荐max steps = 300
thinking=
DeepSearchQA 推荐设置:1.0 per step tokens = 48k;
total max tokens = 256k
1次 top\_p=0.95 推荐max steps = 300
thinking=
WideSearch 推荐设置:1.0 per step tokens = 48k;
total max tokens = 256k
4次 top\_p=0.95 推荐max steps = 300
thinking=
Toolathlon 推荐设置:1.0 per step tokens = 48k;
total max tokens = 256k
4次 top\_p=0.95 推荐max steps = 300
thinking=
MCPMark 推荐设置:1.0 per step tokens = 48k;
total max tokens = 256k
4次 top\_p=0.95 推荐max steps = 300
thinking=
Claw Eval 推荐设置:1.0 per step tokens = 48k;
total max tokens = 256k
4次 top\_p=0.95 推荐max steps = 300
thinking=
APEX-Agents 推荐设置:1.0 per step tokens = 48k;
total max tokens = 256k
4次 top\_p=0.95 推荐max steps = 300
thinking=
Coding Terminal-Bench 2.0 (Terminus-2) 推荐设置:1.0 max tokens = 256k 3次 top\_p=0.95 thinking=
SWE-Bench Pro 推荐设置:1.0 per step tokens = 32k;
total max tokens = 256k
5次 top\_p=0.95 推荐max steps = 300
thinking=
SWE-Bench Multilingual 推荐设置:1.0 per step tokens = 32k;
total max tokens = 256k
5次 top\_p=0.95 推荐max steps = 300
thinking=
SWE-Bench Verified 推荐设置:1.0 per step tokens = 32k;
total max tokens = 256k
5次 top\_p=0.95 推荐max steps = 300
thinking=
SciCode 推荐设置:1.0 max tokens = 96k 4次 top\_p=0.95 thinking=
OJBench (python) 推荐设置:1.0 max tokens = 96k 8次 top\_p=0.95 thinking=
LiveCodeBench (v6) 推荐设置:1.0 max tokens = 96k 1次 top\_p=0.95 thinking=
Math AIME 2026 推荐设置:1.0 max tokens = 96k 32次 top\_p=0.95 thinking=
HMMT 2026 (Feb) 推荐设置:1.0 max tokens = 96k 32次 top\_p=0.95 thinking=
IMO-AnswerBench 推荐设置:1.0 max tokens = 96k 4次 top\_p=0.95 thinking=
Knowledge HLE-Full 推荐设置:1.0 max tokens = 96k 1次 top\_p=0.95 thinking=
GPQA-Diamond 推荐设置:1.0 max tokens = 96k 8次 top\_p=0.95 thinking=
## K2.5 模型基准测试推荐参数
Benchmark 分类 Benchmark Temperature Max token 推荐设置 推荐测试次数 Top-P 其他
Multi-modal MMMU-Pro 推荐设置:1.0 max token = 64k 3次 top\_p=0.95 thinking=
CharXiv (RQ) 推荐设置:1.0 max token = 64k 3次 top\_p=0.95 thinking=
MathVision 推荐设置:1.0 max token = 64k 3次 top\_p=0.95 thinking=
MathVista 推荐设置:1.0 max token = 64k 3次 top\_p=0.95 thinking=
OCRBench 推荐设置:1.0 max token = 64k 3次 top\_p=0.95 thinking=
ZeroBench 推荐设置:1.0 max token = 64k 3次 top\_p=0.95 thinking=
WorldVQA 推荐设置:1.0 max token = 64k 3次 top\_p=0.95 thinking=
InfoVQA (val) 推荐设置:1.0 max token = 64k 3次 top\_p=0.95 thinking=
SimpleVQA 推荐设置:1.0 max token = 64k 3次 top\_p=0.95 thinking=
ZeroBench w/ tools 推荐设置:1.0 max token = 64k 3次 top\_p=0.95 推荐max steps = 30
thinking=
Code SWE系列 推荐设置:1.0 per step tokens = 16k;
total max token = 256k
5次 top\_p=0.95 thinking=
Lcb + OJBench 推荐设置:1.0 max tokens = 128k 1次 top\_p=0.95 thinking=
TerminalBench 推荐设置:1.0 max tokens = 128k 3次 top\_p=0.95 thinking=
Reasoning AIME2025 no tools 推荐设置:1.0 total max tokens = 96k 32次 top\_p=0.95 thinking=
AIME2025 w/ tools 推荐设置:1.0 per turn tokens = 96k;
total max tokens = 96k
32次 top\_p=0.95 thinking=
推荐 max steps = 120
HLE no tools 推荐设置:1.0 max tokens = 96k 1次 top\_p=0.95 thinking=
HLE w/ tools 推荐设置:1.0 total max tokens = 128k;
per step tokens = 48k
1次 top\_p=0.95 thinking=
推荐 max steps = 120
HLE heavy 推荐设置:1.0 total max tokens = 128k;
per step tokens = 48k
1次 top\_p=0.95 thinking=
推荐max steps = 200
parallel n=8
HMMT2025 no tools 推荐设置:1.0 max tokens = 96k 32次 top\_p=0.95 thinking=
HMMT2025 w/tools 推荐设置:1.0 per step tokens = 96k;
total tokens = 96k
32次 top\_p=0.95 thinking=
推荐 max steps = 120
IMO-AnswerBench 推荐设置:1.0 max tokens = 96k 3次 top\_p=0.95 thinking=
GPQA-Diamond 推荐设置:1.0 max tokens = 96k 8次 top\_p=0.95 thinking=
Agentic Search Task BrowseComp/ BrowseComp-ZH/Seal-0/ Frames 推荐设置:1.0 per step tokens = 24k;
total max tokens = 256k
4次 top\_p=0.95 thinking=
推荐max steps = 250
推荐使用 context management 机制以防止上下文过长,保证足够的工具调用
在 system prompt 中带上今天的日期,并让模型在不确定时进行搜索
Agentic Task Tau 推荐设置:1.0 >=16k 4次 top\_p=0.95 thinking=
推荐max steps = 100
对于第三方服务提供商,请参考 Kimi Vendor Verifier (KVV) 选择高精度服务。详情: [https://kimi.com/blog/kimi-vendor-verifier.html](https://kimi.com/blog/kimi-vendor-verifier.html) **tool use参数兼容性** 当使用工具时,若thinking设置值为`{"type": "enabled"}`,请注意,为了确保模型的性能,会有以下约束: * 为了避免思考内容与指定的 `tool_choice` 冲突,`tool_choice` 只能使用"auto"和"none"(默认值为"auto"),取任何其他值将会报错; * 在多步工具调用过程中,您必须在将本轮会话中工具调用时assistant message里的 `reasoning_content` 保留在上下文当中,否则会报错; * 官方内置的 builtin 的联网搜索 `$web_search` 工具暂时与 Kimi K2.5/K2.6 思考模式不兼容,可以选择先关闭思考模式后使用联网搜索工具 `$web_search`。 您可以参考[如何使用思考模式](/docs/guide/use-thinking-models)正确使用工具调用。 ## K2-Thinking 系列模型基准测试推荐参数
Benchmark 分类 Benchmark Temperature Max token 推荐设置 推荐测试次数 其他
Code SWE系列 推荐设置:0.7;
可接受的其他设置:1.0
per step tokens = 16k;
total max token = 256k
5次
Lcb + OJBench 推荐设置:1.0 max tokens = 128k 1次
TerminalBench 推荐设置:1.0 max tokens = 128k 3次
Reasoning AIME2025 no tools 推荐设置:1.0 total max tokens = 96k 32次
AIME2025 w/ tools 推荐设置:1.0 per step tokens = 48k;
total max tokens = 128k
16次 推荐 max steps = 120
HLE no tools 推荐设置:1.0 max tokens = 96k 1次
HLE w/ tools 推荐设置:1.0 total max tokens = 128k;
per step tokens = 48k
1次 推荐 max steps = 120
HLE heavy 推荐设置:1.0 total max tokens = 128k;
per step tokens = 48k
1次 推荐max steps = 200
parallel n=8
HMMT2025 no tools 推荐设置:1.0 max tokens = 96k 32次
HMMT2025 w/tools 推荐设置:1.0 per step tokens = 96k;
total tokens = 96k
32次 推荐 max steps = 120
IMO-AnswerBench 推荐设置:1.0 max tokens = 96k 3次
GPQA-Diamond 推荐设置:1.0 max tokens = 96k 8次
Agentic Search Task BrowseComp/ BrowseComp-ZH/Seal-0/ Frames 推荐设置:1.0 per step tokens = 24k;
total max tokens = 256k
4次 推荐max steps = 250
推荐使用 context management 机制以防止上下文过长,保证足够的工具调用
在 system prompt 中带上今天的日期,并让模型在不确定时进行搜索
Agentic Task Tau 推荐设置:0.0 >=16k 4次 推荐max steps = 100
## API 推荐参数与注意事项 * 强烈推荐使用官方 API 来做 benchmark 测试,部分第三方 API 可能存在精度偏差 * 使用推荐的模型进行测试: * 对于 K2.6:使用 **`kimi-k2.6`** 进行测试 * 对于 K2.5:使用 **`kimi-k2.5`** 进行测试 * 对于 K2 系列:使用 **`kimi-k2-thinking-turbo`** 进行快速推理 * **必须设置:** `stream = true` * 非流式模式可能会导致随机的连接中断,难以控制 * **当前 API 默认设置:** * Kimi K2.6: * default max\_tokens = 32768 * default thinking = `{"type": "enabled", "keep": null}` * default temperature = 1.0 * default top\_p = 0.95 * default n = 1 * default presence\_penalty = 0.0 * default frequency\_penalty = 0.0 * Kimi K2 Thinking: * default temp = 1.0 * default max token = 64000 * Kimi K2.5: * default max\_tokens = 32768 * default thinking = `{"type": "enabled"}` * default temperature = 1.0 * default top\_p = 0.95 * default n = 1 * default presence\_penalty = 0.0 * default frequency\_penalty = 0.0 * **超时设置:** * 使用 `stream = false` 时,`api.moonshot.cn` 超时时间为 **2 小时**,但某些 ISP 可能会提前终止连接 * 因此我们建议您设置 `stream = true` * **并发控制:** * 保持较低的并发数以避免速率限制 * **重试逻辑** 是必须的: * 处理服务器过载情况 * 处理因随机服务器问题导致的意外完成原因 * 处理复杂的网络问题 ## FAQ **Q1:** temperature 取值对不同模型是一致的吗? **A:** 不同模型系列的 temperature 设置不同: * k2.6 模型:temperature = 1.0 * k2.5 模型:temperature = 1.0 * k2-thinking 系列模型:推荐使用 temperature=1.0 * k2 其他系列模型:推荐使用 temperature=0.6 **Q2:** 为什么要用 stream=true? **A:** 长输出可能需要若干分钟。 空闲的TCP连接有可能会被防火墙、负载均衡器和NAT网关等各种中间网络设备终止。 流式传输能保持连接活跃,显著提高可靠性。 生产数据显示,stream=false 的请求失败率远高于 stream=true。 **Q3:** 我应该使用多少并发数? **A:** 您的API账户有特定的速率限制,参考[充值与限速说明](/docs/pricing/limits)。 建议从较低的并发数开始。 如果遇到限流导致的 429 错误,则说明并发过高。 评估的准确性比速度更重要,请找到一个能让您保持在速率限制内合适的并发水平。 **Q5:** 为什么要重试某些错误? **A:** 即使使用流式传输,发起请求时仍可能因为网络抖动等问题导致失败。 请对临时性故障(网络问题、服务器过载、速率限制)进行重试,以避免不必要的错误。 **Q6:** 为什么多轮对话和多步骤任务必须带上完整上下文和思考过程? **A:** 完整上下文能帮助模型在多步推理过程中保持推理的连贯性,特别是在工具调用过程中。 如果省略思考过程,后续回复可能会不一致或质量下降,从而影响性能评估的准确性。 ## 联系我们 如果您遇到任何问题,请发送邮件至 [api-service@moonshot.ai](mailto:api-service@moonshot.ai) 获得进一步的技术支持。 # 在 Claude Code 中使用 Kimi Source: https://platform.kimi.com/docs/guide/claude-code-kimi 通过环境变量和 Kimi API 配置 Claude Code,并了解模型选择、验证方法与兼容性边界。 > [Claude Code](https://claude.com/product/claude-code) 是 Anthropic 提供的编程 Agent 产品,界面、配置项和支持能力可能随版本变化。本文说明一种通用接入方案:通过环境变量将 Claude Code 的模型请求转发到 Kimi API。 ## 安装 Claude Code 已安装的用户可跳过。执行以下命令安装: ```shell theme={null} npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com ``` MacOS 和 Linux: ```shell theme={null} # 安装 nodejs curl -fsSL https://fnm.vercel.app/install | bash # 新开一个 terminal,让 fnm 生效 fnm install 24.3.0 fnm default 24.3.0 fnm use 24.3.0 ``` Windows(PowerShell): ```powershell theme={null} # 右键按 Windows 按钮,点击「终端」,然后依次执行 winget install OpenJS.NodeJS Set-ExecutionPolicy -Scope CurrentUser RemoteSigned # 关闭终端窗口,新开一个终端窗口 ``` 安装 Node.js 后,执行一次初始化配置: ```shell theme={null} node --eval " const fs = require('fs'); const path = require('path'); const os = require('os'); const homeDir = os.homedir(); const filePath = path.join(homeDir, '.claude.json'); if (fs.existsSync(filePath)) { const content = JSON.parse(fs.readFileSync(filePath, 'utf-8')); fs.writeFileSync(filePath, JSON.stringify({ ...content, hasCompletedOnboarding: true }, null, 2), 'utf-8'); } else { fs.writeFileSync(filePath, JSON.stringify({ hasCompletedOnboarding: true }, null, 2), 'utf-8'); }" ``` 如果您之前通过第三方工具或手动修改过 `~/.claude/settings.json`,其 `env` 字段中残留的旧配置会 **覆盖** 终端里 export 的同名环境变量,导致新配置不生效或模型请求被静默改写。建议先执行以下脚本清理: ```shell theme={null} node --eval " const fs = require('fs'); const path = require('path'); const os = require('os'); const settingsPath = path.join(os.homedir(), '.claude', 'settings.json'); if (fs.existsSync(settingsPath)) { const content = JSON.parse(fs.readFileSync(settingsPath, 'utf-8')); if (content && typeof content === 'object' && content.env && typeof content.env === 'object') { for (const key of [ 'ANTHROPIC_BASE_URL', 'ANTHROPIC_API_KEY', 'ANTHROPIC_AUTH_TOKEN', 'ANTHROPIC_MODEL', 'ANTHROPIC_SMALL_FAST_MODEL', 'CLAUDE_CODE_SUBAGENT_MODEL', 'ANTHROPIC_DEFAULT_OPUS_MODEL', 'ANTHROPIC_DEFAULT_OPUS_MODEL_NAME', 'ANTHROPIC_DEFAULT_SONNET_MODEL', 'ANTHROPIC_DEFAULT_SONNET_MODEL_NAME', 'ANTHROPIC_DEFAULT_HAIKU_MODEL', 'ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME', 'ANTHROPIC_DEFAULT_FABLE_MODEL', 'ANTHROPIC_DEFAULT_FABLE_MODEL_NAME', 'ENABLE_TOOL_SEARCH', 'CLAUDE_CODE_AUTO_COMPACT_WINDOW', 'CLAUDE_CODE_EFFORT_LEVEL', ]) { delete content.env[key]; } fs.writeFileSync(settingsPath, JSON.stringify(content, null, 2), 'utf-8'); } }" ``` 该脚本仅删除 `env` 中的端点、密钥与模型相关变量,不影响 `settings.json` 中的其他配置(如权限、主题等)。 另外,请检查 `~/.zshrc`、`~/.bashrc` 等 shell 配置文件中是否残留旧的 `ANTHROPIC_*` export(Windows 用户请检查用户环境变量),如有请一并删除,否则同样会干扰新配置。 ## 获取 Kimi API Key 访问 [Kimi 开放平台](https://platform.kimi.com/console/api-keys) 创建 API Key(选择 default 默认项目),替换下文中的 `YOUR_MOONSHOT_API_KEY`。 ## 配置环境变量 以下两种方式 **任选其一,不要混用**:方式一立即生效但仅对当前终端会话有效;方式二写入配置文件,长期生效。 ### 方式一:终端环境变量(仅当前会话) MacOS 和 Linux: ```shell theme={null} export ANTHROPIC_BASE_URL="https://api.moonshot.cn/anthropic" export ANTHROPIC_AUTH_TOKEN="${YOUR_MOONSHOT_API_KEY}" export ANTHROPIC_MODEL="kimi-k3[1m]" export ANTHROPIC_DEFAULT_OPUS_MODEL="kimi-k3[1m]" export ANTHROPIC_DEFAULT_SONNET_MODEL="kimi-k3[1m]" export ANTHROPIC_DEFAULT_HAIKU_MODEL="kimi-k3[1m]" export ANTHROPIC_DEFAULT_FABLE_MODEL="kimi-k3[1m]" export CLAUDE_CODE_SUBAGENT_MODEL="kimi-k3[1m]" export CLAUDE_CODE_AUTO_COMPACT_WINDOW="1048576" export CLAUDE_CODE_EFFORT_LEVEL="max" claude ``` Windows(PowerShell): ```powershell theme={null} $env:ANTHROPIC_BASE_URL="https://api.moonshot.cn/anthropic"; $env:ANTHROPIC_AUTH_TOKEN="YOUR_MOONSHOT_API_KEY" $env:ANTHROPIC_MODEL="kimi-k3[1m]" $env:ANTHROPIC_DEFAULT_OPUS_MODEL="kimi-k3[1m]" $env:ANTHROPIC_DEFAULT_SONNET_MODEL="kimi-k3[1m]" $env:ANTHROPIC_DEFAULT_HAIKU_MODEL="kimi-k3[1m]" $env:ANTHROPIC_DEFAULT_FABLE_MODEL="kimi-k3[1m]" $env:CLAUDE_CODE_SUBAGENT_MODEL="kimi-k3[1m]" $env:CLAUDE_CODE_AUTO_COMPACT_WINDOW="1048576" $env:CLAUDE_CODE_EFFORT_LEVEL="max" claude ``` ### 方式二:写入 settings.json(长期生效) 将同样的变量写入 `~/.claude/settings.json` 的 `env` 字段: ```json theme={null} { "env": { "ANTHROPIC_BASE_URL": "https://api.moonshot.cn/anthropic", "ANTHROPIC_AUTH_TOKEN": "YOUR_MOONSHOT_API_KEY", "ANTHROPIC_MODEL": "kimi-k3[1m]", "ANTHROPIC_DEFAULT_OPUS_MODEL": "kimi-k3[1m]", "ANTHROPIC_DEFAULT_SONNET_MODEL": "kimi-k3[1m]", "ANTHROPIC_DEFAULT_HAIKU_MODEL": "kimi-k3[1m]", "ANTHROPIC_DEFAULT_FABLE_MODEL": "kimi-k3[1m]", "CLAUDE_CODE_SUBAGENT_MODEL": "kimi-k3[1m]", "CLAUDE_CODE_AUTO_COMPACT_WINDOW": "1048576", "CLAUDE_CODE_EFFORT_LEVEL": "max" } } ``` 注意:`settings.json` 的 `env` 会 **覆盖** 终端里 export 的同名变量;该文件包含明文 API Key,请勿提交到 git 仓库;保存后需重启 Claude Code 生效。 ### 配置项说明 Claude Code 内部会按场景使用不同档位的模型(主对话、后台摘要、子 Agent 等),只配置部分变量会让对应场景静默失败: | 变量 | 作用 | 不配置或配置错误的影响 | | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------ | | `ANTHROPIC_BASE_URL` | 将模型请求转发到 Kimi 的 Anthropic 兼容端点 | 请求被发往 Anthropic 官方端点,鉴权失败 | | `ANTHROPIC_AUTH_TOKEN` | 使用 Kimi API Key 鉴权 | 返回 401 鉴权错误 | | `ANTHROPIC_MODEL` | 主对话使用的模型 | 使用 Claude 默认模型名,Kimi 端点无法识别,报模型不存在错误 | | `ANTHROPIC_DEFAULT_OPUS_MODEL` / `ANTHROPIC_DEFAULT_SONNET_MODEL` / `ANTHROPIC_DEFAULT_HAIKU_MODEL` / `ANTHROPIC_DEFAULT_FABLE_MODEL` | Claude Code 按任务档位选择模型时使用的模型名 | 对应档位的任务(如 haiku 档的后台标题生成、摘要)请求失败 | | `CLAUDE_CODE_SUBAGENT_MODEL` | 子 Agent 使用的模型 | 子任务请求失败或效果明显变差 | | `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | 触发自动压缩上下文的窗口大小 | 需与模型上下文一致:`kimi-k3` 为 1M(`1048576`),`kimi-k2.7-code` 为 256K(`262144`);设置过小会过早压缩丢失上下文,过大则报上下文超限错误 | | `CLAUDE_CODE_EFFORT_LEVEL` | 控制 Claude Code 的推理强度 | 设为 `max` 以获得最充分的推理;较低值可能在复杂任务上降低质量 | ## 模型与思考行为 三个模型在 Claude Code 中的实际行为差异(均经 anthropic 兼容端点实测): | 模型 | 思考行为 | 使用要点 | | ---------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------- | | `kimi-k3`(本页默认) | 默认开启思考 | 开箱即用,无需额外配置 | | `kimi-k2.7-code` | 始终开启思考 | 请求必须显式开启思考,请在 Claude Code 中保持 Thinking on(按 `Tab`)使用;未开启时请求会被拒绝(`invalid thinking: only type=enabled is allowed for this model`) | | `kimi-k2.6` | 思考可选 | 可关闭思考使用,适合对延迟敏感的简单任务 | 切换模型时,请把配置中所有模型变量的值一并替换为新模型名。 ## 确认配置是否生效 在 Claude Code 中输入 `/status` 确认配置状态: * Base URL 应显示为 `https://api.moonshot.cn/anthropic` * Model 应显示为 `kimi-k3[1m]` Claude Code 的 `/model` 菜单是内置的固定别名列表,**不会显示 Kimi 模型**,也无需在其中切换——配置是否生效以 `/status` 显示为准。 status 最后随便发送一条消息(例如 `hi`),能正常收到回复即说明端到端配置成功。 ## 开启 Thinking `kimi-k3` 默认开启思考,开箱即用。如果你切换为 `kimi-k2.7-code`,它要求请求显式开启思考:请在 Claude Code 中按 `Tab` 开启 Thinking on,看到 "Thinking on" 标识后再开始使用,否则模型会拒绝请求(`400 invalid thinking`),WebSearch 等功能也无法使用。 thinking-on 接下来就可以正常使用 Claude Code 进行开发了! ## 切换高速版模型 Kimi K2.7 Code 提供高速版 `kimi-k2.7-code-highspeed`,输出速度约为普通版的 5-6 倍。追求输出速度时,可将配置中所有模型变量的值改为 `kimi-k2.7-code-highspeed`(注意它要求显式开启思考,见「模型与思考行为」),价格详见 [K2.7 Code 模型价格](/docs/pricing/chat-k27-code)。 ## 第三方工具:cc-switch cc-switch 等社区工具可以在多套供应商配置之间切换。这类工具并非 Kimi 官方维护,其预设配置可能与本页推荐值存在差异,使用后请对照「配置项说明」逐一核对各变量取值,并用 `/status` 确认实际生效的 Base URL 与模型。 ## 常见问题 * **WebSearch 报 `400 invalid thinking: only type=enabled is allowed for this model`**:`kimi-k2.7-code` 强制思考开启,WebSearch 请求未显式开启思考时被平台拒绝。请先按 `Tab` 开启 Thinking on 再使用;仍不行可切换到 `kimi-k2.6`(思考可选,不受该限制)。`kimi-k3` 无此限制。此问题与本地配置和 cc-switch 无关。 * **WebFetch 报 `temporarily unavailable` 或无抓取结果**:当前端点暂不支持 WebFetch 抓取,与配置无关,待平台支持后恢复。临时可改为把网页内容粘贴给模型,或使用 MCP 抓取类工具替代。 检查 `ANTHROPIC_AUTH_TOKEN` 是否为有效的 Kimi API Key;如果您之前配置过 `ANTHROPIC_API_KEY`,请将其删除,避免与 `ANTHROPIC_AUTH_TOKEN` 同时存在导致冲突。 检查各模型变量的值是否拼写正确(`kimi-k3[1m]`),注意不要携带多余空格或引号。 通常是 `ANTHROPIC_DEFAULT_HAIKU_MODEL`、`ANTHROPIC_DEFAULT_FABLE_MODEL` 或 `CLAUDE_CODE_SUBAGENT_MODEL` 未配置,对应场景请求了 Kimi 端点无法识别的模型名,请对照「配置项说明」补齐。 * 检查 `~/.claude/settings.json` 的 `env` 中是否有残留旧配置(会覆盖终端环境变量),可执行上文折叠块中的清理脚本; * 终端中 export 的变量只对当前会话有效,重开终端后需要重新设置;如果写入了 `~/.zshrc` 或使用了 settings.json 方式,请确认修改后重启了 Claude Code。 请确认 `ANTHROPIC_BASE_URL` 与您创建 API Key 的平台一致,即在上文「获取 Kimi API Key」链接对应的平台创建 Key 并使用本页给出的端点。 `ANTHROPIC_AUTH_TOKEN` 设置后会优先于已保存的登录态生效,一般无需处理。可在会话中输入 `/status` 确认当前生效的凭据来源;如需清除已保存的登录,可执行 `/logout`。 # 在 Codex CLI 中使用 Kimi K3 Source: https://platform.kimi.com/docs/guide/codex-kimi 使用 CC Switch 将 Codex CLI 接入 Kimi 开放平台,配置 `kimi-k3` 并验证文本与视觉输入。 本文介绍如何通过 CC Switch,将 Codex CLI 接入 Kimi 开放平台并使用 `kimi-k3` 模型。 Codex CLI 目前支持文本和图片输入,但尚未提供原生视频输入通道,无法将视频文件直接作为多模态输入提交给模型。若仅通过 Codex CLI 的现有输入方式分析视频,可以先使用 ffmpeg 提取关键帧,并根据需要结合音频转写后交给模型处理。需要说明的是,这是 Codex CLI 输入层的限制,并非 Kimi K3 模型的能力限制——Kimi K3 API 原生支持视频输入,按 [视觉输入](/docs/guide/use-kimi-vision-model) 直接调用 `kimi-k3` 即可进行完整的视频理解,无需手动抽帧。 ## 准备工作 开始前,请完成以下准备工作。安装和账号相关操作请按照对应的官方指引完成,本文不再展开。 按照 Codex 官方文档完成安装,并至少启动一次 Codex CLI。 在 Kimi 开放平台创建并保存 API Key。 按照 CC Switch 官方指引下载并安装适合当前操作系统的版本。 CC Switch 是第三方开源工具,不属于 Kimi 开放平台。使用前,请根据所在组织的安全与合规要求进行评估;API Key 以及 Codex 的请求和响应将由其本地路由处理。 完成安装后,打开 CC Switch,再按照下面的步骤操作。 ## 第一步:开启 Codex 路由 在 CC Switch 中进入 **设置 > 路由**,然后: 1. 开启 **路由总开关**,启动本地路由服务。 2. 在 **路由启用** 区域开启 **Codex**。 开启 CC Switch 本地路由和 Codex 路由 Codex CLI 使用 Responses API,而 Kimi 开放平台提供 OpenAI 兼容的 Chat Completions API。CC Switch 的本地路由负责转换请求和流式响应,因此使用 Kimi Provider 时必须保持 CC Switch 和 Codex 路由处于运行状态。 ## 第二步:添加 Kimi Provider 1. 返回 CC Switch 主界面,选择顶部的 **Codex** Tab。 2. 点击右上角的 **+**,添加供应商。 进入 Codex Tab 并添加供应商 3. 确认当前位于 **Codex 供应商** 页面,然后在预设供应商列表中选择 **Kimi**。 选择 Kimi 预设供应商 4. 填写以下配置: | 配置项 | 值 | | ------------------ | ---------------------------- | | API 请求地址(Base URL) | `https://api.moonshot.cn/v1` | | API Key | 在 Kimi 开放平台创建的 API Key | | 默认模型 | `kimi-k3` | 5. 将默认模型改为 `kimi-k3` 后,点击 **加入映射**。 填写 Kimi API Key、请求地址和默认模型 6. 向下滚动并确认以下高级配置: | 配置项 | 值 | | ------- | ------------------------- | | 上游格式 | `Chat Completions(需开启路由)` | | 提示词缓存路由 | `自动(推荐)` | | 支持思考模式 | 开启 | | 支持推理强度 | 开启 | | 菜单显示名 | `kimi-k3` | | 实际请求模型 | `kimi-k3` | | 上下文窗口 | `1048576` | 7. 确认配置无误后,点击右下角的 **添加**。 配置 Kimi 上游格式、思考能力和模型映射 ## 第三步:启用 Kimi Provider 添加完成后返回 Codex 供应商列表,在刚添加的 Kimi Provider 上点击 **启用**。 启用 Kimi Provider 启用后,请确认: * Kimi 是 Codex Tab 中当前启用的 Provider; * CC Switch 的本地路由正在运行; * Codex 路由开关处于开启状态。 ## 第四步:启动 Codex CLI 如果 Codex CLI 已经在运行,请先退出当前会话。然后进入需要使用的项目目录,重新启动 Codex CLI: ```bash theme={null} cd /path/to/your/project codex ``` 重新启动是为了让 Codex CLI 加载 CC Switch 写入的最新 Provider 和模型配置。 启动后,先确认 Codex CLI 顶部显示的模型为 `kimi-k3`,然后发送一个简单请求: ```text theme={null} hello ``` 如果 Codex CLI 正常返回结果,并且底部状态栏显示 `kimi-k3`,说明配置已经生效。 在 Codex CLI 中验证 kimi-k3 你也可以查看 CC Switch 的路由请求数或请求日志,确认其中出现了新的 Codex 请求。 # 在 Playground 中配置 ModelScope MCP 服务器 Source: https://platform.kimi.com/docs/guide/configure-the-modelscope-mcp-server 在 Kimi Playground 中同步并启用 ModelScope 托管的 MCP 服务,让模型调用已配置的工具。 Kimi 开放平台与 ModelScope(魔搭)官方合作:在 Kimi Playground 中输入魔搭 API 令牌,即可一键同步账号下所有已配置托管的 MCP 服务。需要让 Playground 中的模型调用 MCP 工具时,按本页完成同步与启用即可。 ## 同步魔搭托管的 MCP 服务 登录 Kimi Playground([https://platform.kimi.com/playground),确保可以使用](https://platform.kimi.com/playground),确保可以使用) Kimi K2 模型进行基本对话。 MCP 服务在「MCP 服务器设置」中添加,Playground 默认已选中 ModelScope 作为 MCP 服务提供商。如果之前未使用过 ModelScope MCP 广场,先参考 [ModelScope 官方文档](https://modelscope.cn/mcp/kimi-playground) 选择并托管 MCP 服务;也可以在 ModelScope 社区发现海量 MCP 服务器。 ### 打开 MCP 服务器设置 点击配置按钮,进入「MCP 服务器设置」: mcp-server-setting ### 填入魔搭 API 令牌并同步 在弹出的面板中选择同步外部平台: syc API 令牌可在[魔搭首页-访问令牌](https://modelscope.cn/my/myaccesstoken)页面获取: keys 获取令牌后,粘贴到步骤 3 的空格中,点击「开始同步」: start-syc 同步完成后,所有已配置连接的魔搭 Hosted MCP 服务会出现在 Kimi Playground 的可用 MCP 服务列表中: mcp-list ### 增量同步 MCP 服务 后续在 ModelScope MCP 广场新增或删除托管 MCP 服务后,在"设置-MCP 服务器-同步服务器"中点击同步按钮,即可增量更新: add-mcp ## 在对话中启用 MCP 服务 同步完成后,Kimi Playground 页面左侧会显示已导入的「MCP 服务列表」,在其中多选并启用本次对话需要使用的 MCP 服务: manage-mcp 例如,在列表中启用高德地图相关的 MCP 服务,即可让助手帮你规划行程: maps # 配置多轮对话参数 Source: https://platform.kimi.com/docs/guide/engage-in-multi-turn-conversations-using-kimi-api 在无状态的 Kimi API 中维护消息历史、控制上下文长度,并正确构建多轮对话请求。 与 Kimi 智能助手不同,Kimi API 是 **无状态** 的,本身没有记忆功能:多次请求之间,模型不知道你前一次请求的内容,也不会记住任何上下文——上一次你告诉它今年 27 岁,下一次请求它并不知情。要实现多轮对话,需要手动维护每次请求的上下文(Context),把历史消息随下一次请求一起发送,让模型能看到此前聊过的内容。 本页示例默认使用最新模型 `kimi-k3`。K3 使用请求顶层 `reasoning_effort` 配置推理强度(支持 `"low"` / `"high"` / `"max"`,默认 `"max"`)。换用 `kimi-k2.6`、`kimi-k2.5` 等其他模型时,只需替换 `model` 字段,但各模型的参数配置存在差异,详见[模型参数参考](/docs/api/models-overview)。 ## 用 messages 列表为模型补上记忆 以下示例改造自上一章节,演示如何通过维护 `messages` 列表让模型拥有记忆:每轮对话把用户的新消息(role=user)和模型的回复(role=assistant)都追加到列表中,再整体随请求发送。实现要点已以注释形式标注在代码中: ```python theme={null} import os from openai import OpenAI client = OpenAI( api_key = os.environ["MOONSHOT_API_KEY"], # 运行前请设置 MOONSHOT_API_KEY 环境变量 base_url = "https://api.moonshot.cn/v1", ) # 我们定义一个全局变量 messages,用于记录我们和 Kimi 大模型产生的历史对话消息 # 在 messages 中,既包含我们向 Kimi 大模型提出的问题(role=user),也包括 Kimi 大模型给我们的回复(role=assistant) # 当然,也包括初始的 System Prompt(role=system) # messages 中的消息按时间顺序从小到大排列 messages = [ {"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"}, ] def chat(input: str) -> str: """ chat 函数支持多轮对话,每次调用 chat 函数与 Kimi 大模型对话时,Kimi 大模型都会"看到"此前已经 产生的历史对话消息,换句话说,Kimi 大模型拥有了记忆。 """ global messages # 我们将用户最新的问题构造成一个 message(role=user),并添加到 messages 的尾部 messages.append({ "role": "user", "content": input, }) # 携带 messages 与 Kimi 大模型对话 completion = client.chat.completions.create( model="kimi-k3", messages=messages ) # 通过 API 我们获得了 Kimi 大模型给予我们的回复消息(role=assistant) assistant_message = completion.choices[0].message # 为了让 Kimi 大模型拥有完整的记忆,我们必须将 Kimi 大模型返回给我们的消息也添加到 messages 中 messages.append(assistant_message) return assistant_message.content print(chat("你好,我今年 27 岁。")) print(chat("你知道我今年几岁吗?")) # 在这里,Kimi 大模型根据此前的上下文信息,将会知道你今年的年龄是 27 岁 ``` ```js theme={null} const OpenAI = require("openai") const client = new OpenAI({ apiKey: process.env.MOONSHOT_API_KEY, // 运行前请设置 MOONSHOT_API_KEY 环境变量 baseURL: "https://api.moonshot.cn/v1", }); // 我们定义一个全局变量 messages,用于记录我们和 Kimi 大模型产生的历史对话消息 // 在 messages 中,既包含我们向 Kimi 大模型提出的问题(role=user),也包括 Kimi 大模型给我们的回复(role=assistant) // 当然,也包括初始的 System Prompt(role=system) // messages 中的消息按时间顺序从小到大排列 let messages = [ { role: "system", content: "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。", }, ]; async function chat(input) { /** * chat 函数支持多轮对话,每次调用 chat 函数与 Kimi 大模型对话时,Kimi 大模型都会"看到"此前已经 * 产生的历史对话消息,换句话说,Kimi 大模型拥有了记忆。 */ // 我们将用户最新的问题构造成一个 message(role=user),并添加到 messages 的尾部 messages.push({ role: "user", content: input, }); // 携带 messages 与 Kimi 大模型对话 const completion = await client.chat.completions.create({ model: "kimi-k3", messages: messages }); // 通过 API 我们获得了 Kimi 大模型给予我们的回复消息(role=assistant) const assistantMessage = completion.choices[0].message; // 为了让 Kimi 大模型拥有完整的记忆,我们必须将 Kimi 大模型返回给我们的消息也添加到 messages 中 messages.push(assistantMessage); return assistantMessage.content; } // 使用示例 (async () => { console.log(await chat("你好,我今年 27 岁。")); console.log(await chat("你知道我今年几岁吗?")); // 在这里,Kimi 大模型根据此前的上下文信息,将会知道你今年的年龄是 27 岁 })(); ``` 要点回顾: * Kimi API 本身没有上下文记忆功能,需要通过 `messages` 参数手动把"之前聊了什么"告知模型; * `messages` 中既要存用户提出的问题(role=user),也要存模型的回复(role=assistant)。 ## 截断历史消息,控制上下文长度 随着 `chat` 调用次数增多,`messages` 列表不断增长,每次请求消耗的 Tokens 也随之增加,最终列表中的消息会超出模型支持的上下文窗口。建议用某种策略把 `messages` 控制在可控范围内,例如每次只保留最新的 20 条消息作为本次请求的上下文。 以下示例演示如何用 `make_messages` 函数控制每次请求的消息数量(默认保留最新 20 条),注意它如何保证截断后 System Messages 仍然留在列表中: ```python theme={null} import os from openai import OpenAI client = OpenAI( api_key = os.environ["MOONSHOT_API_KEY"], # 运行前请设置 MOONSHOT_API_KEY 环境变量 base_url = "https://api.moonshot.cn/v1", ) # 我们将 System Messages 单独放置在一个列表中,这是因为每次请求都应该携带 System Messages system_messages = [ {"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"}, ] # 我们定义一个全局变量 messages,用于记录我们和 Kimi 大模型产生的历史对话消息 # 在 messages 中,既包含我们向 Kimi 大模型提出的问题(role=user),也包括 Kimi 大模型给我们的回复(role=assistant) # messages 中的消息按时间顺序从小到大排列 messages = [] def make_messages(input: str, n: int = 20) -> list[dict]: """ 使用 make_messaegs 控制每次请求的消息数量,使其保持在一个合理的范围内,例如默认值是 20。在构建消息列表 的过程中,我们会先添加 System Prompt,这是因为无论如何对消息进行截断,System Prompt 都是必不可少 的内容,再获取 messages —— 即历史记录中,最新的 n 条消息作为请求使用的消息,在大部分场景中,这样 能保证请求的消息所占用的 Tokens 数量不超过模型上下文窗口。 """ global messages # 首先,我们将用户最新的问题构造成一个 message(role=user),并添加到 messages 的尾部 messages.append({ "role": "user", "content": input, }) # new_messages 是我们下一次请求使用的消息列表,现在让我们来构建它 new_messages = [] # 每次请求都需要携带 System Messages,因此我们需要先把 system_messages 添加到消息列表中; # 注意,即使对消息进行截断,也应该注意保证 System Messages 仍然在 messages 列表中。 new_messages.extend(system_messages) # 在这里,当历史消息超过 n 条时,我们仅保留最新的 n 条消息 if len(messages) > n: messages = messages[-n:] new_messages.extend(messages) return new_messages def chat(input: str) -> str: """ chat 函数支持多轮对话,每次调用 chat 函数与 Kimi 大模型对话时,Kimi 大模型都会"看到"此前已经 产生的历史对话消息,换句话说,Kimi 大模型拥有了记忆。 """ # 携带 messages 与 Kimi 大模型对话 completion = client.chat.completions.create( model="kimi-k3", messages=make_messages(input) ) # 通过 API 我们获得了 Kimi 大模型给予我们的回复消息(role=assistant) assistant_message = completion.choices[0].message # 为了让 Kimi 大模型拥有完整的记忆,我们必须将 Kimi 大模型返回给我们的消息也添加到 messages 中 messages.append(assistant_message) return assistant_message.content print(chat("你好,我今年 27 岁。")) print(chat("你知道我今年几岁吗?")) # 在这里,Kimi 大模型根据此前的上下文信息,将会知道你今年的年龄是 27 岁 ``` ```js theme={null} const OpenAI = require("openai") const client = new OpenAI({ apiKey: process.env.MOONSHOT_API_KEY, // 运行前请设置 MOONSHOT_API_KEY 环境变量 baseURL: "https://api.moonshot.cn/v1", }); // 我们将 System Messages 单独放置在一个列表中,这是因为每次请求都应该携带 System Messages const systemMessages = [ { role: "system", content: "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。", }, ]; // 我们定义一个全局变量 messages,用于记录我们和 Kimi 大模型产生的历史对话消息 // 在 messages 中,既包含我们向 Kimi 大模型提出的问题(role=user),也包括 Kimi 大模型给我们的回复(role=assistant) // messages 中的消息按时间顺序从小到大排列 let messages = []; async function makeMessages(input, n = 20) { /** * 使用 make_messages 控制每次请求的消息数量,使其保持在一个合理的范围内,例如默认值是 20。在构建消息列表 * 的过程中,我们会先添加 System Prompt,这是因为无论如何对消息进行截断,System Prompt 都是必不可少的 * 内容,再获取 messages —— 即历史记录中,最新的 n 条消息作为请求使用的消息,在大部分场景中,这样 * 能保证请求的消息所占用的 Tokens 数量不超过模型上下文窗口。 */ // 首先,我们将用户最新的问题构造成一个 message(role=user),并添加到 messages 的尾部 messages.push({ role: "user", content: input, }); // newMessages 是我们下一次请求使用的消息列表,现在让我们来构建它 let newMessages = []; // 每次请求都需要携带 System Messages,因此我们需要先把 systemMessages 添加到消息列表中; // 注意,即使对消息进行截断,也应该注意保证 System Messages 仍然在 messages 列表中。 newMessages = systemMessages.concat(newMessages); // 在这里,当历史消息超过 n 条时,我们仅保留最新的 n 条消息 if (messages.length > n) { messages = messages.slice(-n); } newMessages = newMessages.concat(messages); return newMessages; } async function chat(input) { /** * chat 函数支持多轮对话,每次调用 chat 函数与 Kimi 大模型对话时,Kimi 大模型都会"看到"此前已经 * 产生的历史对话消息,换句话说,Kimi 大模型拥有了记忆。 */ // 携带 messages 与 Kimi 大模型对话 const completion = await client.chat.completions.create({ model: "kimi-k3", messages: await makeMessages(input) }); // 通过 API 我们获得了 Kimi 大模型给予我们的回复消息(role=assistant) const assistantMessage = completion.choices[0].message; // 为了让 Kimi 大模型拥有完整的记忆,我们必须将 Kimi 大模型返回给我们的消息也添加到 messages 中 messages.push(assistantMessage); return assistantMessage.content; } (async () => { console.log(await chat("你好,我今年 27 岁。")); console.log(await chat("你知道我今年几岁吗?")); // 在这里,Kimi 大模型根据此前的上下文信息,将会知道你今年的年龄是 27 岁 })(); ``` ## 生产环境还需要考虑什么 上述代码示例仅覆盖最简单的调用场景,实际业务中可能还需要处理更多场景和边界: * 并发场景下可能需要额外的读写锁; * 多用户场景需要为每个用户单独维护 `messages` 列表; * 对 `messages` 列表进行持久化; * 用更精确的方式计算 `messages` 列表中需要保留多少条消息; * 对被遗弃的消息做一次总结,生成一条新消息加入 `messages` 列表; * …… # 在 Kimi Code CLI 中使用 Kimi API Platform Source: https://platform.kimi.com/docs/guide/kimi-code-cli 使用 Kimi API Platform API Key 接入、切换和更新 Kimi Code CLI。 [Kimi Code](https://www.kimi.com/code/) 是面向开发者的智能编程服务,Kimi Code CLI 是其运行在终端中的 AI Agent。 Kimi Code CLI 可以直接使用在 [Kimi API Platform](https://platform.kimi.com/) 创建的 API Key。 本文介绍如何: * 使用 `platform.kimi.com` 的 API Key 完成接入 * 将现有 Kimi Code CLI 切换到 Kimi API Platform * 更换已经配置的 API Key 本文假设你已经安装 Kimi Code CLI。 尚未安装时,请参考 [Kimi Code CLI 官方安装方式](https://www.kimi.com/code/docs/kimi-code-cli/guides/getting-started.html),或选择系统直接运行: ```bash theme={null} curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash ``` ```powershell theme={null} irm https://code.kimi.com/kimi-code/install.ps1 | iex ``` Windows 用户首次启动前还需要安装 [Git for Windows](https://gitforwindows.org/)。Kimi Code CLI 会使用其中的 Git Bash 作为 Shell 环境。如果 Git Bash 安装在非标准路径,请把 `KIMI_SHELL_PATH` 设为 `bash.exe` 的绝对路径。 脚本会自动下载最新版本、校验 checksum,并把 `kimi` 可执行文件放到你的 `PATH` 中。 ## 准备 API Key 打开 [Kimi API Platform](https://platform.kimi.com/),登录后进入 [API Keys](https://platform.kimi.com/console/api-keys) 页面,创建并复制一个 API Key。 请妥善保管 API Key,不要与他人分享,也不要在截图中展示完整内容。 ## 接入 Kimi API Platform ### 1. 启动 Kimi Code CLI 进入需要使用 Kimi Code CLI 的项目目录,然后启动: ```bash theme={null} kimi ``` 进入交互界面后,在输入框中执行: ```text theme={null} /login ``` Kimi Code CLI 将打开平台选择界面。 在 Kimi Code CLI 中输入 /login ### 2. 选择 API Key 所属平台 在平台列表中,选择与 API Key 来源一致的选项: | API Key 来源 | 在 Kimi Code CLI 中选择 | | ------------------- | --------------------------------------------- | | `platform.kimi.com` | `Kimi Platform (API key · platform.kimi.com)` | 使用方向键选择平台,然后按 `Enter` 确认。 必须选择与 API Key 创建站点一致的平台,否则 API Key 校验将失败。 选择 platform.kimi.com 对应的 Kimi Platform ### 3. 输入 API Key 根据界面提示粘贴刚刚创建的 API Key,然后按 `Enter`。 Kimi Code CLI 会自动校验 API Key,并读取当前账户可用的模型。 输入 Kimi API Platform API Key ### 4. 选择模型 API Key 校验通过后,界面会显示当前账户可用的模型。选择需要使用的模型并确认。 完成后,Kimi Code CLI 会: * 切换当前会话使用的模型 * 保存本次平台和模型选择 * 在后续启动时继续使用该配置 看到配置完成提示后,即表示 Kimi API Platform 已成功接入。 选择 Kimi API Platform 模型 ### 5. 验证接入结果 执行以下命令查看当前会话状态: ```text theme={null} /status ``` 确认当前模型后,再发送一个简单任务,例如: ```text theme={null} 请查看当前项目,并简要说明目录结构。 ``` 如果 Kimi Code CLI 能够正常返回结果,即表示接入成功。 Kimi Code CLI 使用 Kimi API Platform 正常回复 ## 切换到 Kimi API Platform API Key 如果 Kimi Code CLI 已经在使用其他登录方式,无需退出程序,也无需手动修改配置。 在当前会话中重新执行: ```text theme={null} /login ``` 然后依次完成: 1. 选择 `Kimi Platform (API key · platform.kimi.com)` 2. 输入 Kimi API Platform API Key 3. 选择需要使用的模型 4. 等待配置完成提示 完成后,当前会话会直接切换到新选择的 Kimi API Platform 模型,不需要重新启动 Kimi Code CLI。 ## 更换 API Key 如果需要更换已经配置的 API Key,再次执行 `/login`,选择 `Kimi Platform (API key · platform.kimi.com)` 并输入新的 API Key 即可。 新配置完成后,Kimi Code CLI 将使用新的 API Key。 ## 常见问题 ### API Key 校验失败 请依次检查: * 是否选择了 API Key 实际创建所在的平台 * API Key 是否复制完整,是否包含多余空格 * API Key 是否仍然有效 * 对应的 Kimi API Platform 账户是否可以正常调用 API 如果 API Key 已被撤销或泄露,请在 Kimi API Platform 中创建新的 API Key,然后重新执行 `/login`。 ### 无法执行 `/login` `/login` 需要在 Kimi Code CLI 空闲时执行。如果当前正在生成内容或执行任务,请等待任务结束,或先按 `Esc` 或 `Ctrl-C` 中断,再重新执行 `/login`。 ### 没有显示可用模型 请确认 API Key 和所选平台一致,然后重新执行 `/login`。如仍然无法加载,可以先升级 Kimi Code CLI,再检查 Kimi API Platform 账户状态。 ## 了解更多 * [Kimi Code CLI 开始使用](https://www.kimi.com/code/docs/kimi-code-cli/guides/getting-started.html) * [Kimi Code CLI 斜杠命令](https://www.kimi.com/code/docs/kimi-code-cli/reference/slash-commands.html) * [Kimi Code CLI 平台与模型](https://www.kimi.com/code/docs/kimi-code-cli/configuration/providers.html) * [Kimi Code CLI 配置文件](https://www.kimi.com/code/docs/kimi-code-cli/configuration/config-files.html) * [Kimi API Platform 快速开始](/docs/overview) # Kimi K2.6 Source: https://platform.kimi.com/docs/guide/kimi-k2-6-quickstart 了解 Kimi K2.6 的文本、图片与视频理解、思考模式、工具调用和 256K 上下文能力。 ## Kimi K2.6 模型介绍 Kimi K2.6 是 Kimi 的通用模型,Kimi K2.6 的通用 Agent、代码、视觉理解等综合能力得到全面提升,其中在博士级难度的完整版人类最后的考试(Humanity's Last Exam)、在考察模型真实软件工程能力的 SWE-Bench Pro、评估 Agent 深度检索能力的 DeepSearchQA 等基准测试中均取得行业领先的成绩,同时支持文本、图片与视频输入,思考与非思考模式,对话与 Agent 任务。 [技术Blog](https://www.kimi.com/blog/kimi-k2-6) 。 kimi-k2.6 ### 长程编码能力突破 * Kimi K2.6 作为国内领先的 Coding 模型,在长程代码任务中的表现取得了突破,面对不同编程语言(如 Rust、Go、Python)和任务场景(如前端、运维、性能优化)均具备更可靠的泛化能力。 ### 超长上下文支持 * `kimi-k2.6`、`kimi-k2.5`、`kimi-k2-0905-preview`、`kimi-k2-turbo-preview`、`kimi-k2-thinking`、`kimi-k2-thinking-turbo` 模型均提供 256K 上下文窗口 ### 长思考能力 * Kimi K2.6 仍然具备超强的思考能力,支持多步工具调用和推理,擅长解决复杂问题,如复杂的逻辑推理、数学问题、代码编写等。 ## 立即开始 * [立即体验](https://platform.kimi.com/playground) :在开发工作台,快速通过交互式操作测试模型在业务场景上的效果 * [申请 API Key](https://platform.kimi.com/console/api-keys) :立即通过 API 调用测试 ## 调用示例 以下是完整的调用示例,帮助您快速上手 Kimi K2.6 模型。 ### 安装 OpenAI SDK Kimi API 完全兼容 OpenAI 的 API 格式,你可以通过如下方式来安装 OpenAI SDK: ```bash theme={null} pip install --upgrade 'openai>=1.0' ``` ### 验证安装结果 ```bash theme={null} python -c 'import openai; print("version =",openai.__version__)' # 输出可能是 version = 1.10.0,表示 OpenAI SDK 已经安装成功,当前 python 实际使用了 openai 的 v1.10.0 的库 ``` ### 图片理解代码示例 ```python theme={null} import os import base64 from openai import OpenAI client = OpenAI( api_key=os.environ.get("MOONSHOT_API_KEY"), base_url="https://api.moonshot.cn/v1", ) # 在这里,你需要将 kimi.png 文件替换为你想让 Kimi 识别的图片的地址 image_path = "kimi.png" with open(image_path, "rb") as f: image_data = f.read() # 我们使用标准库 base64.b64encode 函数将图片编码成 base64 格式的 image_url image_url = f"data:image/{os.path.splitext(image_path)[1].lstrip('.')};base64,{base64.b64encode(image_data).decode('utf-8')}" completion = client.chat.completions.create( model="kimi-k2.6", messages=[ {"role": "system", "content": "你是 Kimi。"}, { "role": "user", # 注意这里,content 由原来的 str 类型变更为一个 list,这个 list 中包含多个部分的内容,图片(image_url)是一个部分(part), # 文字(text)是一个部分(part) "content": [ { "type": "image_url", # <-- 使用 image_url 类型来上传图片,内容为使用 base64 编码过的图片内容 "image_url": { "url": image_url, }, }, { "type": "text", "text": "请描述图片的内容。", # <-- 使用 text 类型来提供文字指令,例如"描述图片内容" }, ], }, ], ) print(completion.choices[0].message.content) ``` ### 视频理解代码示例 ```python theme={null} import os import base64 from openai import OpenAI client = OpenAI( api_key=os.environ.get("MOONSHOT_API_KEY"), base_url="https://api.moonshot.cn/v1", ) # 在这里,你需要将 kimi.mp4 文件替换为你想让 Kimi 识别的视频的地址 video_path = "kimi.mp4" with open(video_path, "rb") as f: video_data = f.read() # 我们使用标准库 base64.b64encode 函数将视频编码成 base64 格式的 video_url video_url = f"data:video/{os.path.splitext(video_path)[1].lstrip('.')};base64,{base64.b64encode(video_data).decode('utf-8')}" completion = client.chat.completions.create( model="kimi-k2.6", messages=[ {"role": "system", "content": "你是 Kimi。"}, { "role": "user", # 注意这里,content 由原来的 str 类型变更为一个 list,这个 list 中包含多个部分的内容,视频(video_url)是一个部分(part), # 文字(text)是一个部分(part) "content": [ { "type": "video_url", # <-- 使用 video_url 类型来上传视频,内容为使用 base64 编码过的视频内容 "video_url": { "url": video_url, }, }, { "type": "text", "text": "请描述视频的内容。", # <-- 使用 text 类型来提供文字指令,例如"描述视频内容" }, ], }, ], ) print(completion.choices[0].message.content) ``` ### 多模态工具能力示例 Kimi K2.6 模型综合了多种能力。以下是一个展示 K2.6 视觉理解+工具调用能力的示例。 首先将这个示例视频下载到本地,比如 `/path/to/test_video.mp4`