Kimi API提供联网搜索功能,仅10分钟获取1000个网页信息
月之暗面最近推送了一条消息:MoonshotAI联网功能上线了,Kimi API正式提供联网搜索功能。这条信息提醒让不少开发者第一时间打开了官方文档,开始研究这个新能力。下面就来聊聊,如何通过Kimi API实现联网搜索功能,包括内置web_search的声明和执行流程,以及联网搜索对Tokens消耗的具体影响。

如何使用Kimi联网搜索API
首先,需要在Kimi联网搜索API的官方网站上注册一个账号,然后获取API密钥。这个密钥用来认证你的每次请求,相当于一把专属钥匙。
接下来,仔细阅读官方API文档。文档地址在platform.moonshot.cn/docs/guide/use-web-search。里面涵盖了API的基础概念、可用端点、请求参数、响应格式、错误代码等信息,入门指南中能直接找到联网搜索相关的Tool配置。
Kimi联网搜索API解决什么问题
这个功能的落地价值体现在三个维度:一是多源信息整合,能把来自不同渠道的数据统一起来,提供一个干净的搜索接口;二是实时数据获取,帮助用户拿到最新动态,数据的时效性一下子拉满;三是高效搜索体验,算法优化之后,搜索速度和准确性都有了明显提升,用户体验自然水涨船高。
如何使用Python集成Kimi API联网功能
Kimi为开发者封装了一个开箱即用的“联网搜索”功能,基于原有的工具调用tool_calls用法,提供了内置的工具函数builtin_function.$web_search。集成的时候,直接调用这个内置工具函数就能实现联网搜索,无需自己手搓复杂的逻辑。
下面以获取一个网页信息的内容为例,一步步演示集成过程。
第一步:导入必要的库
import json
from typing import Dict, Any
from openai import OpenAI
from openai.types.chat.chat_completion import Choice
这一步导入了处理JSON数据、类型注解以及与OpenAI API交互所需的库,为后续的联网调用打下基础。
第二步:设置OpenAI客户端
client = OpenAI(
api_key="*****",
base_url="https://api.moonshot.cn/v1"
)
创建一个OpenAI客户端实例,配置好API密钥和基础URL。密钥就是注册账号时生成的那个。
第三步:定义search_impl函数
def search_impl(arguments: Dict[str, Any]) -> Any:
"""
在使用 Moonshot AI 提供的 search 工具的场合,只需要原封不动返回 arguments 即可,
不需要额外的处理逻辑。
"""
return arguments
这个函数是搜索工具的实现。对Moonshot AI提供的search工具来说,直接返回传入的参数即可,简洁高效。
第四步:定义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。把response_format设置为{"type": "json_object"}后,Kimi大模型会输出一个合法的、可正确解析的JSON文档。使用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公司作为技术支持,推动物联网发展,为数字化转型提供支持。"
}]
Kimi联网搜索API最佳实践
学会使用联网搜索API只是第一步,真正重要的是把它应用到实际工作场景中去。
案例分析
最近接到一个小需求:公司要做一个服务商导航页,页面上需要展示每个服务商的信息简介。上千个服务商信息,靠人工手动操作,光打开网页就得上千次,更别说一个个浏览、总结、生成简介了。
解决方案
传统做法是通过爬虫获取页面信息,再投喂给大模型生成简介。有了联网搜索API后,这个需求变得异常简单——只需提供网页链接地址,调用联网搜索API就能直接搞定。
实现思路
- 1、安装必要的Python库:确保处理Excel文件的库(如openpyxl或pandas)和发送HTTP请求的库(如requests)已安装就绪
- 2、加载Excel文件:用pandas或openpyxl读取包含URL的Excel文件
- 3、提取URL列:从DataFrame中提取包含URL的列
- 4、定义搜索函数:创建一个函数,发送HTTP请求到Kimi联网搜索API并获取结果,直接使用已集成好的Kimi联网搜索API即可
- 5、遍历URL列表:对每个URL调用搜索函数,将结果存储起来
- 6、更新DataFrame:将搜索结果添加到原始DataFrame中
- 7、保存更新后的Excel文件:将更新后的DataFrame保存回Excel文件
亲测下来,1分钟获取100个网页信息完全没问题。如果想进一步提高效率,可以加并发请求。Kimi对API有速率限制,不过充值会员的话,一分钟内发起的请求数RPM可以达到200。
总结
以上就是通过Kimi API实现联网搜索功能的完整流程,以及这一功能如何帮助我们高效地获取和处理实时数据。借助Kimi API内置的$web_search工具函数,可以轻松将网页信息整合到应用中,提升用户体验和数据处理效率。无论是个人开发者还是企业团队,都能从中找到实实在在的价值。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名