veadk-python 0.2.27__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.
Files changed (218) hide show
  1. veadk/__init__.py +37 -0
  2. veadk/a2a/__init__.py +13 -0
  3. veadk/a2a/agent_card.py +45 -0
  4. veadk/a2a/remote_ve_agent.py +390 -0
  5. veadk/a2a/utils/__init__.py +13 -0
  6. veadk/a2a/utils/agent_to_a2a.py +170 -0
  7. veadk/a2a/ve_a2a_server.py +93 -0
  8. veadk/a2a/ve_agent_executor.py +78 -0
  9. veadk/a2a/ve_middlewares.py +313 -0
  10. veadk/a2a/ve_task_store.py +37 -0
  11. veadk/agent.py +402 -0
  12. veadk/agent_builder.py +93 -0
  13. veadk/agents/loop_agent.py +68 -0
  14. veadk/agents/parallel_agent.py +72 -0
  15. veadk/agents/sequential_agent.py +64 -0
  16. veadk/auth/__init__.py +13 -0
  17. veadk/auth/base_auth.py +22 -0
  18. veadk/auth/ve_credential_service.py +203 -0
  19. veadk/auth/veauth/__init__.py +13 -0
  20. veadk/auth/veauth/apmplus_veauth.py +58 -0
  21. veadk/auth/veauth/ark_veauth.py +75 -0
  22. veadk/auth/veauth/base_veauth.py +50 -0
  23. veadk/auth/veauth/cozeloop_veauth.py +13 -0
  24. veadk/auth/veauth/opensearch_veauth.py +75 -0
  25. veadk/auth/veauth/postgresql_veauth.py +75 -0
  26. veadk/auth/veauth/prompt_pilot_veauth.py +60 -0
  27. veadk/auth/veauth/speech_veauth.py +54 -0
  28. veadk/auth/veauth/utils.py +69 -0
  29. veadk/auth/veauth/vesearch_veauth.py +62 -0
  30. veadk/auth/veauth/viking_mem0_veauth.py +91 -0
  31. veadk/cli/__init__.py +13 -0
  32. veadk/cli/cli.py +58 -0
  33. veadk/cli/cli_clean.py +87 -0
  34. veadk/cli/cli_create.py +163 -0
  35. veadk/cli/cli_deploy.py +233 -0
  36. veadk/cli/cli_eval.py +215 -0
  37. veadk/cli/cli_init.py +214 -0
  38. veadk/cli/cli_kb.py +110 -0
  39. veadk/cli/cli_pipeline.py +285 -0
  40. veadk/cli/cli_prompt.py +86 -0
  41. veadk/cli/cli_update.py +106 -0
  42. veadk/cli/cli_uploadevalset.py +139 -0
  43. veadk/cli/cli_web.py +143 -0
  44. veadk/cloud/__init__.py +13 -0
  45. veadk/cloud/cloud_agent_engine.py +485 -0
  46. veadk/cloud/cloud_app.py +475 -0
  47. veadk/config.py +115 -0
  48. veadk/configs/__init__.py +13 -0
  49. veadk/configs/auth_configs.py +133 -0
  50. veadk/configs/database_configs.py +132 -0
  51. veadk/configs/model_configs.py +78 -0
  52. veadk/configs/tool_configs.py +54 -0
  53. veadk/configs/tracing_configs.py +110 -0
  54. veadk/consts.py +74 -0
  55. veadk/evaluation/__init__.py +17 -0
  56. veadk/evaluation/adk_evaluator/__init__.py +17 -0
  57. veadk/evaluation/adk_evaluator/adk_evaluator.py +302 -0
  58. veadk/evaluation/base_evaluator.py +642 -0
  59. veadk/evaluation/deepeval_evaluator/__init__.py +17 -0
  60. veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +339 -0
  61. veadk/evaluation/eval_set_file_loader.py +48 -0
  62. veadk/evaluation/eval_set_recorder.py +146 -0
  63. veadk/evaluation/types.py +65 -0
  64. veadk/evaluation/utils/prometheus.py +196 -0
  65. veadk/integrations/__init__.py +13 -0
  66. veadk/integrations/ve_apig/__init__.py +13 -0
  67. veadk/integrations/ve_apig/ve_apig.py +349 -0
  68. veadk/integrations/ve_apig/ve_apig_utils.py +332 -0
  69. veadk/integrations/ve_code_pipeline/__init__.py +13 -0
  70. veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +431 -0
  71. veadk/integrations/ve_cozeloop/__init__.py +13 -0
  72. veadk/integrations/ve_cozeloop/ve_cozeloop.py +96 -0
  73. veadk/integrations/ve_cr/__init__.py +13 -0
  74. veadk/integrations/ve_cr/ve_cr.py +220 -0
  75. veadk/integrations/ve_faas/__init__.py +13 -0
  76. veadk/integrations/ve_faas/template/cookiecutter.json +15 -0
  77. veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/__init__.py +13 -0
  78. veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +23 -0
  79. veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +6 -0
  80. veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +106 -0
  81. veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__init__.py +13 -0
  82. veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +25 -0
  83. veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +202 -0
  84. veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +3 -0
  85. veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +49 -0
  86. veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +14 -0
  87. veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +27 -0
  88. veadk/integrations/ve_faas/ve_faas.py +754 -0
  89. veadk/integrations/ve_faas/ve_faas_utils.py +408 -0
  90. veadk/integrations/ve_faas/web_template/cookiecutter.json +20 -0
  91. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/__init__.py +13 -0
  92. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +23 -0
  93. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +2 -0
  94. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +44 -0
  95. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +23 -0
  96. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +123 -0
  97. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +46 -0
  98. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +36 -0
  99. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +4 -0
  100. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +21 -0
  101. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +368 -0
  102. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
  103. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +21 -0
  104. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +24 -0
  105. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +21 -0
  106. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +53 -0
  107. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +45 -0
  108. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +29 -0
  109. veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +14 -0
  110. veadk/integrations/ve_identity/__init__.py +110 -0
  111. veadk/integrations/ve_identity/auth_config.py +261 -0
  112. veadk/integrations/ve_identity/auth_mixins.py +650 -0
  113. veadk/integrations/ve_identity/auth_processor.py +385 -0
  114. veadk/integrations/ve_identity/function_tool.py +158 -0
  115. veadk/integrations/ve_identity/identity_client.py +864 -0
  116. veadk/integrations/ve_identity/mcp_tool.py +181 -0
  117. veadk/integrations/ve_identity/mcp_toolset.py +431 -0
  118. veadk/integrations/ve_identity/models.py +228 -0
  119. veadk/integrations/ve_identity/token_manager.py +188 -0
  120. veadk/integrations/ve_identity/utils.py +151 -0
  121. veadk/integrations/ve_prompt_pilot/__init__.py +13 -0
  122. veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +85 -0
  123. veadk/integrations/ve_tls/__init__.py +13 -0
  124. veadk/integrations/ve_tls/utils.py +116 -0
  125. veadk/integrations/ve_tls/ve_tls.py +212 -0
  126. veadk/integrations/ve_tos/ve_tos.py +710 -0
  127. veadk/integrations/ve_viking_db_memory/__init__.py +13 -0
  128. veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +308 -0
  129. veadk/knowledgebase/__init__.py +17 -0
  130. veadk/knowledgebase/backends/__init__.py +13 -0
  131. veadk/knowledgebase/backends/base_backend.py +72 -0
  132. veadk/knowledgebase/backends/in_memory_backend.py +91 -0
  133. veadk/knowledgebase/backends/opensearch_backend.py +162 -0
  134. veadk/knowledgebase/backends/redis_backend.py +172 -0
  135. veadk/knowledgebase/backends/utils.py +92 -0
  136. veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +608 -0
  137. veadk/knowledgebase/entry.py +25 -0
  138. veadk/knowledgebase/knowledgebase.py +307 -0
  139. veadk/memory/__init__.py +35 -0
  140. veadk/memory/long_term_memory.py +365 -0
  141. veadk/memory/long_term_memory_backends/__init__.py +13 -0
  142. veadk/memory/long_term_memory_backends/base_backend.py +35 -0
  143. veadk/memory/long_term_memory_backends/in_memory_backend.py +67 -0
  144. veadk/memory/long_term_memory_backends/mem0_backend.py +155 -0
  145. veadk/memory/long_term_memory_backends/opensearch_backend.py +124 -0
  146. veadk/memory/long_term_memory_backends/redis_backend.py +140 -0
  147. veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +189 -0
  148. veadk/memory/short_term_memory.py +252 -0
  149. veadk/memory/short_term_memory_backends/__init__.py +13 -0
  150. veadk/memory/short_term_memory_backends/base_backend.py +31 -0
  151. veadk/memory/short_term_memory_backends/mysql_backend.py +49 -0
  152. veadk/memory/short_term_memory_backends/postgresql_backend.py +49 -0
  153. veadk/memory/short_term_memory_backends/sqlite_backend.py +55 -0
  154. veadk/memory/short_term_memory_processor.py +100 -0
  155. veadk/processors/__init__.py +26 -0
  156. veadk/processors/base_run_processor.py +120 -0
  157. veadk/prompts/__init__.py +13 -0
  158. veadk/prompts/agent_default_prompt.py +30 -0
  159. veadk/prompts/prompt_evaluator.py +20 -0
  160. veadk/prompts/prompt_memory_processor.py +55 -0
  161. veadk/prompts/prompt_optimization.py +150 -0
  162. veadk/runner.py +732 -0
  163. veadk/tools/__init__.py +13 -0
  164. veadk/tools/builtin_tools/__init__.py +13 -0
  165. veadk/tools/builtin_tools/agent_authorization.py +94 -0
  166. veadk/tools/builtin_tools/generate_image.py +23 -0
  167. veadk/tools/builtin_tools/image_edit.py +300 -0
  168. veadk/tools/builtin_tools/image_generate.py +446 -0
  169. veadk/tools/builtin_tools/lark.py +67 -0
  170. veadk/tools/builtin_tools/las.py +24 -0
  171. veadk/tools/builtin_tools/link_reader.py +66 -0
  172. veadk/tools/builtin_tools/llm_shield.py +381 -0
  173. veadk/tools/builtin_tools/load_knowledgebase.py +97 -0
  174. veadk/tools/builtin_tools/mcp_router.py +29 -0
  175. veadk/tools/builtin_tools/run_code.py +113 -0
  176. veadk/tools/builtin_tools/tts.py +253 -0
  177. veadk/tools/builtin_tools/vesearch.py +49 -0
  178. veadk/tools/builtin_tools/video_generate.py +363 -0
  179. veadk/tools/builtin_tools/web_scraper.py +76 -0
  180. veadk/tools/builtin_tools/web_search.py +83 -0
  181. veadk/tools/demo_tools.py +58 -0
  182. veadk/tools/load_knowledgebase_tool.py +149 -0
  183. veadk/tools/sandbox/__init__.py +13 -0
  184. veadk/tools/sandbox/browser_sandbox.py +37 -0
  185. veadk/tools/sandbox/code_sandbox.py +40 -0
  186. veadk/tools/sandbox/computer_sandbox.py +34 -0
  187. veadk/tracing/__init__.py +13 -0
  188. veadk/tracing/base_tracer.py +58 -0
  189. veadk/tracing/telemetry/__init__.py +13 -0
  190. veadk/tracing/telemetry/attributes/attributes.py +29 -0
  191. veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +180 -0
  192. veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +858 -0
  193. veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +152 -0
  194. veadk/tracing/telemetry/attributes/extractors/types.py +164 -0
  195. veadk/tracing/telemetry/exporters/__init__.py +13 -0
  196. veadk/tracing/telemetry/exporters/apmplus_exporter.py +558 -0
  197. veadk/tracing/telemetry/exporters/base_exporter.py +39 -0
  198. veadk/tracing/telemetry/exporters/cozeloop_exporter.py +129 -0
  199. veadk/tracing/telemetry/exporters/inmemory_exporter.py +248 -0
  200. veadk/tracing/telemetry/exporters/tls_exporter.py +139 -0
  201. veadk/tracing/telemetry/opentelemetry_tracer.py +320 -0
  202. veadk/tracing/telemetry/telemetry.py +411 -0
  203. veadk/types.py +47 -0
  204. veadk/utils/__init__.py +13 -0
  205. veadk/utils/audio_manager.py +95 -0
  206. veadk/utils/auth.py +294 -0
  207. veadk/utils/logger.py +59 -0
  208. veadk/utils/mcp_utils.py +44 -0
  209. veadk/utils/misc.py +184 -0
  210. veadk/utils/patches.py +101 -0
  211. veadk/utils/volcengine_sign.py +205 -0
  212. veadk/version.py +15 -0
  213. veadk_python-0.2.27.dist-info/METADATA +373 -0
  214. veadk_python-0.2.27.dist-info/RECORD +218 -0
  215. veadk_python-0.2.27.dist-info/WHEEL +5 -0
  216. veadk_python-0.2.27.dist-info/entry_points.txt +2 -0
  217. veadk_python-0.2.27.dist-info/licenses/LICENSE +201 -0
  218. veadk_python-0.2.27.dist-info/top_level.txt +1 -0
