agentic-kit-common 0.0.11__py3-none-any.whl → 0.0.13__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.

Potentially problematic release.


This version of agentic-kit-common might be problematic. Click here for more details.

@@ -0,0 +1,2 @@
1
+ from .openai import create_openai_llm
2
+ from .utils import combine_simple_context
@@ -0,0 +1,33 @@
1
+ import os
2
+
3
+ from dotenv import load_dotenv
4
+ from langchain_openai import ChatOpenAI
5
+
6
+ load_dotenv()
7
+
8
+
9
+ model_name = os.getenv("MODEL_NAME", None)
10
+ openai_api_base = os.getenv("OPENAI_API_BASE", None)
11
+ openai_api_key = os.getenv("OPENAI_API_KEY", 'API_KEY')
12
+ temperature = float(os.getenv("TEMPERATURE", 0.2))
13
+
14
+
15
+ def create_openai_llm(**kwargs):
16
+ _model_name = kwargs.pop('model_name', model_name)
17
+ _openai_api_base = kwargs.pop('openai_api_base', openai_api_base)
18
+ _openai_api_key = kwargs.pop('openai_api_key', openai_api_key)
19
+ if not _openai_api_key:
20
+ _openai_api_key = 'API_KEY'
21
+ _temperature = kwargs.pop('temperature', temperature)
22
+
23
+ assert model_name is not None
24
+ assert openai_api_base is not None
25
+
26
+ llm = ChatOpenAI(
27
+ model_name=_model_name,
28
+ openai_api_base=_openai_api_base,
29
+ openai_api_key=_openai_api_key,
30
+ temperature=_temperature,
31
+ **kwargs
32
+ )
33
+ return llm
@@ -0,0 +1,61 @@
1
+ import json
2
+ import re
3
+ from typing import Any, Dict, List, Union
4
+
5
+ from langchain_core.messages import BaseMessage, SystemMessage, HumanMessage
6
+
7
+
8
+ def combine_simple_context(system: str, user: str = None):
9
+ context: List[Union[BaseMessage, dict[str, Any]]] = [SystemMessage(content=system)]
10
+ if user:
11
+ context.append(HumanMessage(content=system))
12
+ return context
13
+
14
+
15
+ def fix_json_response(text: str) -> Union[Dict, List, str, int, float, bool, None]:
16
+ """
17
+ 去掉大模型返回的 ```json / ``` 等 markdown 标记,并安全反序列化 JSON。
18
+ 若解析失败,返回原字符串。
19
+
20
+ 参数
21
+ ----
22
+ text : str
23
+ 原始响应,可能包含 ```json ... ``` 或其他变体。
24
+
25
+ 返回
26
+ ----
27
+ Python 对象(dict / list / str / int / float / bool / None)
28
+ 解析失败时返回输入字符串本身。
29
+ """
30
+ if not isinstance(text, str):
31
+ return text
32
+
33
+ # 1. 去掉 ```json 或 ``` 包裹(支持开头、结尾、单行、多行)
34
+ cleaned = re.sub(r'^\s*```(?:json|JSON)?\s*\n?', '', text)
35
+ cleaned = re.sub(r'\n?\s*```\s*$', '', cleaned)
36
+
37
+ # 2. 去掉首尾空白
38
+ cleaned = cleaned.strip()
39
+
40
+ # 3. 尝试 JSON 反序列化
41
+ try:
42
+ json.loads(cleaned)
43
+ return cleaned
44
+ except json.JSONDecodeError:
45
+ # 4. 兜底:返回原字符串
46
+ return text
47
+
48
+
49
+ # ----------------- 使用示例 -----------------
50
+ if __name__ == "__main__":
51
+ demo_list = [
52
+ '```json\n{"a": 1, "b": "hello"}\n```',
53
+ "```JSON{'key': 'value'}```",
54
+ "```\n[1, 2, 3]```",
55
+ "plain text",
56
+ {"already_dict": 1},
57
+ ]
58
+ for d in demo_list:
59
+ print("原始:", repr(d))
60
+ print("修复:", repr(fix_json_response(d)))
61
+ print("-" * 30)
@@ -64,9 +64,11 @@ class DatabaseEngineManager:
64
64
  def add_engine(self, engine_info: DatabaseEngineModel) -> bool:
65
65
  """添加数据库引擎"""
66
66
  with self._lock:
67
+ resource_uid = engine_info.resource_uid
67
68
  engine_name = engine_info.engine_name
68
69
  database_uri = engine_info.database_uri
69
70
  database_name = engine_info.database_name
71
+ database_desc = engine_info.database_desc
70
72
  config = engine_info.config.model_dump().copy()
71
73
 
72
74
  if engine_name in self._engines:
@@ -91,8 +93,10 @@ class DatabaseEngineManager:
91
93
  self._engines[engine_name] = engine
92
94
  self._sessions[engine_name] = session_factory
93
95
  self._engine_configs[engine_name] = {
96
+ "resource_uid": resource_uid,
94
97
  "database_uri": database_uri,
95
98
  "database_name": database_name,
99
+ "database_desc": database_desc,
96
100
  "config": config or self._default_config.copy()
97
101
  }
98
102
 
@@ -13,7 +13,9 @@ _DEFAULT_CONFIG = DatabaseEngineConfigModel()
13
13
 
14
14
 
15
15
  class DatabaseEngineModel(BaseModel):
