Kimi聯(lián)網(wǎng)搜索API解決什么問題

  1. 多源信息整合:將來自不同來源的數(shù)據(jù)進(jìn)行整合,提供統(tǒng)一的搜索接口。
  2. 實(shí)時(shí)數(shù)據(jù)獲取:幫助用戶獲取最新的實(shí)時(shí)信息,提高數(shù)據(jù)的時(shí)效性。
  3. 高效搜索體驗(yàn):優(yōu)化搜索算法,提高搜索速度和準(zhǔn)確性,提升用戶體驗(yàn)。

如何使用Python集成Kimi API聯(lián)網(wǎng)功能

Kimi為開發(fā)者封裝好了一個簡單方便、開箱即用的“聯(lián)網(wǎng)搜索”功能;此功能基于 Kimi 大模型原有的工具調(diào)用 tool_calls 用法,提供了一個內(nèi)置的工具函數(shù) builtin_function.$web_search,集成的時(shí)候只需要使用這個內(nèi)置工具函數(shù)就可以很簡單的實(shí)現(xiàn)聯(lián)網(wǎng)搜索功能。

下面以獲取一個網(wǎng)頁信息的內(nèi)容為例給大家一步一步演示如何集成Kimi的API聯(lián)網(wǎng)功能:

第一步:導(dǎo)入必要的庫

import json
from typing import Dict, Any
from openai import OpenAI
from openai.types.chat.chat_completion import Choice

這一步導(dǎo)入了處理JSON數(shù)據(jù)、類型注解、與OpenAI API交互所需的庫。

第二步:設(shè)置OpenAI客戶端

client = OpenAI(
api_key="*****",
base_url="https://api.moonshot.cn/v1"
)

在這一步,創(chuàng)建了一個OpenAI客戶端實(shí)例,配置了API密鑰和基礎(chǔ)URL。API秘鑰為注冊賬號時(shí)生成的秘鑰

第三步:定義search_impl函數(shù)

def search_impl(arguments: Dict[str, Any]) -> Any:
"""
在使用 Moonshot AI 提供的 search 工具的場合,只需要原封不動返回 arguments 即可,
不需要額外的處理邏輯。
"""
return arguments

這個函數(shù)是搜索工具的實(shí)現(xiàn),目前只是簡單地返回傳入的參數(shù)。

第四步:定義chat函數(shù)

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

這個函數(shù)用于發(fā)送消息給Kimi大模型,并接收回復(fù)。它處理聊天完成請求,并根據(jù)回復(fù)的finish_reason打印出消耗的Tokens數(shù)量。在這里要注意一下,對大模型返回的數(shù)據(jù)要做一下格式處理,咱們可以使用官方文檔提供的JSON Mode。JSON Mode的基本用法是將 response_format 設(shè)置為 {"type": "json_object"}來使用,Kimi 大模型會按照要求輸出一個合法的、可被正確解析的 JSON 文檔。關(guān)于JSON Mode更多用法可以參考官網(wǎng)文檔有詳細(xì)說明,這里不做贅述。

第五步:處理聊天完成請求的響應(yīng)

使用JSON Mode的目的,一方面是為了節(jié)省token,另一方面也是為了從網(wǎng)頁信息中提取更有價(jià)值的格式化數(shù)據(jù)方便后面二次加工處理。

