Skip to content

Commit a595c9e

Browse files
authored
Assistant (#48)
* 助手业务 test_assistant
1 parent 3064c55 commit a595c9e

22 files changed

+881
-9
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import os
2+
import logging
3+
import logging.config
4+
import zhipuai
5+
from zhipuai import ZhipuAI
6+
7+
8+
def test_assistant(logging_conf) -> None:
9+
logging.config.dictConfig(logging_conf) # type: ignore
10+
client = ZhipuAI() # 填写您自己的APIKey
11+
try:
12+
13+
generate = client.assistant.conversation(
14+
assistant_id="659e54b1b8006379b4b2abd6",
15+
model="glm-4-assistant",
16+
messages=[
17+
{
18+
"role": "user",
19+
"content": [{
20+
"type": "text",
21+
"text": "帮我搜索下智谱的cogvideox发布时间"
22+
}]
23+
}
24+
],
25+
stream=True,
26+
attachments=None,
27+
metadata=None,
28+
request_id="request_1790291013237211136",
29+
user_id="12345678"
30+
)
31+
for assistant in generate:
32+
print(assistant)
33+
34+
except zhipuai.core._errors.APIRequestFailedError as err:
35+
print(err)
36+
except zhipuai.core._errors.APIInternalError as err:
37+
print(err)
38+
except zhipuai.core._errors.APIStatusError as err:
39+
print(err)
40+
41+
def test_assistant_query_support(logging_conf) -> None:
42+
logging.config.dictConfig(logging_conf) # type: ignore
43+
client = ZhipuAI() # 填写您自己的APIKey
44+
try:
45+
46+
response = client.assistant.query_support(
47+
assistant_id_list=[],
48+
request_id="request_1790291013237211136",
49+
user_id="12345678"
50+
)
51+
print(response)
52+
53+
except zhipuai.core._errors.APIRequestFailedError as err:
54+
print(err)
55+
except zhipuai.core._errors.APIInternalError as err:
56+
print(err)
57+
except zhipuai.core._errors.APIStatusError as err:
58+
print(err)
59+
60+
def test_assistant_query_conversation_usage(logging_conf) -> None:
61+
logging.config.dictConfig(logging_conf) # type: ignore
62+
client = ZhipuAI() # 填写您自己的APIKey
63+
try:
64+
response = client.assistant.query_conversation_usage(
65+
assistant_id="659e54b1b8006379b4b2abd6",
66+
request_id="request_1790291013237211136",
67+
user_id="12345678"
68+
)
69+
print(response)
70+
except zhipuai.core._errors.APIRequestFailedError as err:
71+
print(err)
72+
except zhipuai.core._errors.APIInternalError as err:
73+
print(err)
74+
except zhipuai.core._errors.APIStatusError as err:
75+
print(err)

zhipuai/_client.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ def __init__(
6161
self.knowledge = api_resource.Knowledge(self)
6262
self.tools = api_resource.Tools(self)
6363
self.videos = api_resource.Videos(self)
64+
self.assistant = api_resource.Assistant(self)
6465

6566
@property
6667
@override

zhipuai/api_resource/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@
3030
from .videos import (
3131
Videos,
3232
)
33+
from .assistant import (
34+
Assistant,
35+
)
36+
3337
__all__ = [
3438
'Videos',
3539
'AsyncCompletions',
@@ -43,5 +47,6 @@
4347
'Batches',
4448
'Knowledge',
4549
'Tools',
50+
'Assistant',
4651

4752
]
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
3+
from zhipuai.api_resource.assistant.assistant import Assistant
4+
5+
__all__= [
6+
"Assistant"
7+
]
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
from __future__ import annotations
2+
3+
from typing import TYPE_CHECKING, List, Mapping, cast, Optional, Dict
4+
from typing_extensions import Literal
5+
6+
from ...types.assistant import AssistantCompletion
7+
from ...types.assistant.assistant_conversation_resp import ConversationUsageList, ConversationUsageListResp
8+
from ...types.assistant.assistant_support_resp import AssistantSupportResp
9+
from ...core import BaseAPI, maybe_transform, StreamResponse
10+
from ...core import NOT_GIVEN, Body, Headers, NotGiven
11+
12+
import httpx
13+
14+
from ...core import (
15+
make_request_options,
16+
)
17+
from ...core import deepcopy_minimal, extract_files
18+
19+
if TYPE_CHECKING:
20+
from ..._client import ZhipuAI
21+
22+
from ...types.assistant import assistant_create_params
23+
from ...types.assistant import assistant_conversation_params
24+
25+
__all__ = ["Assistant"]
26+
27+
28+
class Assistant(BaseAPI):
29+
30+
def __init__(self, client: "ZhipuAI") -> None:
31+
super().__init__(client)
32+
33+
def conversation(
34+
self,
35+
assistant_id: str,
36+
model: str,
37+
messages: List[assistant_create_params.ConversationMessage],
38+
*,
39+
stream: bool = True,
40+
conversation_id: Optional[str] = None,
41+
attachments: Optional[List[assistant_create_params.AssistantAttachments]] = None,
42+
metadata: dict | None = None,
43+
request_id: str = None,
44+
user_id: str = None,
45+
extra_headers: Headers | None = None,
46+
extra_body: Body | None = None,
47+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
48+
) -> StreamResponse[AssistantCompletion]:
49+
body = deepcopy_minimal(
50+
{
51+
"assistant_id": assistant_id,
52+
"model": model,
53+
"messages": messages,
54+
"stream": stream,
55+
"conversation_id": conversation_id,
56+
"attachments": attachments,
57+
"metadata": metadata,
58+
"request_id": request_id,
59+
"user_id": user_id,
60+
}
61+
)
62+
return self._post(
63+
"/assistant",
64+
body=maybe_transform(body, assistant_create_params.AssistantParameters),
65+
options=make_request_options(
66+
extra_headers=extra_headers, extra_body=extra_body, timeout=timeout
67+
),
68+
cast_type=AssistantCompletion,
69+
stream=stream or True,
70+
stream_cls=StreamResponse[AssistantCompletion],
71+
)
72+
73+
def query_support(
74+
self,
75+
*,
76+
assistant_id_list: List[str] = None,
77+
request_id: str = None,
78+
user_id: str = None,
79+
extra_headers: Headers | None = None,
80+
extra_body: Body | None = None,
81+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
82+
) -> AssistantSupportResp:
83+
body = deepcopy_minimal(
84+
{
85+
"assistant_id_list": assistant_id_list,
86+
"request_id": request_id,
87+
"user_id": user_id,
88+
}
89+
)
90+
return self._post(
91+
"/assistant/list",
92+
body=body,
93+
options=make_request_options(
94+
extra_headers=extra_headers, extra_body=extra_body, timeout=timeout
95+
),
96+
cast_type=AssistantSupportResp,
97+
)
98+
99+
def query_conversation_usage(
100+
self,
101+
assistant_id: str,
102+
page: int = 1,
103+
page_size: int = 10,
104+
*,
105+
request_id: str = None,
106+
user_id: str = None,
107+
extra_headers: Headers | None = None,
108+
extra_body: Body | None = None,
109+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
110+
) -> ConversationUsageListResp:
111+
body = deepcopy_minimal(
112+
{
113+
"assistant_id": assistant_id,
114+
"page": page,
115+
"page_size": page_size,
116+
"request_id": request_id,
117+
"user_id": user_id,
118+
}
119+
)
120+
return self._post(
121+
"/assistant/conversation/list",
122+
123+
body=maybe_transform(body, assistant_conversation_params.ConversationParameters),
124+
options=make_request_options(
125+
extra_headers=extra_headers, extra_body=extra_body, timeout=timeout
126+
),
127+
cast_type=ConversationUsageListResp,
128+
)

0 commit comments

Comments
 (0)