@@ -0,0 +1,172 @@
1
+ # Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from llama_index.core import (
16
+ Document,
17
+ SimpleDirectoryReader,
18
+ StorageContext,
19
+ VectorStoreIndex,
20
+ )
21
+ from llama_index.core.schema import BaseNode
22
+ from llama_index.embeddings.openai_like import OpenAILikeEmbedding
23
+ from pydantic import Field
24
+ from typing_extensions import Any, override
25
+
26
+ import veadk.config # noqa E401
27
+ from veadk.configs.database_configs import RedisConfig
28
+ from veadk.configs.model_configs import EmbeddingModelConfig, NormalEmbeddingModelConfig
29
+ from veadk.knowledgebase.backends.base_backend import BaseKnowledgebaseBackend
30
+ from veadk.knowledgebase.backends.utils import get_llama_index_splitter
31
+
32
+ try:
33
+ from llama_index.vector_stores.redis import RedisVectorStore
34
+ from llama_index.vector_stores.redis.schema import (
35
+ RedisIndexInfo,
36
+ RedisVectorStoreSchema,
37
+ )
38
+ from redis import Redis
39
+ from redisvl.schema.fields import BaseVectorFieldAttributes
40
+ except ImportError:
41
+ raise ImportError(
42
+ "Please install VeADK extensions\npip install veadk-python[extensions]"
43
+ )
44
+
45
+
46
+ class RedisKnowledgeBackend(BaseKnowledgebaseBackend):
47
+ """Redis based backend for knowledgebase.
48
+
49
+ Redis backend stores embedded text in a redis database by Llama-index.
50
+
51
+ Attributes:
52
+ redis_config (RedisConfig):
53
+ Redis database configurations.
54
+ Mainly contains redis database host, port, etc.
55
+ embedding_config (EmbeddingModelConfig):
56
+ Embedding configurations for text embedding and search.
57
+ Embedding config contains embedding model name and the corresponding dim.
58
+
59
+ Notes:
60
+ Please ensure that your redis database supports Redisaearch stack.
61
+
62
+ Examples:
63
+ Init a knowledgebase based on redis backend.
64
+
65
+ ```python
66
+ knowledgebase = Knowledgebase(backend="redis")
67
+ ```
68
+
69
+ With more configurations:
70
+
71
+ ```python
72
+ ...
73
+ ```
74
+ """
75
+
76
+ redis_config: RedisConfig = Field(default_factory=RedisConfig)
77
+
78
+ embedding_config: EmbeddingModelConfig | NormalEmbeddingModelConfig = Field(
79
+ default_factory=EmbeddingModelConfig
80
+ )
81
+
82
+ def model_post_init(self, __context: Any) -> None:
83
+ # We will use `from_url` to init Redis client once the
84
+ # AK/SK -> STS token is ready.
85
+ # self._redis_client = Redis.from_url(url=...)
86
+
87
+ self._redis_client = Redis(
88
+ host=self.redis_config.host,
89
+ port=self.redis_config.port,
90
+ db=self.redis_config.db,
91
+ username=self.redis_config.username,
92
+ password=self.redis_config.password,
93
+ )
94
+
95
+ self._embed_model = OpenAILikeEmbedding(
96
+ model_name=self.embedding_config.name,
97
+ api_key=self.embedding_config.api_key,
98
+ api_base=self.embedding_config.api_base,
99
+ )
100
+
101
+ self._schema = RedisVectorStoreSchema(
102
+ index=RedisIndexInfo(name=self.index),
103
+ )
104
+ if "vector" in self._schema.fields:
105
+ vector_field = self._schema.fields["vector"]
106
+ if (
107
+ vector_field
108
+ and vector_field.attrs
109
+ and isinstance(vector_field.attrs, BaseVectorFieldAttributes)
110
+ ):
111
+ vector_field.attrs.dims = self.embedding_config.dim
112
+
113
+ self._vector_store = RedisVectorStore(
114
+ schema=self._schema,
115
+ redis_client=self._redis_client,
116
+ overwrite=False,
117
+ collection_name=self.index,
118
+ )
119
+
120
+ self._storage_context = StorageContext.from_defaults(
121
+ vector_store=self._vector_store
122
+ )
123
+
124
+ self._vector_index = VectorStoreIndex(
125
+ nodes=[],
126
+ storage_context=self._storage_context,
127
+ embed_model=self._embed_model,
128
+ )
129
+
130
+ @override
131
+ def precheck_index_naming(self) -> None:
132
+ # Checking is not needed
133
+ pass
134
+
135
+ @override
136
+ def add_from_directory(self, directory: str) -> bool:
137
+ documents = SimpleDirectoryReader(input_dir=directory).load_data()
138
+ nodes = self._split_documents(documents)
139
+ self._vector_index.insert_nodes(nodes)
140
+ return True
141
+
142
+ @override
143
+ def add_from_files(self, files: list[str]) -> bool:
144
+ documents = SimpleDirectoryReader(input_files=files).load_data()
145
+ nodes = self._split_documents(documents)
146
+ self._vector_index.insert_nodes(nodes)
147
+ return True
148
+
149
+ @override
150
+ def add_from_text(self, text: str | list[str]) -> bool:
151
+ if isinstance(text, str):
152
+ documents = [Document(text=text)]
153
+ else:
154
+ documents = [Document(text=t) for t in text]
155
+ nodes = self._split_documents(documents)
156
+ self._vector_index.insert_nodes(nodes)
157
+ return True
158
+
159
+ @override
160
+ def search(self, query: str, top_k: int = 5) -> list[str]:
161
+ _retriever = self._vector_index.as_retriever(similarity_top_k=top_k)
162
+ retrieved_nodes = _retriever.retrieve(query)
163
+ return [node.text for node in retrieved_nodes]
164
+
165
+ def _split_documents(self, documents: list[Document]) -> list[BaseNode]:
166
+ """Split document into chunks"""
167
+ nodes = []
168
+ for document in documents:
169
+ splitter = get_llama_index_splitter(document.metadata.get("file_path", ""))
170
+ _nodes = splitter.get_nodes_from_documents([document])
171
+ nodes.extend(_nodes)
172
+ return nodes
@@ -0,0 +1,92 @@
1
+ # Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import json
16
+ from pathlib import Path
17
+ from typing import Literal
18
+
19
+ from llama_index.core.node_parser import (
20
+ CodeSplitter,
21
+ HTMLNodeParser,
22
+ MarkdownNodeParser,
23
+ SentenceSplitter,
24
+ )
25
+ from volcengine.auth.SignerV4 import SignerV4
26
+ from volcengine.base.Request import Request
27
+ from volcengine.Credentials import Credentials
28
+
29
+
30
+ def get_llama_index_splitter(
31
+ file_path: str,
32
+ ) -> CodeSplitter | MarkdownNodeParser | HTMLNodeParser | SentenceSplitter:
33
+ suffix = Path(file_path).suffix.lower()
34
+
35
+ if suffix in [".py", ".js", ".java", ".cpp"]:
36
+ return CodeSplitter(language=suffix.strip("."))
37
+ elif suffix in [".md"]:
38
+ return MarkdownNodeParser()
39
+ elif suffix in [".html", ".htm"]:
40
+ return HTMLNodeParser()
41
+ else:
42
+ return SentenceSplitter(chunk_size=512, chunk_overlap=50)
43
+
44
+
45
+ def build_vikingdb_knowledgebase_request(
46
+ path: str,
47
+ volcengine_access_key: str,
48
+ volcengine_secret_key: str,
49
+ session_token: str = "",
50
+ method: Literal["GET", "POST", "PUT", "DELETE"] = "POST",
51
+ region: str = "cn-beijing",
52
+ params=None,
53
+ data=None,
54
+ doseq=0,
55
+ ) -> Request:
56
+ if params:
57
+ for key in params:
58
+ if (
59
+ type(params[key]) is int
60
+ or type(params[key]) is float
61
+ or type(params[key]) is bool
62
+ ):
63
+ params[key] = str(params[key])
64
+ elif type(params[key]) is list:
65
+ if not doseq:
66
+ params[key] = ",".join(params[key])
67
+
68
+ r = Request()
69
+ r.set_shema("https")
70
+ r.set_method(method)
71
+ r.set_connection_timeout(10)
72
+ r.set_socket_timeout(10)
73
+
74
+ mheaders = {
75
+ "Accept": "application/json",
76
+ "Content-Type": "application/json",
77
+ }
78
+ r.set_headers(mheaders)
79
+
80
+ if params:
81
+ r.set_query(params)
82
+
83
+ r.set_path(path)
84
+
85
+ if data is not None:
86
+ r.set_body(json.dumps(data))
87
+
88
+ credentials = Credentials(
89
+ volcengine_access_key, volcengine_secret_key, "air", region, session_token
90
+ )
91
+ SignerV4.sign(r, credentials)
92
+ return r