16
+ resource_uid: str = Field("", description="数据库唯一ID")
16
17
  engine_name: str = Field(..., description="数据库引擎名字")
17
18
  database_uri: str = Field(..., description="数据库uir地址")
18
19
  database_name: str = Field(..., description="数据库名称")
20
+ database_desc: str = Field("", description="数据库描述信息")
19
21
  config: DatabaseEngineConfigModel = Field(_DEFAULT_CONFIG, description="配置信息")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentic-kit-common
3
- Version: 0.0.11
3
+ Version: 0.0.13
4
4
  Summary: Common utilities and tools for agentic kit ecosystem
5
5
  Home-page:
6
6
  Author: manson
@@ -24,6 +24,7 @@ Requires-Dist: langchain_core
24
24
  Requires-Dist: langgraph
25
25
  Requires-Dist: langchain_community
26
26
  Requires-Dist: langchain_experimental
27
+ Requires-Dist: langchain-openai
27
28
  Requires-Dist: mysql-connector-python
28
29
  Requires-Dist: sqlalchemy
29
30
  Requires-Dist: sqlglot
@@ -1,4 +1,7 @@
1
1
  agentic_kit_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ agentic_kit_common/llm/__init__.py,sha256=VwtIj4DFfKOcVH0QPLQPV4dTBSVnbQYPnj7xmOTLhO4,80
3
+ agentic_kit_common/llm/openai.py,sha256=-GdfYpbCzioUT8kjGKSxIB_JUAN-cpiqQssgmzM3HDs,934
4
+ agentic_kit_common/llm/utils.py,sha256=OD98I-L3xLqbilxiQvM4TI60DKEkhyS-_wuWE4q5sxw,1775
2
5
  agentic_kit_common/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
6
  agentic_kit_common/log/logger.py,sha256=EH8pOW6KVpb-c4RdK2sohpHgfs3_hBcaAletRs1O23k,391
4
7
  agentic_kit_common/minio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -7,8 +10,8 @@ agentic_kit_common/orm/__init__.py,sha256=wqY81g3P7FftFvLK5SaxFJzNNxrQwtmcb4RCXO
7
10
  agentic_kit_common/orm/base.py,sha256=QIura_i2nIY2XeA3-KkO2loLNbEAoJK2qx0hu_8nhYU,2277
8
11
  agentic_kit_common/orm/execution.py,sha256=beyRJqVGY5nOqMDpvLcfwimUzP6eSz8ayNHLwh1hGOo,2858
9
12
  agentic_kit_common/orm/manager.py,sha256=lWgFk5fUu_9m6yN_fskWHSYGaW30ty--KZKj8AuvIh0,4852
10
- agentic_kit_common/orm/multi_session.py,sha256=CAEnOLl0I-r77JAknKQ2sERF40OkHD7BOrYVYoHuQV4,8814
11
- agentic_kit_common/orm/schema.py,sha256=ukdVP71NE_JO5_HOe_FApJjBAKUsDluoElVn5vNSGJQ,1023
13
+ agentic_kit_common/orm/multi_session.py,sha256=xESwEeQw1UdR-5jqywbmI_Z0jxUn_l-cMyagnm7fc3c,9023
14
+ agentic_kit_common/orm/schema.py,sha256=RfVoJ7RD9ZckogLfLWh9P9x3JkZRURnsIw50scBp75Y,1162
12
15
  agentic_kit_common/orm/session.py,sha256=LX4ZUKJNXdcQ0KqRt5L0pJX-QG-tDyKXEDijcPUkGD0,2716
13
16
  agentic_kit_common/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
17
  agentic_kit_common/vector/embedding/__init__.py,sha256=mp--cfCDzTn5hNxzcIAU4m0g4F0d0rrZErFVWsGDvx4,40
@@ -28,7 +31,7 @@ test/test_embedding.py,sha256=xcfHDHGL2_tpXp_VaLnNDAWvKdkc1K1BjiYoV5WxtFY,900
28
31
  test/test_minio.py,sha256=TOkX8A2pPkjrwAIH88xBZmFpDc1ZgTk1QS6mtubOZ-Y,2308
29
32
  test/test_orm.py,sha256=8fGCU7BWaD5sDbg0fgYN0Saf_hi7t-q8svHCHLQDceo,1620
30
33
  test/test_vector.py,sha256=Z3Bwvrw0XGBWXHYXk9pkF1cjnUZSZk0gmLsgQIIaZuY,1717
31
- agentic_kit_common-0.0.11.dist-info/METADATA,sha256=i2EbkVNKrTVCcfwE9ky0Sfr64Lg8A97GsPOQzDCgKwM,7520
32
- agentic_kit_common-0.0.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
33
- agentic_kit_common-0.0.11.dist-info/top_level.txt,sha256=nEKDlp84vqKSVWssGcxyuIsTqWLhMo45xqMs2GK4Dgg,24
34
- agentic_kit_common-0.0.11.dist-info/RECORD,,
34
+ agentic_kit_common-0.0.13.dist-info/METADATA,sha256=0byZM7sFLmky9UOjde8zWBNVyTEZxm7VEPCKxqwHHqw,7552
35
+ agentic_kit_common-0.0.13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
36
+ agentic_kit_common-0.0.13.dist-info/top_level.txt,sha256=nEKDlp84vqKSVWssGcxyuIsTqWLhMo45xqMs2GK4Dgg,24
37
+ agentic_kit_common-0.0.13.dist-info/RECORD,,