vectorvein 0.2.7__py3-none-any.whl → 0.2.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vectorvein/chat_clients/__init__.py +582 -582
- vectorvein/chat_clients/anthropic_client.py +309 -32
- vectorvein/chat_clients/base_client.py +302 -24
- vectorvein/chat_clients/openai_compatible_client.py +312 -38
- vectorvein/types/llm_parameters.py +9 -1
- {vectorvein-0.2.7.dist-info → vectorvein-0.2.9.dist-info}/METADATA +2 -2
- {vectorvein-0.2.7.dist-info → vectorvein-0.2.9.dist-info}/RECORD +9 -9
- {vectorvein-0.2.7.dist-info → vectorvein-0.2.9.dist-info}/WHEEL +0 -0
- {vectorvein-0.2.7.dist-info → vectorvein-0.2.9.dist-info}/entry_points.txt +0 -0
@@ -1,11 +1,30 @@
|
|
1
1
|
# @Author: Bi Ying
|
2
2
|
# @Date: 2024-07-26 14:48:55
|
3
3
|
import json
|
4
|
-
from typing import
|
4
|
+
from typing import (
|
5
|
+
Any,
|
6
|
+
Dict,
|
7
|
+
List,
|
8
|
+
Union,
|
9
|
+
Literal,
|
10
|
+
Iterable,
|
11
|
+
overload,
|
12
|
+
Optional,
|
13
|
+
Generator,
|
14
|
+
AsyncGenerator,
|
15
|
+
)
|
5
16
|
|
6
17
|
import httpx
|
7
18
|
from openai._types import NotGiven as OpenAINotGiven
|
8
19
|
from openai._types import NOT_GIVEN as OPENAI_NOT_GIVEN
|
20
|
+
from openai._types import Headers, Query, Body
|
21
|
+
from openai.types.shared_params.metadata import Metadata
|
22
|
+
from openai.types.chat.completion_create_params import ResponseFormat
|
23
|
+
from openai.types.chat.chat_completion_modality import ChatCompletionModality
|
24
|
+
from openai.types.chat.chat_completion_audio_param import ChatCompletionAudioParam
|
25
|
+
from openai.types.chat.chat_completion_reasoning_effort import ChatCompletionReasoningEffort
|
26
|
+
from openai.types.chat.chat_completion_stream_options_param import ChatCompletionStreamOptionsParam
|
27
|
+
from openai.types.chat.chat_completion_prediction_content_param import ChatCompletionPredictionContentParam
|
9
28
|
from anthropic import (
|
10
29
|
Anthropic,
|
11
30
|
AnthropicVertex,
|
@@ -21,6 +40,7 @@ from anthropic.types import (
|
|
21
40
|
RedactedThinkingBlock,
|
22
41
|
MessageParam,
|
23
42
|
ToolUseBlock,
|
43
|
+
ThinkingConfigParam,
|
24
44
|
RawMessageDeltaEvent,
|
25
45
|
RawMessageStartEvent,
|
26
46
|
RawContentBlockStartEvent,
|
@@ -45,7 +65,6 @@ from ..types.llm_parameters import (
|
|
45
65
|
ChatCompletionMessage,
|
46
66
|
ChatCompletionToolParam,
|
47
67
|
ChatCompletionDeltaMessage,
|
48
|
-
ChatCompletionStreamOptionsParam,
|
49
68
|
)
|
50
69
|
|
51
70
|
|
@@ -261,11 +280,33 @@ class AnthropicChatClient(BaseChatClient):
|
|
261
280
|
max_tokens: int | None = None,
|
262
281
|
tools: Iterable[ToolParam] | NotGiven = NOT_GIVEN,
|
263
282
|
tool_choice: ToolChoice | NotGiven = NOT_GIVEN,
|
264
|
-
response_format:
|
283
|
+
response_format: ResponseFormat | NotGiven = NOT_GIVEN,
|
265
284
|
stream_options: ChatCompletionStreamOptionsParam | None = None,
|
266
285
|
top_p: float | NotGiven | None = NOT_GIVEN,
|
267
286
|
skip_cutoff: bool = False,
|
268
|
-
|
287
|
+
audio: Optional[ChatCompletionAudioParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
288
|
+
frequency_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
289
|
+
logit_bias: Optional[Dict[str, int]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
290
|
+
logprobs: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
291
|
+
max_completion_tokens: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
292
|
+
metadata: Optional[Metadata] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
293
|
+
modalities: Optional[List[ChatCompletionModality]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
294
|
+
n: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
295
|
+
parallel_tool_calls: bool | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
296
|
+
prediction: Optional[ChatCompletionPredictionContentParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
297
|
+
presence_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
298
|
+
reasoning_effort: Optional[ChatCompletionReasoningEffort] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
299
|
+
thinking: ThinkingConfigParam | None | NotGiven = NOT_GIVEN,
|
300
|
+
seed: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
301
|
+
service_tier: Optional[Literal["auto", "default"]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
302
|
+
stop: Union[Optional[str], List[str]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
303
|
+
store: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
304
|
+
top_logprobs: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
305
|
+
user: str | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
306
|
+
extra_headers: Headers | None = None,
|
307
|
+
extra_query: Query | None = None,
|
308
|
+
extra_body: Body | None = None,
|
309
|
+
timeout: float | httpx.Timeout | None | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
269
310
|
) -> ChatCompletionMessage:
|
270
311
|
pass
|
271
312
|
|
@@ -280,11 +321,33 @@ class AnthropicChatClient(BaseChatClient):
|
|
280
321
|
max_tokens: int | None = None,
|
281
322
|
tools: Iterable[ToolParam] | NotGiven = NOT_GIVEN,
|
282
323
|
tool_choice: ToolChoice | NotGiven = NOT_GIVEN,
|
283
|
-
response_format:
|
324
|
+
response_format: ResponseFormat | NotGiven = NOT_GIVEN,
|
284
325
|
stream_options: ChatCompletionStreamOptionsParam | None = None,
|
285
326
|
top_p: float | NotGiven | None = NOT_GIVEN,
|
286
327
|
skip_cutoff: bool = False,
|
287
|
-
|
328
|
+
audio: Optional[ChatCompletionAudioParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
329
|
+
frequency_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
330
|
+
logit_bias: Optional[Dict[str, int]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
331
|
+
logprobs: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
332
|
+
max_completion_tokens: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
333
|
+
metadata: Optional[Metadata] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
334
|
+
modalities: Optional[List[ChatCompletionModality]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
335
|
+
n: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
336
|
+
parallel_tool_calls: bool | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
337
|
+
prediction: Optional[ChatCompletionPredictionContentParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
338
|
+
presence_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
339
|
+
reasoning_effort: Optional[ChatCompletionReasoningEffort] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
340
|
+
thinking: ThinkingConfigParam | None | NotGiven = NOT_GIVEN,
|
341
|
+
seed: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
342
|
+
service_tier: Optional[Literal["auto", "default"]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
343
|
+
stop: Union[Optional[str], List[str]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
344
|
+
store: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
345
|
+
top_logprobs: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
346
|
+
user: str | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
347
|
+
extra_headers: Headers | None = None,
|
348
|
+
extra_query: Query | None = None,
|
349
|
+
extra_body: Body | None = None,
|
350
|
+
timeout: float | httpx.Timeout | None | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
288
351
|
) -> Generator[ChatCompletionDeltaMessage, None, None]:
|
289
352
|
pass
|
290
353
|
|
@@ -299,11 +362,33 @@ class AnthropicChatClient(BaseChatClient):
|
|
299
362
|
max_tokens: int | None = None,
|
300
363
|
tools: Iterable[ToolParam] | NotGiven = NOT_GIVEN,
|
301
364
|
tool_choice: ToolChoice | NotGiven = NOT_GIVEN,
|
302
|
-
response_format:
|
365
|
+
response_format: ResponseFormat | NotGiven = NOT_GIVEN,
|
303
366
|
stream_options: ChatCompletionStreamOptionsParam | None = None,
|
304
367
|
top_p: float | NotGiven | None = NOT_GIVEN,
|
305
368
|
skip_cutoff: bool = False,
|
306
|
-
|
369
|
+
audio: Optional[ChatCompletionAudioParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
370
|
+
frequency_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
371
|
+
logit_bias: Optional[Dict[str, int]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
372
|
+
logprobs: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
373
|
+
max_completion_tokens: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
374
|
+
metadata: Optional[Metadata] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
375
|
+
modalities: Optional[List[ChatCompletionModality]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
376
|
+
n: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
377
|
+
parallel_tool_calls: bool | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
378
|
+
prediction: Optional[ChatCompletionPredictionContentParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
379
|
+
presence_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
380
|
+
reasoning_effort: Optional[ChatCompletionReasoningEffort] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
381
|
+
thinking: ThinkingConfigParam | None | NotGiven = NOT_GIVEN,
|
382
|
+
seed: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
383
|
+
service_tier: Optional[Literal["auto", "default"]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
384
|
+
stop: Union[Optional[str], List[str]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
385
|
+
store: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
386
|
+
top_logprobs: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
387
|
+
user: str | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
388
|
+
extra_headers: Headers | None = None,
|
389
|
+
extra_query: Query | None = None,
|
390
|
+
extra_body: Body | None = None,
|
391
|
+
timeout: float | httpx.Timeout | None | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
307
392
|
) -> ChatCompletionMessage | Generator[ChatCompletionDeltaMessage, Any, None]:
|
308
393
|
pass
|
309
394
|
|
@@ -317,11 +402,33 @@ class AnthropicChatClient(BaseChatClient):
|
|
317
402
|
max_tokens: int | None = None,
|
318
403
|
tools: Iterable[ToolParam] | NotGiven = NOT_GIVEN,
|
319
404
|
tool_choice: ToolChoice | NotGiven = NOT_GIVEN,
|
320
|
-
response_format:
|
405
|
+
response_format: ResponseFormat | NotGiven = NOT_GIVEN,
|
321
406
|
stream_options: ChatCompletionStreamOptionsParam | None = None,
|
322
407
|
top_p: float | NotGiven | None = NOT_GIVEN,
|
323
408
|
skip_cutoff: bool = False,
|
324
|
-
|
409
|
+
audio: Optional[ChatCompletionAudioParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
410
|
+
frequency_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
411
|
+
logit_bias: Optional[Dict[str, int]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
412
|
+
logprobs: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
413
|
+
max_completion_tokens: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
414
|
+
metadata: Optional[Metadata] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
415
|
+
modalities: Optional[List[ChatCompletionModality]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
416
|
+
n: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
417
|
+
parallel_tool_calls: bool | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
418
|
+
prediction: Optional[ChatCompletionPredictionContentParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
419
|
+
presence_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
420
|
+
reasoning_effort: Optional[ChatCompletionReasoningEffort] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
421
|
+
thinking: ThinkingConfigParam | None | NotGiven = NOT_GIVEN,
|
422
|
+
seed: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
423
|
+
service_tier: Optional[Literal["auto", "default"]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
424
|
+
stop: Union[Optional[str], List[str]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
425
|
+
store: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
426
|
+
top_logprobs: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
427
|
+
user: str | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
428
|
+
extra_headers: Headers | None = None,
|
429
|
+
extra_query: Query | None = None,
|
430
|
+
extra_body: Body | None = None,
|
431
|
+
timeout: float | httpx.Timeout | None | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
325
432
|
):
|
326
433
|
if model is not None:
|
327
434
|
self.model = model
|
@@ -342,9 +449,6 @@ class AnthropicChatClient(BaseChatClient):
|
|
342
449
|
|
343
450
|
formatted_messages = refactor_into_openai_messages(messages)
|
344
451
|
|
345
|
-
if "thinking" in kwargs:
|
346
|
-
kwargs.pop("thinking") # TODO: 暂时没看到如何处理 openai 接口的 thinking 参数,如 openrouter 中使用
|
347
|
-
|
348
452
|
if self.stream:
|
349
453
|
|
350
454
|
def _generator():
|
@@ -369,7 +473,28 @@ class AnthropicChatClient(BaseChatClient):
|
|
369
473
|
stream_options=stream_options,
|
370
474
|
top_p=top_p,
|
371
475
|
skip_cutoff=skip_cutoff,
|
372
|
-
|
476
|
+
audio=audio,
|
477
|
+
frequency_penalty=frequency_penalty,
|
478
|
+
logit_bias=logit_bias,
|
479
|
+
logprobs=logprobs,
|
480
|
+
max_completion_tokens=max_completion_tokens,
|
481
|
+
metadata=metadata,
|
482
|
+
modalities=modalities,
|
483
|
+
n=n,
|
484
|
+
parallel_tool_calls=parallel_tool_calls,
|
485
|
+
prediction=prediction,
|
486
|
+
presence_penalty=presence_penalty,
|
487
|
+
reasoning_effort=reasoning_effort,
|
488
|
+
seed=seed,
|
489
|
+
service_tier=service_tier,
|
490
|
+
stop=stop,
|
491
|
+
store=store,
|
492
|
+
top_logprobs=top_logprobs,
|
493
|
+
user=user,
|
494
|
+
extra_headers=extra_headers,
|
495
|
+
extra_query=extra_query,
|
496
|
+
extra_body=extra_body,
|
497
|
+
timeout=timeout,
|
373
498
|
)
|
374
499
|
for chunk in response:
|
375
500
|
yield chunk
|
@@ -396,7 +521,28 @@ class AnthropicChatClient(BaseChatClient):
|
|
396
521
|
response_format=response_format,
|
397
522
|
top_p=top_p,
|
398
523
|
skip_cutoff=skip_cutoff,
|
399
|
-
|
524
|
+
audio=audio,
|
525
|
+
frequency_penalty=frequency_penalty,
|
526
|
+
logit_bias=logit_bias,
|
527
|
+
logprobs=logprobs,
|
528
|
+
max_completion_tokens=max_completion_tokens,
|
529
|
+
metadata=metadata,
|
530
|
+
modalities=modalities,
|
531
|
+
n=n,
|
532
|
+
parallel_tool_calls=parallel_tool_calls,
|
533
|
+
prediction=prediction,
|
534
|
+
presence_penalty=presence_penalty,
|
535
|
+
reasoning_effort=reasoning_effort,
|
536
|
+
seed=seed,
|
537
|
+
service_tier=service_tier,
|
538
|
+
stop=stop,
|
539
|
+
store=store,
|
540
|
+
top_logprobs=top_logprobs,
|
541
|
+
user=user,
|
542
|
+
extra_headers=extra_headers,
|
543
|
+
extra_query=extra_query,
|
544
|
+
extra_body=extra_body,
|
545
|
+
timeout=timeout,
|
400
546
|
)
|
401
547
|
|
402
548
|
raw_client = self.raw_client # 调用完 self.raw_client 后,self.model_id 会被赋值
|
@@ -410,6 +556,8 @@ class AnthropicChatClient(BaseChatClient):
|
|
410
556
|
top_p = NOT_GIVEN
|
411
557
|
if isinstance(self.temperature, NotGiven) or self.temperature is None:
|
412
558
|
self.temperature = NOT_GIVEN
|
559
|
+
if isinstance(thinking, NotGiven) or thinking is None:
|
560
|
+
thinking = NOT_GIVEN
|
413
561
|
|
414
562
|
if messages[0].get("role") == "system":
|
415
563
|
system_prompt: str = messages[0]["content"]
|
@@ -454,7 +602,7 @@ class AnthropicChatClient(BaseChatClient):
|
|
454
602
|
tools=tools_params,
|
455
603
|
tool_choice=tool_choice_param,
|
456
604
|
top_p=top_p,
|
457
|
-
|
605
|
+
thinking=thinking,
|
458
606
|
)
|
459
607
|
|
460
608
|
def generator():
|
@@ -528,7 +676,7 @@ class AnthropicChatClient(BaseChatClient):
|
|
528
676
|
tools=tools_params,
|
529
677
|
tool_choice=tool_choice_param,
|
530
678
|
top_p=top_p,
|
531
|
-
|
679
|
+
thinking=thinking,
|
532
680
|
)
|
533
681
|
|
534
682
|
result = {
|
@@ -662,11 +810,33 @@ class AsyncAnthropicChatClient(BaseAsyncChatClient):
|
|
662
810
|
max_tokens: int | None = None,
|
663
811
|
tools: Iterable[ToolParam] | NotGiven = NOT_GIVEN,
|
664
812
|
tool_choice: ToolChoice | NotGiven = NOT_GIVEN,
|
665
|
-
response_format:
|
813
|
+
response_format: ResponseFormat | NotGiven = NOT_GIVEN,
|
666
814
|
stream_options: ChatCompletionStreamOptionsParam | None = None,
|
667
815
|
top_p: float | NotGiven | None = NOT_GIVEN,
|
668
816
|
skip_cutoff: bool = False,
|
669
|
-
|
817
|
+
audio: Optional[ChatCompletionAudioParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
818
|
+
frequency_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
819
|
+
logit_bias: Optional[Dict[str, int]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
820
|
+
logprobs: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
821
|
+
max_completion_tokens: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
822
|
+
metadata: Optional[Metadata] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
823
|
+
modalities: Optional[List[ChatCompletionModality]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
824
|
+
n: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
825
|
+
parallel_tool_calls: bool | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
826
|
+
prediction: Optional[ChatCompletionPredictionContentParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
827
|
+
presence_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
828
|
+
reasoning_effort: Optional[ChatCompletionReasoningEffort] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
829
|
+
thinking: ThinkingConfigParam | None | NotGiven = NOT_GIVEN,
|
830
|
+
seed: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
831
|
+
service_tier: Optional[Literal["auto", "default"]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
832
|
+
stop: Union[Optional[str], List[str]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
833
|
+
store: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
834
|
+
top_logprobs: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
835
|
+
user: str | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
836
|
+
extra_headers: Headers | None = None,
|
837
|
+
extra_query: Query | None = None,
|
838
|
+
extra_body: Body | None = None,
|
839
|
+
timeout: float | httpx.Timeout | None | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
670
840
|
) -> ChatCompletionMessage:
|
671
841
|
pass
|
672
842
|
|
@@ -681,11 +851,33 @@ class AsyncAnthropicChatClient(BaseAsyncChatClient):
|
|
681
851
|
max_tokens: int | None = None,
|
682
852
|
tools: Iterable[ToolParam] | NotGiven = NOT_GIVEN,
|
683
853
|
tool_choice: ToolChoice | NotGiven = NOT_GIVEN,
|
684
|
-
response_format:
|
854
|
+
response_format: ResponseFormat | NotGiven = NOT_GIVEN,
|
685
855
|
stream_options: ChatCompletionStreamOptionsParam | None = None,
|
686
856
|
top_p: float | NotGiven | None = NOT_GIVEN,
|
687
857
|
skip_cutoff: bool = False,
|
688
|
-
|
858
|
+
audio: Optional[ChatCompletionAudioParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
859
|
+
frequency_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
860
|
+
logit_bias: Optional[Dict[str, int]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
861
|
+
logprobs: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
862
|
+
max_completion_tokens: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
863
|
+
metadata: Optional[Metadata] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
864
|
+
modalities: Optional[List[ChatCompletionModality]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
865
|
+
n: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
866
|
+
parallel_tool_calls: bool | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
867
|
+
prediction: Optional[ChatCompletionPredictionContentParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
868
|
+
presence_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
869
|
+
reasoning_effort: Optional[ChatCompletionReasoningEffort] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
870
|
+
thinking: ThinkingConfigParam | None | NotGiven = NOT_GIVEN,
|
871
|
+
seed: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
872
|
+
service_tier: Optional[Literal["auto", "default"]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
873
|
+
stop: Union[Optional[str], List[str]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
874
|
+
store: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
875
|
+
top_logprobs: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
876
|
+
user: str | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
877
|
+
extra_headers: Headers | None = None,
|
878
|
+
extra_query: Query | None = None,
|
879
|
+
extra_body: Body | None = None,
|
880
|
+
timeout: float | httpx.Timeout | None | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
689
881
|
) -> AsyncGenerator[ChatCompletionDeltaMessage, Any]:
|
690
882
|
pass
|
691
883
|
|
@@ -700,11 +892,33 @@ class AsyncAnthropicChatClient(BaseAsyncChatClient):
|
|
700
892
|
max_tokens: int | None = None,
|
701
893
|
tools: Iterable[ToolParam] | NotGiven = NOT_GIVEN,
|
702
894
|
tool_choice: ToolChoice | NotGiven = NOT_GIVEN,
|
703
|
-
response_format:
|
895
|
+
response_format: ResponseFormat | NotGiven = NOT_GIVEN,
|
704
896
|
stream_options: ChatCompletionStreamOptionsParam | None = None,
|
705
897
|
top_p: float | NotGiven | None = NOT_GIVEN,
|
706
898
|
skip_cutoff: bool = False,
|
707
|
-
|
899
|
+
audio: Optional[ChatCompletionAudioParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
900
|
+
frequency_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
901
|
+
logit_bias: Optional[Dict[str, int]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
902
|
+
logprobs: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
903
|
+
max_completion_tokens: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
904
|
+
metadata: Optional[Metadata] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
905
|
+
modalities: Optional[List[ChatCompletionModality]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
906
|
+
n: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
907
|
+
parallel_tool_calls: bool | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
908
|
+
prediction: Optional[ChatCompletionPredictionContentParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
909
|
+
presence_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
910
|
+
reasoning_effort: Optional[ChatCompletionReasoningEffort] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
911
|
+
thinking: ThinkingConfigParam | None | NotGiven = NOT_GIVEN,
|
912
|
+
seed: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
913
|
+
service_tier: Optional[Literal["auto", "default"]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
914
|
+
stop: Union[Optional[str], List[str]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
915
|
+
store: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
916
|
+
top_logprobs: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
917
|
+
user: str | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
918
|
+
extra_headers: Headers | None = None,
|
919
|
+
extra_query: Query | None = None,
|
920
|
+
extra_body: Body | None = None,
|
921
|
+
timeout: float | httpx.Timeout | None | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
708
922
|
) -> ChatCompletionMessage | AsyncGenerator[ChatCompletionDeltaMessage, Any]:
|
709
923
|
pass
|
710
924
|
|
@@ -718,11 +932,33 @@ class AsyncAnthropicChatClient(BaseAsyncChatClient):
|
|
718
932
|
max_tokens: int | None = None,
|
719
933
|
tools: Iterable[ToolParam] | NotGiven = NOT_GIVEN,
|
720
934
|
tool_choice: ToolChoice | NotGiven = NOT_GIVEN,
|
721
|
-
response_format:
|
935
|
+
response_format: ResponseFormat | NotGiven = NOT_GIVEN,
|
722
936
|
stream_options: ChatCompletionStreamOptionsParam | None = None,
|
723
937
|
top_p: float | NotGiven | None = NOT_GIVEN,
|
724
938
|
skip_cutoff: bool = False,
|
725
|
-
|
939
|
+
audio: Optional[ChatCompletionAudioParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
940
|
+
frequency_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
941
|
+
logit_bias: Optional[Dict[str, int]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
942
|
+
logprobs: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
943
|
+
max_completion_tokens: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
944
|
+
metadata: Optional[Metadata] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
945
|
+
modalities: Optional[List[ChatCompletionModality]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
946
|
+
n: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
947
|
+
parallel_tool_calls: bool | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
948
|
+
prediction: Optional[ChatCompletionPredictionContentParam] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
949
|
+
presence_penalty: Optional[float] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
950
|
+
reasoning_effort: Optional[ChatCompletionReasoningEffort] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
951
|
+
thinking: ThinkingConfigParam | None | NotGiven = NOT_GIVEN,
|
952
|
+
seed: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
953
|
+
service_tier: Optional[Literal["auto", "default"]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
954
|
+
stop: Union[Optional[str], List[str]] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
955
|
+
store: Optional[bool] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
956
|
+
top_logprobs: Optional[int] | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
957
|
+
user: str | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
958
|
+
extra_headers: Headers | None = None,
|
959
|
+
extra_query: Query | None = None,
|
960
|
+
extra_body: Body | None = None,
|
961
|
+
timeout: float | httpx.Timeout | None | OpenAINotGiven = OPENAI_NOT_GIVEN,
|
726
962
|
):
|
727
963
|
if model is not None:
|
728
964
|
self.model = model
|
@@ -743,9 +979,6 @@ class AsyncAnthropicChatClient(BaseAsyncChatClient):
|
|
743
979
|
|
744
980
|
formatted_messages = refactor_into_openai_messages(messages)
|
745
981
|
|
746
|
-
if "thinking" in kwargs:
|
747
|
-
kwargs.pop("thinking") # TODO: 暂时没看到如何处理 openai 接口的 thinking 参数,如 openrouter 中使用
|
748
|
-
|
749
982
|
if self.stream:
|
750
983
|
|
751
984
|
async def _generator():
|
@@ -771,7 +1004,28 @@ class AsyncAnthropicChatClient(BaseAsyncChatClient):
|
|
771
1004
|
stream_options=stream_options,
|
772
1005
|
top_p=top_p,
|
773
1006
|
skip_cutoff=skip_cutoff,
|
774
|
-
|
1007
|
+
audio=audio,
|
1008
|
+
frequency_penalty=frequency_penalty,
|
1009
|
+
logit_bias=logit_bias,
|
1010
|
+
logprobs=logprobs,
|
1011
|
+
max_completion_tokens=max_completion_tokens,
|
1012
|
+
metadata=metadata,
|
1013
|
+
modalities=modalities,
|
1014
|
+
n=n,
|
1015
|
+
parallel_tool_calls=parallel_tool_calls,
|
1016
|
+
prediction=prediction,
|
1017
|
+
presence_penalty=presence_penalty,
|
1018
|
+
reasoning_effort=reasoning_effort,
|
1019
|
+
seed=seed,
|
1020
|
+
service_tier=service_tier,
|
1021
|
+
stop=stop,
|
1022
|
+
store=store,
|
1023
|
+
top_logprobs=top_logprobs,
|
1024
|
+
user=user,
|
1025
|
+
extra_headers=extra_headers,
|
1026
|
+
extra_query=extra_query,
|
1027
|
+
extra_body=extra_body,
|
1028
|
+
timeout=timeout,
|
775
1029
|
)
|
776
1030
|
async for chunk in response:
|
777
1031
|
yield chunk
|
@@ -799,7 +1053,28 @@ class AsyncAnthropicChatClient(BaseAsyncChatClient):
|
|
799
1053
|
response_format=response_format,
|
800
1054
|
top_p=top_p,
|
801
1055
|
skip_cutoff=skip_cutoff,
|
802
|
-
|
1056
|
+
audio=audio,
|
1057
|
+
frequency_penalty=frequency_penalty,
|
1058
|
+
logit_bias=logit_bias,
|
1059
|
+
logprobs=logprobs,
|
1060
|
+
max_completion_tokens=max_completion_tokens,
|
1061
|
+
metadata=metadata,
|
1062
|
+
modalities=modalities,
|
1063
|
+
n=n,
|
1064
|
+
parallel_tool_calls=parallel_tool_calls,
|
1065
|
+
prediction=prediction,
|
1066
|
+
presence_penalty=presence_penalty,
|
1067
|
+
reasoning_effort=reasoning_effort,
|
1068
|
+
seed=seed,
|
1069
|
+
service_tier=service_tier,
|
1070
|
+
stop=stop,
|
1071
|
+
store=store,
|
1072
|
+
top_logprobs=top_logprobs,
|
1073
|
+
user=user,
|
1074
|
+
extra_headers=extra_headers,
|
1075
|
+
extra_query=extra_query,
|
1076
|
+
extra_body=extra_body,
|
1077
|
+
timeout=timeout,
|
803
1078
|
)
|
804
1079
|
|
805
1080
|
raw_client = self.raw_client # 调用完 self.raw_client 后,self.model_id 会被赋值
|
@@ -813,6 +1088,8 @@ class AsyncAnthropicChatClient(BaseAsyncChatClient):
|
|
813
1088
|
top_p = NOT_GIVEN
|
814
1089
|
if isinstance(self.temperature, NotGiven) or self.temperature is None:
|
815
1090
|
self.temperature = NOT_GIVEN
|
1091
|
+
if isinstance(thinking, NotGiven) or thinking is None:
|
1092
|
+
thinking = NOT_GIVEN
|
816
1093
|
|
817
1094
|
if messages[0].get("role") == "system":
|
818
1095
|
system_prompt = messages[0]["content"]
|
@@ -857,7 +1134,7 @@ class AsyncAnthropicChatClient(BaseAsyncChatClient):
|
|
857
1134
|
tools=tools_params,
|
858
1135
|
tool_choice=tool_choice_param,
|
859
1136
|
top_p=top_p,
|
860
|
-
|
1137
|
+
thinking=thinking,
|
861
1138
|
)
|
862
1139
|
|
863
1140
|
async def generator():
|
@@ -931,7 +1208,7 @@ class AsyncAnthropicChatClient(BaseAsyncChatClient):
|
|
931
1208
|
tools=tools_params,
|
932
1209
|
tool_choice=tool_choice_param,
|
933
1210
|
top_p=top_p,
|
934
|
-
|
1211
|
+
thinking=thinking,
|
935
1212
|
)
|
936
1213
|
|
937
1214
|
result = {
|