2525from volcengine .viking_knowledgebase import VikingKnowledgeBaseService
2626
2727import veadk .config # noqa E401
28- from veadk .auth .veauth .utils import get_credential_from_vefaas_iam
28+ from veadk .auth .veauth .utils import (
29+ VeIAMCredential ,
30+ get_credential_from_vefaas_iam ,
31+ )
2932from veadk .configs .database_configs import NormalTOSConfig , TOSConfig
3033from veadk .knowledgebase .backends .base_backend import BaseKnowledgebaseBackend
3134from veadk .knowledgebase .backends .utils import (
@@ -136,14 +139,6 @@ class VikingDBKnowledgeBackend(BaseKnowledgebaseBackend):
136139 def model_post_init (self , __context : Any ) -> None :
137140 self ._set_service_info ()
138141
139- self ._viking_sdk_client = VikingKnowledgeBaseService (
140- host = self .host ,
141- ak = self .volcengine_access_key ,
142- sk = self .volcengine_secret_key ,
143- sts_token = self .session_token ,
144- scheme = self .schema ,
145- )
146-
147142 self .precheck_index_naming ()
148143
149144 # check whether collection exist, if not, create it
@@ -165,20 +160,19 @@ def precheck_index_naming(self):
165160 )
166161
167162 def _get_tos_client (self , tos_bucket_name : str ) -> VeTOS :
168- volcengine_access_key = self .volcengine_access_key
169- volcengine_secret_key = self .volcengine_secret_key
170- session_token = self .session_token
171-
172- if not (volcengine_access_key and volcengine_secret_key ):
173- cred = get_credential_from_vefaas_iam ()
174- volcengine_access_key = cred .access_key_id
175- volcengine_secret_key = cred .secret_access_key
176- session_token = cred .session_token
163+ ak = None
164+ sk = None
165+ sts_token = None
166+ if not (self .volcengine_access_key and self .volcengine_secret_key ):
167+ cred = self ._set_service_info ()
168+ ak = cred .access_key_id
169+ sk = cred .secret_access_key
170+ sts_token = cred .session_token
177171
178172 return VeTOS (
179- ak = volcengine_access_key ,
180- sk = volcengine_secret_key ,
181- session_token = session_token ,
173+ ak = ak or self . volcengine_access_key ,
174+ sk = sk or self . volcengine_secret_key ,
175+ session_token = sts_token or self . session_token ,
182176 region = self .tos_config .region ,
183177 bucket_name = tos_bucket_name or self .tos_config .bucket ,
184178 )
@@ -552,6 +546,23 @@ def _search_knowledge(
552546 "chunk_diffusion_count" : chunk_diffusion_count ,
553547 }
554548
549+ ak = None
550+ sk = None
551+ sts_token = None
552+ if not (self .volcengine_access_key and self .volcengine_secret_key ):
553+ cred = self ._set_service_info ()
554+ ak = cred .access_key_id
555+ sk = cred .secret_access_key
556+ sts_token = cred .session_token
557+
558+ self ._viking_sdk_client = VikingKnowledgeBaseService (
559+ host = self .host ,
560+ ak = ak or self .volcengine_access_key ,
561+ sk = sk or self .volcengine_secret_key ,
562+ sts_token = sts_token or self .session_token ,
563+ scheme = self .schema ,
564+ )
565+
555566 response = self ._viking_sdk_client .search_knowledge (
556567 collection_name = self .index ,
557568 project = self .volcengine_project ,
@@ -575,7 +586,7 @@ def _search_knowledge(
575586
576587 return entries
577588
578- def _set_service_info (self ):
589+ def _set_service_info (self ) -> VeIAMCredential :
579590 env_host = getenv (
580591 "DATABASE_VIKING_BASE_URL" ,
581592 default_value = None ,
@@ -592,11 +603,8 @@ def _set_service_info(self):
592603 "DATABASE_VIKING_BASE_URL must start with http:// or https://"
593604 )
594605
595- if not (self .volcengine_access_key and self .volcengine_secret_key ):
596- cred = get_credential_from_vefaas_iam ()
597- self .volcengine_access_key = cred .access_key_id
598- self .volcengine_secret_key = cred .secret_access_key
599- self .session_token = cred .session_token
606+ cred = get_credential_from_vefaas_iam ()
607+ return cred
600608
601609 def _do_request (
602610 self ,
@@ -606,11 +614,20 @@ def _do_request(
606614 ) -> dict :
607615 full_path = f"{ self .base_url } { path } "
608616
617+ ak = None
618+ sk = None
619+ sts_token = None
620+ if not (self .volcengine_access_key and self .volcengine_secret_key ):
621+ cred = self ._set_service_info ()
622+ ak = cred .access_key_id
623+ sk = cred .secret_access_key
624+ sts_token = cred .session_token
625+
609626 request = build_vikingdb_knowledgebase_request (
610627 path = path ,
611- volcengine_access_key = self .volcengine_access_key ,
612- volcengine_secret_key = self .volcengine_secret_key ,
613- session_token = self .session_token ,
628+ volcengine_access_key = ak or self .volcengine_access_key ,
629+ volcengine_secret_key = sk or self .volcengine_secret_key ,
630+ session_token = sts_token or self .session_token ,
614631 method = method ,
615632 data = body ,
616633 )
0 commit comments