|
1 | 1 | """AIMind tool."""
|
2 | 2 |
|
3 | 3 | import os
|
4 |
| -from typing import Any, Dict, List, Optional, Text |
| 4 | +from typing import Any, Dict, List, Optional, Text, Union |
5 | 5 |
|
6 | 6 | import openai
|
7 | 7 | from langchain_core.callbacks import (
|
|
16 | 16 |
|
17 | 17 |
|
18 | 18 | class AIMindEnvVar:
|
19 |
| - def __init__(self, name, is_secret=False): |
| 19 | + """ |
| 20 | + The loader for environment variables used by the AIMindTool. |
| 21 | + """ |
| 22 | + |
| 23 | + value: Union[Text, SecretStr] |
| 24 | + |
| 25 | + def __init__(self, name: Text, is_secret: bool = False) -> None: |
20 | 26 | if is_secret:
|
21 | 27 | self.value = convert_to_secret_str(os.environ[name])
|
22 | 28 | else:
|
23 | 29 | self.value = os.environ[name]
|
24 |
| - self.is_secret = is_secret |
25 | 30 |
|
26 | 31 |
|
27 | 32 | class AIMindDataSource(BaseModel):
|
@@ -100,10 +105,12 @@ def __init__(self, **data: Any) -> None:
|
100 | 105 |
|
101 | 106 | # Convert the parameters set as environment variables to the actual values.
|
102 | 107 | connection_data = {}
|
103 |
| - for key, value in self.connection_data.items(): |
| 108 | + for key, value in (self.connection_data or {}).items(): |
104 | 109 | if isinstance(value, AIMindEnvVar):
|
105 | 110 | connection_data[key] = (
|
106 |
| - value.value.get_secret_value() if value.is_secret else value.value |
| 111 | + value.value.get_secret_value() |
| 112 | + if isinstance(value.value, SecretStr) |
| 113 | + else value.value |
107 | 114 | )
|
108 | 115 | else:
|
109 | 116 | connection_data[key] = value
|
@@ -188,7 +195,7 @@ def __init__(self, **data: Any) -> None:
|
188 | 195 | mind = minds_client.minds.create(name=self.name)
|
189 | 196 |
|
190 | 197 | # Add the data sources to the Mind.
|
191 |
| - for data_source in self.datasources: |
| 198 | + for data_source in self.datasources or []: |
192 | 199 | mind.add_datasource(data_source.name)
|
193 | 200 |
|
194 | 201 | def run(self, query: Text) -> Text:
|
|
0 commit comments