微信扫码
与创始人交个朋友
我要投稿
KimiGPT API接口实战指南
Kimi推出浏览器插件,超级好用
❝大家好,我是小智。昨天月之暗面短信推送了一条消息,MoonshotAI 联网功能上线,Kimi API正式提供联网搜索功能。收到这条信息后也是第一时间打开了官方文档并对联网功能做了详细了解。下面小智就为大家分享一下,如何通过Kimi API实现联网搜索功能,包括使用内置的web_search的声明和执行流程以及联网搜索对Tokens消耗的影响。
1、注册和获取API密钥
2、阅读API文档
Kimi为开发者封装好了一个简单方便、开箱即用的“联网搜索”功能;此功能基于 Kimi 大模型原有的工具调用 tool_calls
用法,提供了一个内置的工具函数 builtin_function.$web_search
,集成的时候只需要使用这个内置工具函数就可以很简单的实现联网搜索功能。
下面以获取一个网页信息的内容为例给大家一步一步演示如何集成Kimi的API联网功能:
import json
from typing import Dict, Any
from openai import OpenAI
from openai.types.chat.chat_completion import Choice
这一步导入了处理JSON数据、类型注解、与OpenAI API交互所需的库。
client = OpenAI(
api_key="*****",
base_url="https://api.moonshot.cn/v1"
)
在这一步,创建了一个OpenAI
客户端实例,配置了API密钥和基础URL。API秘钥为注册账号时生成的秘钥
search_impl
函数def search_impl(arguments: Dict[str, Any]) -> Any:
"""
在使用 Moonshot AI 提供的 search 工具的场合,只需要原封不动返回 arguments 即可,
不需要额外的处理逻辑。
"""
return arguments
这个函数是搜索工具的实现,目前只是简单地返回传入的参数。
chat
函数def chat(messages) -> Choice:
completion = client.chat.completions.create(
model="moonshot-v1-128k",
messages=messages,
temperature=0.3,
response_format={"type": "json_object"},
tools=[
{
"type": "builtin_function",
"function": {
"name": "$web_search",
},
}
]
)
usage = completion.usage
choice = completion.choices[0]
if choice.finish_reason == "stop":
print(f"chat_prompt_tokens: {usage.prompt_tokens}")
print(f"chat_completion_tokens: {usage.completion_tokens}")
print(f"chat_total_tokens: {usage.total_tokens}")
return choice
这个函数用于发送消息给Kimi大模型,并接收回复。它处理聊天完成请求,并根据回复的finish_reason
打印出消耗的Tokens数量。在这里要注意一下,对大模型返回的数据要做一下格式处理,咱们可以使用官方文档提供的JSON Mode。JSON Mode的基本用法是将 response_format 设置为 {"type": "json_object"}
来使用,Kimi 大模型会按照要求输出一个合法的、可被正确解析的 JSON 文档。关于JSON Mode更多用法可以参考官网文档有详细说明,这里不做赘述。
使用JSON Mode的目的,一方面是为了节省token,另一方面也是为了从网页信息中提取更有价值的格式化数据方便后面二次加工处理。
def main():
web_url = "https://www.explinks.com/api/scd2024090489792d77afd9"
system_prompt = """
请搜索当前链接地址"""+web_url+""",生成一段200字的内容总结,
输出 JSON 格式如下:
[{"summary": ""}]
"""
messages = [
{"role": "system", "content": "你是 Kimi。"},
]
messages.append({
"role": "user",
"content": system_prompt
})
finish_reason = None
while finish_reason is None or finish_reason == "tool_calls":
choice = chat(messages)
finish_reason = choice.finish_reason
if finish_reason == "tool_calls":
messages.append(choice.message)
for tool_call in choice.message.tool_calls:
tool_call_name = tool_call.function.name
tool_call_arguments = json.loads(tool_call.function.arguments)
if tool_call_name == "$web_search":
tool_result = search_impl(tool_call_arguments)
else:
tool_result = f"Error: unable to find tool by name '{tool_call_name}'"
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"name": tool_call_name,
"content": json.dumps(tool_result),
})
print(choice.message.content)
在这一步,定义了main
函数,它设置了一个系统提示,指示模型搜索特定的URL并生成内容总结。然后,它初始化消息列表,包括系统角色的消息和用户角色的初始提问。进入一个循环,不断发送消息并接收回复,直到没有更多的工具调用需要执行。最后,打印出模型生成的回复内容。
if __name__ == '__main__':
main()
这一步检查如果这个脚本作为主程序运行,将调用main
函数。最终查看一下控制台返回的日志信息,符合提示词中的JSON格式,并且也返回了使用的token数量。
chat_prompt_tokens: 90
chat_completion_tokens: 267
chat_total_tokens: 357
[{
"summary": "AI手写服务-Handwrytten利用人工智能技术模拟真实手写字体,
提供个性化的沟通方式。用户可选择字体、笔触风格和布局定制内容,适用于客户关系维护、
市场推广和个人情感表达。服务通过Restful API实现自动化交互,支持用户认证、订单提交等功能。
Helium公司作为技术支持,推动物联网发展,为数字化转型提供支持。"
}]
学会使用联网搜索API并不是目的,目的是把这个工具能应用到工作场景中。
小智最近接到一个小需求,公司在做一个服务商的导航页,导航页中需要展示服务商的信息简介。要知道上千个服务商信息,光打开网页都得操作上千次还不算上打开网页后要去挨个网页浏览查看,然后总结当前网页的内容,最终生成一个信息简介。
通过爬取的方式去把页面的信息获取到然后再投喂给大模型,最终让大模型输出一个关于服务商的信息简介。但是有了联网搜索API,这个需求实现起来变得更简单,只需要把网页链接地址提供出来,然后调用联网搜索API就可以解决。
Python
库:确保安装了处理Excel
文件的库(如openpyxl或pandas
)和用于发送HTTP请求的库(如requests)Excel
文件:使用pandas或openpyxl
库读取包含URL的Excel
文件URL
列:从DataFrame
中提取包含URL
的列。HTTP
请求到Kimi联网搜索API,并获取结果。(直接使用已集成好的Kimi联网搜索API)URL
列表:对每个URL
调用搜索函数,并将结果存储。DataFrame
:将搜索结果添加到原始DataFrame
中Excel
文件:将更新后的DataFrame
保存回Excel
文件。经过小智亲测,1分钟获取100个网页信息没有问题,当然为了提高效率可以加并发。Kimi对API有速率限制,但如果是充值会员的话,一分钟内发起的请求数RPM能达到200
以上就是小智为大家带来的分享,如何通过Kimi API实现联网搜索功能,以及这一功能如何帮助我们高效地获取和处理实时数据。通过使用Kimi API的内置$web_search
工具函数,我们可以轻松地将网页信息整合到我们的应用程序中,从而提升用户体验和数据处理的效率。无论是个人开发者还是企业,都能从中受益。希望这次的分享能帮助大家更好地理解和使用Kimi API的联网搜索功能。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-05-28
2024-04-26
2024-04-11
2024-08-21
2024-07-09
2024-07-18
2024-08-13
2024-10-25
2024-06-17
2024-07-01