月之暗面:Moonshot AI接口总结

前言:

开发者们只需访问 platform.moonshot.cn,便能创建自己的 API Key,进而将 Kimi 智能助手背后的同款 moonshot 模型能力,如长文本处理和出色的指令遵循等,集成至自己的产品中。这不仅增强了现有产品的功能,更为开发者们提供了打造全新、富有创意的产品的机会。

除了核心的对话问答功能外,Moonshot AI 开放平台还提供了“文件内容提取”能力接口。这一功能使得开发者们能够结合文件上传功能,开发出针对文档和知识库场景的多样化应用。

在定价方面,Moonshot AI 开放平台提供了三个基础模型:moonshot-v1-8k、32k 和128k。这些模型的定价分别为每千个 token0.012元、0.024元和0.06元。为了让开发者们能够更好地体验平台的功能,注册后的开发者将获得价值15元的体验包,这相当于125万 tokens(8k模型)或62.5万 tokens(32k模型)的使用量。同时,个人自助充值功能也即将上线,为开发者们提供更多的便利和选择。

获取API Key:

1、打开网址:platform.moonshot.cn 注册账号登录

2、用户中心查看余额

3、获取API Key

Python 安装及调用方法:

1、命令安装

pip install openai # 如果你没有安装,可以这样安装一下依赖

 如果您之前安装过,请再更新一下 openai 确保它版本高于 1.0.

pip install --upgrade openai

 示例:

import os
from openai import OpenAIclient = OpenAI(api_key="MOONSHOT_API_KEY",base_url="https://api.moonshot.cn/v1",
)completion = client.chat.completions.create(model="moonshot-v1-8k",messages=[ {"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一些涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},{"role": "user", "content": "你好,我叫李雷,1+1等于多少?"}],temperature=0.3,
)print(completion.choices[0].message)

API 说明

请求地址

POST https://api.moonshot.cn/v1/chat/completions

请求内容

示例

{"model": "moonshot-v1-8k","messages": [{"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一些涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},{"role": "user", "content": "你好,我叫李雷,1+1等于多少?"}],"temperature": 0.3
}

字段说明

字段说明类型取值
messages包含迄今为止对话的消息列表。List[Dict]这是一个结构体的列表,每个元素类似如下:json{ "role": "user", "content": "你好"} role 只支持 system,user,assistant 其一,content 不得为空
modelModel ID, 可以通过 List Models 获取string目前是 moonshot-v1-8k,moonshot-v1-32k,moonshot-v1-128k 其一
max_tokens聊天完成时生成的最大 token 数。如果到生成了最大 token 数个结果仍然没有结束,finish reason 会是 "length", 否则会是 "stop"int这个值建议按需给个合理的值,如果不给的话,我们会给一个不错的整数比如 1024。特别要注意的是,这个 max_tokens 是指您期待我们返回的 token 长度,而不是输入 + 输出的总长度。比如对一个 moonshot-v1-8k 模型,它的最大输入 + 输出总长度是 8192,当输入 messages 总长度为 4096 的时候,您最多只能设置为 4096,否则我们服务会返回不合法的输入参数( invalid_request_error ),并拒绝回答。如果您希望获得“输入的精确 token 数”,可以使用下面的“计算 Token” API 使用我们的计算器获得计数。
temperature使用什么采样温度,介于 0 和 1 之间。较高的值(如 0.7)将使输出更加随机,而较低的值(如 0.2)将使其更加集中和确定性。float如果设置,值域须为 [0, 1] 我们推荐 0.3,以达到较合适的效果。
top_p另一种采样温度float默认 1.0
n为每条输入消息生成多少个结果int默认 1,不得大于 5 特别的,当 temperature 非常小靠近 0 的时候,我们只能返回 1 个结果,如果这个时候 n 设置并 > 1,我们服务会返回不合法的输入参数( invalid_request_error )。
stream是否流式返回bool默认 false, 可选 true

返回内容

对非 stream 格式的,返回类似如下:

{"id": "cmpl-04ea926191a14749b7f2c7a48a68abc6","object": "chat.completion","created": 1698999496,"model": "moonshot-v1-8k","choices": [{"index": 0,"message": {"role": "assistant","content": " 你好,李雷!1+1等于2。如果你有其他问题,请随时提问!"},"finish_reason": "stop"}],"usage": {"prompt_tokens": 19,"completion_tokens": 21,"total_tokens": 40}
}

对 stream 格式的,返回类似如下:

data: {"id":"cmpl-1305b94c570f447fbde3180560736287","object":"chat.completion.chunk","created":1698999575,"model":"moonshot-v1-8k","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}data: {"id":"cmpl-1305b94c570f447fbde3180560736287","object":"chat.completion.chunk","created":1698999575,"model":"moonshot-v1-8k","choices":[{"index":0,"delta":{"content":"你好"},"finish_reason":null}]}...data: {"id":"cmpl-1305b94c570f447fbde3180560736287","object":"chat.completion.chunk","created":1698999575,"model":"moonshot-v1-8k","choices":[{"index":0,"delta":{"content":"。"},"finish_reason":null}]}data: {"id":"cmpl-1305b94c570f447fbde3180560736287","object":"chat.completion.chunk","created":1698999575,"model":"moonshot-v1-8k","choices":[{"index":0,"delta":{},"finish_reason":"stop","usage":{"prompt_tokens":19,"completion_tokens":13,"total_tokens":32}}]}data: [DONE]

调用示例

Python 流式调用

对简单调用,见前面。对流式调用,可以参考如下代码片段:

import os
from openai import OpenAIclient = OpenAI(api_key="MOONSHOT_API_KEY",base_url="https://api.moonshot.cn/v1",
)response = client.chat.completions.create(model="moonshot-v1-8k",messages=[{"role": "system","content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一些涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。",},{"role": "user", "content": "你好,我叫李雷,1+1等于多少?"},],temperature=0.3,stream=True,
)collected_messages = []
for idx, chunk in enumerate(response):# print("Chunk received, value: ", chunk)chunk_message = chunk.choices[0].deltaif not chunk_message.content:continuecollected_messages.append(chunk_message)  # save the messageprint(f"#{idx}: {''.join([m.content for m in collected_messages])}")
print(f"Full conversation received: {''.join([m.content for m in collected_messages])}")

List Models

请求地址

GET https://api.moonshot.cn/v1/models

调用示例

import os
from openai import OpenAIclient = OpenAI(api_key="MOONSHOT_API_KEY",base_url="https://api.moonshot.cn/v1",
)model_list = client.models.list()
model_data = model_list.datafor i, model in enumerate(model_data):print(f"model[{i}]:", model.id)

文件内容抽取

该功能可以实现让模型获取文件中的信息作为上下文。本功能需要配合文件上传等功能共同使用。

调用示例

from pathlib import Path
from openai import OpenAIclient = OpenAI(api_key="MOONSHOT_API_KEY",base_url="https://api.moonshot.cn/v1",
)# xlnet.pdf 是一个示例文件, 我们支持 pdf, doc 等格式, 目前暂不提供ocr相关能力
file_object = client.files.create(file=Path("xlnet.pdf"), purpose="file-extract")# 获取结果
# file_content = client.files.retrieve_content(file_id=file_object.id)
# 注意,之前 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="moonshot-v1-32k",messages=messages,temperature=0.3,
)print(completion.choices[0].message)

列出文件

本功能用于列举出用户已上传的所有文件

请求地址
GET https://api.moonshot.cn/v1/files
调用示例
file_list = client.files.list()for file in file_list.data:print(file) # 查看每个文件的信息

上传文件

注意,单个用户最多只能上传 1000 个文件,单文件不超过100MB,同时所有已上传的文件总和不超过 10G 容量。如果您要抽取更多文件,需要先删除一部分不再需要的文件。

请求地址
POST https://api.moonshot.cn/v1/files

文件上传成功后,我们会开始抽取文件信息

调用示例
# file 可以是多种类型
# purpose 目前只支持 "file-extract"
file_object = client.files.create(file=Path("xlnet.pdf"), purpose="file-extract")

删除文件

本功能可以用于删除不再需要使用的文件

请求地址
DELETE https://api.moonshot.cn/v1/files/{file_id}
调用示例
client.files.delete(file_id=file_id)

获取文件信息

本功能用于获取指定文件的文件基础信息

请求地址
GET https://api.moonshot.cn/v1/files/{file_id}
调用示例
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='') # status 如果为 error 则抽取失败

获取文件内容

本功能支持获取指定文件的文件抽取结果。通常的,它是一个合法的 JSON 格式的 string,并且对齐了我们的推荐格式。 如需抽取多个文件,您可以在某个 message 中用换行符 \n 隔开,拼接为一个大字符串,role 为 system 的方式加入历史记录。

请求地址
GET https://api.moonshot.cn/v1/files/{file_id}/content
调用示例

 

# file_content = client.files.retrieve_content(file_id=file_object.id)
# type of file_content is `str`
# 注意,之前 retrieve_content api 在最新版本标记了 warning, 可以用下面这行代替
# 如果是旧版本,可以用 retrieve_content
file_content = client.files.content(file_id=file_object.id).text
# 我们的输出结果目前是一个内部约定好格式的 json, 但是在 message 中应该以 text 格式放进去

计算 Token

请求地址

POST https://api.moonshot.cn/v1/tokenizers/estimate-token-count

请求内容

estimate-token-count 的输入结构体和 chat completion 基本一致。

示例

{"model": "moonshot-v1-8k","messages": [{"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一些涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},{"role": "user", "content": "你好,我叫李雷,1+1等于多少?"}]
}

字段说明

字段说明类型取值
messages包含迄今为止对话的消息列表。List[Dict]这是一个结构体的列表,每个元素类似如下:json{ "role": "user", "content": "你好"} role 只支持 system,user,assistant 其一,content 不得为空
modelModel ID, 可以通过 List Models 获取string目前是 moonshot-v1-8k,moonshot-v1-32k,moonshot-v1-128k 其一

调用示例

curl 'https://api.moonshot.cn/v1/tokenizers/estimate-token-count' \-H "Content-Type: application/json" \-H "Authorization: Bearer $MOONSHOT_API_KEY" \-d '{"model": "moonshot-v1-8k","messages": [{"role": "system","content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一些涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},{"role": "user","content": "你好,我叫李雷,1+1等于多少?"}]
}'

返回内容

{"data": {"total_tokens": 80},
}

当没有 error 字段,可以取 data.total_tokens 作为计算结果

错误说明

下面是主要的几个错误

Error TypeHTTP Status Code详细描述
invalid_authentication_error401鉴权失败请确认
invalid_request_error400这个通常意味着您输入格式有误,包括使用了预期外的参数,比如过大的 temperature,或者 messages 的大小超过了限制。在 message 字段通常会有更多解释
rate_limit_reached_error429您超速了。我们设置了最大并发上限和分钟为单位的次数限制。如果在 429 后立即重试,可能会遇到罚时建议控制并发大小,并且在 429 后 sleep 3 秒
exceeded_current_quota_error429Quota 不够了,请联系管理员加量

价格说明

按照实际使用的数据量( 千tokens )收费。Token 在这里指的是文本中的一个最小单位,可以是一个词、一个数字或一个标点符号等。

模型计费单位价格
moonshot-v1-8k1000 tokens0.012元
moonshot-v1-32k1000 tokens0.024元
moonshot-v1-128k1000 tokens0.06元

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大离谱!AI写作竟让孔子遗体现身巴厘岛,看完笑不活了

大家好,我是二狗。 这两天我在知乎上看到了一个AI写作大翻车的案例,看完简直笑不活了,特地分享给大家一起 happy happy~ 知乎网友“打开盒子吓一跳”一上来就抛出来了一个“孔子去世”的王炸。 首先,下面是一条真实新…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的犬种识别系统(附完整代码资源+UI界面+PyTorch代码)

摘要:本文介绍了一种基于深度学习的犬种识别系统系统的代码,采用最先进的YOLOv8算法并对比YOLOv7、YOLOv6、YOLOv5等算法的结果,能够准确识别图像、视频、实时视频流以及批量文件中的犬种。文章详细解释了YOLOv8算法的原理,并提供…

【Java程序设计】【C00286】基于Springboot的生鲜交易系统(有论文)

基于Springboot的生鲜交易系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的生鲜交易系统 本系统分为系统功能模块、管理员功能模块、用户功能模块以及商家功能模块。 系统功能模块:在系统首页可以…

【第七天】C++模板探秘:函数模板、类模板以及类型转换的深入解析

一、模板的概述 c面向对象编程思想:封装、继承、多态 c泛型编程思想:模板 模板的分类:函数模板、类模板 函数模板(类模板):将功能相同,类型不同的函数(类)的类型抽象成虚…

聊聊Sora这个AI大神和中美技术赛跑那些事儿

最近有个叫Sora的AI模型火得一塌糊涂。它就像个魔法师,你给它一段话描述,它就能变出一段60秒的高清视频来,这可比之前咱们看过的那些文字转图片的AI厉害多了。想象一下,以后拍电影预告片、做广告宣传啥的,可能直接让So…

Ansible 更换aliyun 镜像 并下载tree

目录 查看系统版本找到对应 的版本对当前镜像进行备份下载aliyuan更换成功安装扩展源更换源之后 的三个命令 这里安装一个aliyun 的镜像 本案例 仅供实验参考 生产环境中请谨慎使用 查看系统版本 先查看linux 的系统 版本 ansible slave -m shell -a uname -a找到对应 的版本…

【Spring面试题】

目录 前言 1.Spring框架中的单例bean是线程安全的吗? 2.什么是AOP? 3.你们项目中有没有使用到AOP? 4.Spring中的事务是如何实现的? 5.Spring中事务失效的场景有哪些? 6.Spring的bean的生命周期。 7.Spring中的循环引用 8.构造方法…

FFmpeg解析之avformat_find_stream_info函数

avformat_find_stream_info 的主要作用就是:解析媒体文件并获取相关的流信息 整体的逻辑如下图所示: /*** Read packets of a media file to get stream information. This* is useful for file formats with no headers such as MPEG. This* function…

聊聊JVM运行时数据区的堆内存

聊聊JVM运行时数据区的堆内存 内存模型变迁: Java堆在JVM启动时创建内存区域去实现对象、数组与运行时常量的内存分配,它是虚拟机管理最大的,也是垃圾回收的主要内存区域 。 内存模型变迁: 为什么要有年轻区和老年区?…

【算法与数据结构】链表、哈希表、栈和队列、二叉树(笔记二)

文章目录 四、链表理论五、哈希表理论五、栈和队列理论5.1 单调栈 六、二叉树理论6.1 树的定义6.2 二叉树的存储方式6.3 二叉树的遍历方式6.4 高度和深度 最近博主学习了算法与数据结构的一些视频,在这个文章做一些笔记和心得,本篇文章就写了一些基础算法…

基于AI将普通RGB图像转换为苹果Vision Pro支持的空间照片

将 RGB 图像转换为空间图片 一、引言 随着AR和VR技术的普及,空间照片格式(.HEIC)逐渐受到关注。这种格式允许用户在AR/VR设备上体验到更为真实的立体空间效果。为了让更多的普通图片也能享受这种技术,我们开发了这款可以将普通RGB图像转换为苹果Vision Pro支持的.HEIC格式的…

STM32F103学习笔记(七) PWR电源管理(原理篇)

目录 1. PWR电源管理简介 2. STM32F103的PWR模块概述 2.1 PWR模块的基本工作原理 2.2 电源管理的功能和特点 3. PWR模块的常见应用场景 4. 常见问题与解决方案 1. PWR电源管理简介 PWR(Power)模块是STM32F103系列微控制器中的一个重要组成部分&…

实习日志18

1.刚弄好数据库就破大防了 1.1.图片显示,PDF不显示 我的图片是base64编码显示,pdf是用url显示 首先想到url出问题了 感觉可能是之前的那个问题,到服务器上url变回去了 活字格V9获取图片失败bug,报错404,了解存储路…

使用Streamlit构建纯LLM Chatbot WebUI傻瓜教程

文章目录 使用Streamlit构建纯LLM Chatbot WebUI傻瓜教程开发环境hello Streatelit显示DataFrame数据显示地图WebUI左右布局设置st.sidebar左侧布局st.columns右侧布局 大语言模型LLM Chatbot WebUI设置Chatbot页面布局showdataframe()显示dataframeshowLineChart()显示折线图s…

进程间的通信-- 管道

一 进程通信原理 我们知道进程间相互独立,具有独立性。那么我们要实现两个进程之间的通信就需要,让这两个进程看到同一个文件。然后一个进程对文件写入,一个进程对文件内容进行读取,这就是现实了进程间的通信。 二 进程通信的几种…

【C++私房菜】面向对象中的多态

文章目录 一、多态二、对象的静态类型和动态类型三、虚函数和纯虚函数1、虚函数2、虚析构函数3、抽象基类和纯虚函数4、多态的原理 四、重载、覆盖(重写)、隐藏(重定义)的对比 一、多态 OOP的核心思想是多态性(polymorphism)。多态性这个词源自希腊语,其含义是“多…

【黑马程序员】1、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址:【黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 1、TypeScript介绍 1.1 TypeScript是什…

信号通信与消息队列实现的通信:2024/2/23

作业1&#xff1a;将信号和消息队列的课堂代码敲一遍 1.1 信号 1.1.1 信号默认、捕获、忽略处理(普通信号) 代码&#xff1a; #include <myhead.h> void handler(int signo) {if(signoSIGINT){printf("用户键入 ctrlc\n");} } int main(int argc, const ch…

Windows Server 2019 IIS HTTPS证书部署流程详解

一、下载SSL证书 1、下载IIS 类型的证书 以阿里云证书为例&#xff1a; 2、解压已下载的SSL证书压缩包 二、导入SSL证书 1、在服务器上使用WinR组合键&#xff0c;打开运行对话框&#xff0c;输入mmc&#xff0c;单击确定 打开控制台操作界面&#xff0c;如下&#xff1a; …

可视化 RAG 数据 — EDA for Retrieval-Augmented Generation

目录 一、说明 二、准备好 三、准备文件 四、拆分和创建数据集的嵌入 五、构建 LangChain 六、问一个问题 七、可视化 八、下一步是什么&#xff1f; 九、引用 一、说明 像 GPT-4 这样的大型语言模型 &#xff08;LLM&#xff09; 在文本理解和生成方面表现出令人印象深刻的能力…