Skip to content

Commit f639a55

Browse files
author
jinhaiyang
committed
【web_search】web_search
1 parent 3b6845f commit f639a55

File tree

9 files changed

+163
-48
lines changed

9 files changed

+163
-48
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from zhipuai import ZhipuAI
2+
import zhipuai
3+
4+
import logging
5+
import logging.config
6+
7+
8+
def test_web_search(logging_conf):
9+
logging.config.dictConfig(logging_conf) # type: ignore
10+
client = ZhipuAI() # 填写您自己的APIKey
11+
try:
12+
response = client.web_search.web_search(
13+
search_engine="search-std",
14+
search_query="2025特朗普向中国加征了多少关税"
15+
)
16+
print(response)
17+
18+
except zhipuai.core._errors.APIRequestFailedError as err:
19+
print(err)
20+
except zhipuai.core._errors.APIInternalError as err:
21+
print(err)
22+
except zhipuai.core._errors.APIStatusError as err:
23+
print(err)
24+

zhipuai/_client.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def __init__(
6262
self.tools = api_resource.Tools(self)
6363
self.videos = api_resource.Videos(self)
6464
self.assistant = api_resource.Assistant(self)
65+
self.web_search = api_resource.WebSearchApi(self)
6566

6667
@property
6768
@override

zhipuai/api_resource/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@
3434
Assistant,
3535
)
3636

37+
from .web_search import (
38+
WebSearchApi
39+
)
40+
3741
__all__ = [
3842
'Videos',
3943
'AsyncCompletions',
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from .web_search import WebSearchApi
2+
3+
__all__ = ['WebSearchApi']
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
from __future__ import annotations
2+
3+
from typing import TYPE_CHECKING, List, Union, Dict, Optional
4+
from ...types.sensitive_word_check import SensitiveWordCheckRequest
5+
from ...core import NOT_GIVEN, Body, Headers, NotGiven, BaseAPI, maybe_transform, StreamResponse, deepcopy_minimal
6+
7+
import httpx
8+
9+
from ...core import (
10+
make_request_options,
11+
)
12+
import logging
13+
14+
from ...types.web_search import web_search_create_params
15+
from ...types.web_search.web_search_resp import WebSearchResp
16+
17+
logger = logging.getLogger(__name__)
18+
19+
if TYPE_CHECKING:
20+
from ..._client import ZhipuAI
21+
22+
__all__ = ["WebSearchApi"]
23+
24+
25+
class WebSearchApi(BaseAPI):
26+
def __init__(self, client: "ZhipuAI") -> None:
27+
super().__init__(client)
28+
29+
def web_search(
30+
self,
31+
*,
32+
request_id: Optional[str] | NotGiven = NOT_GIVEN,
33+
search_engine: Optional[str] | NotGiven = NOT_GIVEN,
34+
search_query: Optional[str] | NotGiven = NOT_GIVEN,
35+
user_id: Optional[str] | NotGiven = NOT_GIVEN,
36+
sensitive_word_check: Optional[SensitiveWordCheckRequest] | NotGiven = NOT_GIVEN,
37+
extra_headers: Headers | None = None,
38+
extra_body: Body | None = None,
39+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
40+
) -> WebSearchResp:
41+
42+
body = deepcopy_minimal(
43+
{
44+
"request_id": request_id,
45+
"search_engine": search_engine,
46+
"search_query": search_query,
47+
"user_id": user_id,
48+
"sensitive_word_check": sensitive_word_check
49+
})
50+
return self._post(
51+
"/web_search",
52+
body= maybe_transform(body, web_search_create_params.WebSearchCreatParams),
53+
options=make_request_options(
54+
extra_headers=extra_headers, extra_body=extra_body, timeout=timeout
55+
),
56+
cast_type=WebSearchResp
57+
)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
from .web_search_create_params import (
3+
WebSearchCreatParams
4+
)
5+
6+
__all__ = ["WebSearchCreatParams"]
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
from __future__ import annotations
3+
4+
from typing import Union, Optional, List
5+
from typing_extensions import Literal, Required, TypedDict
6+
from ...types.sensitive_word_check import SensitiveWordCheckRequest
7+
8+
9+
__all__ = ["WebSearchCreatParams"]
10+
11+
12+
class WebSearchCreatParams(TypedDict):
13+
14+
search_engine: str
15+
"""搜索引擎"""
16+
17+
search_query: str
18+
"""搜索query文本"""
19+
20+
request_id: str
21+
"""由用户端传参,需保证唯一性;用于区分每次请求的唯一标识,用户端不传时平台会默认生成。"""
22+
23+
user_id: str
24+
"""用户端。"""
25+
26+
sensitive_word_check: Optional[SensitiveWordCheckRequest]

zhipuai/types/web_search/web_search_params.py

Lines changed: 0 additions & 48 deletions
This file was deleted.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from typing import List, Optional
2+
3+
from ...core import BaseModel
4+
5+
__all__ = [
6+
"SearchIntentResp",
7+
"SearchResultResp",
8+
]
9+
10+
11+
class SearchIntentResp(BaseModel):
12+
query: str
13+
# 搜索优化 query
14+
intent: str
15+
# 判断的意图类型
16+
keywords: str
17+
# 搜索关键词
18+
19+
20+
class SearchResultResp(BaseModel):
21+
index: int
22+
# 搜索轮次,默认为 0
23+
title: str
24+
# 标题
25+
link: str
26+
# 链接
27+
content: str
28+
# 内容
29+
icon: str
30+
# 图标
31+
media: str
32+
# 来源媒体
33+
refer: str
34+
# 角标序号 [ref_1]
35+
36+
class WebSearchResp(BaseModel):
37+
created: Optional[int] = None
38+
request_id: Optional[str] = None
39+
id: Optional[str] = None
40+
search_intents: Optional[SearchIntentResp]
41+
search_results: Optional[SearchResultResp]
42+

0 commit comments

Comments
 (0)