def main():
web_url = "http://cnzze.cn/api/scd2024090489792d77afd9"
system_prompt = """
請搜索當(dāng)前鏈接地址"""+web_url+""",生成一段200字的內(nèi)容總結(jié),
輸出 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函數(shù),它設(shè)置了一個系統(tǒng)提示,指示模型搜索特定的URL并生成內(nèi)容總結(jié)。然后,它初始化消息列表,包括系統(tǒng)角色的消息和用戶角色的初始提問。進(jìn)入一個循環(huán),不斷發(fā)送消息并接收回復(fù),直到?jīng)]有更多的工具調(diào)用需要執(zhí)行。最后,打印出模型生成的回復(fù)內(nèi)容。

第六步:運(yùn)行腳本

if __name__ == '__main__':
main()

這一步檢查如果這個腳本作為主程序運(yùn)行,將調(diào)用main函數(shù)。最終查看一下控制臺返回的日志信息,符合提示詞中的JSON格式,并且也返回了使用的token數(shù)量。

chat_prompt_tokens:          90
chat_completion_tokens: 267
chat_total_tokens: 357
[{
"summary": "AI手寫服務(wù)-Handwrytten利用人工智能技術(shù)模擬真實(shí)手寫字體,
提供個性化的溝通方式。用戶可選擇字體、筆觸風(fēng)格和布局定制內(nèi)容,適用于客戶關(guān)系維護(hù)、
市場推廣和個人情感表達(dá)。服務(wù)通過Restful API實(shí)現(xiàn)自動化交互,支持用戶認(rèn)證、訂單提交等功能。
Helium公司作為技術(shù)支持,推動物聯(lián)網(wǎng)發(fā)展,為數(shù)字化轉(zhuǎn)型提供支持。"
}]

Kimi聯(lián)網(wǎng)搜索API最佳實(shí)踐

學(xué)會使用聯(lián)網(wǎng)搜索API并不是目的,目的是把這個工具能應(yīng)用到工作場景中。

案例分析:

小智最近接到一個小需求,公司在做一個服務(wù)商的導(dǎo)航頁,導(dǎo)航頁中需要展示服務(wù)商的信息簡介。要知道上千個服務(wù)商信息,光打開網(wǎng)頁都得操作上千次還不算上打開網(wǎng)頁后要去挨個網(wǎng)頁瀏覽查看,然后總結(jié)當(dāng)前網(wǎng)頁的內(nèi)容,最終生成一個信息簡介。

解決方案:

通過爬取的方式去把頁面的信息獲取到然后再投喂給大模型,最終讓大模型輸出一個關(guān)于服務(wù)商的信息簡介。但是有了聯(lián)網(wǎng)搜索API,這個需求實(shí)現(xiàn)起來變得更簡單,只需要把網(wǎng)頁鏈接地址提供出來,然后調(diào)用聯(lián)網(wǎng)搜索API就可以解決。

實(shí)現(xiàn)思路:

經(jīng)過小智親測,1分鐘獲取100個網(wǎng)頁信息沒有問題,當(dāng)然為了提高效率可以加并發(fā)。Kimi對API有速率限制,但如果是充值會員的話,一分鐘內(nèi)發(fā)起的請求數(shù)RPM能達(dá)到200

總結(jié)

以上就是小智為大家?guī)淼姆窒?,如何通過Kimi API實(shí)現(xiàn)聯(lián)網(wǎng)搜索功能,以及這一功能如何幫助我們高效地獲取和處理實(shí)時(shí)數(shù)據(jù)。通過使用Kimi API的內(nèi)置$web_search工具函數(shù),我們可以輕松地將網(wǎng)頁信息整合到我們的應(yīng)用程序中,從而提升用戶體驗(yàn)和數(shù)據(jù)處理的效率。無論是個人開發(fā)者還是企業(yè),都能從中受益。希望這次的分享能幫助大家更好地理解和使用Kimi API的聯(lián)網(wǎng)搜索功能。如果覺得我的文章對你有幫助的話,請不要吝嗇你的點(diǎn)贊、在看和轉(zhuǎn)發(fā)。歡迎大家關(guān)注我的公眾號小智AI指南。

文章轉(zhuǎn)自微信公眾號@小智AI指南

上一篇:

Katacata Ai API平臺全面開放,激發(fā)行業(yè)創(chuàng)新天花板。

下一篇:

最新LangChain+GLM4開發(fā)AI應(yīng)用程序系列(一):快速入門篇
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實(shí)測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時(shí)免費(fèi)