@@ -40,6 +40,16 @@ def with_raw_response(self) -> CompletionsWithRawResponse:
4040 def with_streaming_response (self ) -> CompletionsWithStreamingResponse :
4141 return CompletionsWithStreamingResponse (self )
4242
43+ def encrypt (self , model : str , messages : Iterable [ChatCompletionMessageParam ], extra_headers : Headers ):
44+ client = self ._client ._get_endpoint_certificate (model )
45+ self ._crypto_key , self ._crypto_nonce , session_token = client .generate_ecies_key_pair ()
46+ extra_headers ['X-Session-Token' ] = session_token
47+ for message in messages :
48+ if message .get ("content" , None ) is not None :
49+ message ["content" ] = client .encrypt_string_with_key (self ._crypto_key ,
50+ self ._crypto_nonce ,
51+ message .get ("content" ))
52+
4353 @with_sts_token
4454 def create (
4555 self ,
@@ -68,7 +78,11 @@ def create(
6878 extra_query : Query | None = None ,
6979 extra_body : Body | None = None ,
7080 timeout : float | httpx .Timeout | None = None ,
81+ is_encrypt : bool | None = None ,
7182 ) -> ChatCompletion | Stream [ChatCompletionChunk ]:
83+ if is_encrypt :
84+ self .encrypt (model , messages , extra_headers )
85+
7286 return self ._post (
7387 "/chat/completions" ,
7488 body = {
0 commit comments