AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Kimi API提供联网搜索功能,仅10分钟获取1000个网页信息
发布日期:2024-09-13 06:12:54 浏览次数: 1936 来源:小智AI指南



kimi API进阶-Function Calling

KimiGPT API接口实战指南

Kimi推出浏览器插件,超级好用

大家好,我是小智。昨天月之暗面短信推送了一条消息,MoonshotAI 联网功能上线,Kimi API正式提供联网搜索功能。收到这条信息后也是第一时间打开了官方文档并对联网功能做了详细了解。下面小智就为大家分享一下,如何通过Kimi API实现联网搜索功能,包括使用内置的web_search的声明和执行流程以及联网搜索对Tokens消耗的影响。

如何使用Kimi联网搜索API

1、注册和获取API密钥

  • 首先,你需要在Kimi联网搜索API的官方网站上注册一个账号。
  • 完成注册后,你会获得一个API密钥(API Key),用于认证你的请求。

2、阅读API文档

  • 在使用API之前,详细阅读官方提供的API文档。文档地址:https://platform.moonshot.cn/docs/guide/use-web-search
  • 文档通常会包括API的基础概念、可用的端点、请求参数、响应格式、错误代码等信息。
  • 进入官方文档入门指南找到联网搜索Tool

Kimi联网搜索API解决什么问题

  1. 多源信息整合:将来自不同来源的数据进行整合,提供统一的搜索接口。
  2. 实时数据获取:帮助用户获取最新的实时信息,提高数据的时效性。
  3. 高效搜索体验:优化搜索算法,提高搜索速度和准确性,提升用户体验。

如何使用Python集成Kimi 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交互所需的库。

第二步:设置OpenAI客户端

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公司作为技术支持,推动物联网发展,为数字化转型提供支持。"
}]

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工具函数,我们可以轻松地将网页信息整合到我们的应用程序中,从而提升用户体验和数据处理的效率。无论是个人开发者还是企业,都能从中受益。希望这次的分享能帮助大家更好地理解和使用Kimi API的联网搜索功能。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询