camel-ai 0.2.30__py3-none-any.whl → 0.2.32__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 camel-ai might be problematic. Click here for more details.

camel/__init__.py CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  from camel.logger import disable_logging, enable_logging, set_log_level
16
16
 
17
- __version__ = '0.2.30'
17
+ __version__ = '0.2.32'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
camel/agents/_utils.py CHANGED
@@ -37,7 +37,7 @@ def generate_tool_prompt(tool_schema_list: List[Dict[str, Any]]) -> str:
37
37
  tool_info = tool["function"]
38
38
  tool_name = tool_info["name"]
39
39
  tool_description = tool_info["description"]
40
- tool_json = json.dumps(tool_info, indent=4)
40
+ tool_json = json.dumps(tool_info, indent=4, ensure_ascii=False)
41
41
 
42
42
  prompt = (
43
43
  f"Use the function '{tool_name}' to '{tool_description}':\n"
@@ -446,7 +446,6 @@ class ChatAgent(BaseAgent):
446
446
  self,
447
447
  input_message: Union[BaseMessage, str],
448
448
  response_format: Optional[Type[BaseModel]] = None,
449
- reason_params: Optional[Dict[str, Any]] = None,
450
449
  ) -> ChatAgentResponse:
451
450
  r"""Executes a single step in the chat session, generating a response
452
451
  to the input message.
@@ -459,13 +458,6 @@ class ChatAgent(BaseAgent):
459
458
  model defining the expected structure of the response. Used to
460
459
  generate a structured response if provided. (default:
461
460
  :obj:`None`)
462
- reason_params (Optional[Dict[str, Any]], optional): A dictionary
463
- containing the parameters for the reasoning step.
464
- Argument `choices` is the number of choices/candidates to
465
- consider.
466
- Argument `threshold` is the threshold for the probability of
467
- the choices.
468
- (default: :obj:`None`)
469
461
 
470
462
  Returns:
471
463
  ChatAgentResponse: Contains output messages, a termination status
@@ -478,9 +470,6 @@ class ChatAgent(BaseAgent):
478
470
  role_name="User", content=input_message
479
471
  )
480
472
 
481
- # Inject thinking steps
482
- input_message = self._update_reasoning(input_message, reason_params)
483
-
484
473
  # Add user input to memory
485
474
  self.update_memory(input_message, OpenAIBackendRole.USER)
486
475
 
@@ -522,47 +511,6 @@ class ChatAgent(BaseAgent):
522
511
  response, tool_call_records, num_tokens, external_tool_call_request
523
512
  )
524
513
 
525
- def _update_reasoning(
526
- self,
527
- input_message: BaseMessage,
528
- reason_params: Optional[Dict[str, Any]] = None,
529
- ) -> BaseMessage:
530
- r"""Updates the input message to include reasoning instructions and
531
- adds human interaction capability.
532
-
533
- Args:
534
- input_message (BaseMessage): The message to be updated with
535
- reasoning instructions.
536
- reason_params (Optional[Dict[str, Any]], optional): Parameters for
537
- the reasoning process.
538
-
539
- Returns:
540
- BaseMessage: The updated message with reasoning instructions.
541
- """
542
- if reason_params is None:
543
- return input_message
544
- choices = reason_params.get("choices", 3)
545
- threshold = reason_params.get("threshold", 0.5)
546
-
547
- input_message.content += f"""First, come up with potential {choices}
548
- choices/candidates.
549
- Next, assign a probability/credibility between 0 and 1 to each choice
550
- (make sure they add up to 1).
551
- Finally, if only one choice has a probability/credibility greater than
552
- {threshold}, continue with that choice.
553
- Otherwise, call tool `ask_human_via_console` to ask the user to decide
554
- which one to continue with, give user the probability/credibility of
555
- all choices, and the reason for each choice.
556
- """
557
-
558
- # Add tools to agent
559
- from camel.toolkits.human_toolkit import HumanToolkit
560
-
561
- human_toolkit = HumanToolkit()
562
- self.add_tool(human_toolkit.ask_human_via_console)
563
-
564
- return input_message
565
-
566
514
  @property
567
515
  def chat_history(self) -> List[OpenAIMessage]:
568
516
  openai_messages, _ = self.memory.get_context()
@@ -316,7 +316,10 @@ class APIBankBenchmark(BaseBenchmark):
316
316
  'Correct': correct,
317
317
  }
318
318
  )
319
- f.write(json.dumps(self._results[-1], indent=2) + "\n")
319
+ json_str = json.dumps(
320
+ self._results[-1], indent=2, ensure_ascii=False
321
+ )
322
+ f.write(json_str + "\n")
320
323
 
321
324
  elif (
322
325
  sample.ground_truth['role'] == 'AI'
@@ -361,7 +364,10 @@ class APIBankBenchmark(BaseBenchmark):
361
364
  'Test': test,
362
365
  }
363
366
  )
364
- f.write(json.dumps(self._results[-1], indent=2) + "\n")
367
+ json_str = json.dumps(
368
+ self._results[-1], indent=2, ensure_ascii=False
369
+ )
370
+ f.write(json_str + "\n")
365
371
 
366
372
  f.flush()
367
373
 
@@ -323,7 +323,10 @@ class APIBenchBenchmark(BaseBenchmark):
323
323
 
324
324
  agent.reset()
325
325
 
326
- f.write(json.dumps(self._results[-1], indent=2) + "\n")
326
+ json_str = json.dumps(
327
+ self._results[-1], indent=2, ensure_ascii=False
328
+ )
329
+ f.write(json_str + "\n")
327
330
  f.flush()
328
331
 
329
332
  total = len(self._results)
camel/benchmarks/gaia.py CHANGED
@@ -332,7 +332,9 @@ class GAIABenchmark(BaseBenchmark):
332
332
  "history": agent.memory.get_context(),
333
333
  }
334
334
  self._results.append(result_data)
335
- file_obj.write(json.dumps(result_data, indent=2) + "\n")
335
+ file_obj.write(
336
+ json.dumps(result_data, indent=2) + "\n", ensure_ascii=False
337
+ )
336
338
  file_obj.flush()
337
339
 
338
340
  def _handle_error(
@@ -351,7 +353,9 @@ class GAIABenchmark(BaseBenchmark):
351
353
  "score": 0,
352
354
  }
353
355
  self._results.append(error_data)
354
- file_obj.write(json.dumps(error_data, indent=2) + "\n")
356
+ file_obj.write(
357
+ json.dumps(error_data, indent=2) + "\n", ensure_ascii=False
358
+ )
355
359
  file_obj.flush()
356
360
 
357
361
  def _generate_summary(self) -> Dict[str, Any]:
camel/benchmarks/nexus.py CHANGED
@@ -343,7 +343,10 @@ class NexusBenchmark(BaseBenchmark):
343
343
 
344
344
  agent.reset()
345
345
 
346
- f.write(json.dumps(self._results[-1], indent=2) + "\n")
346
+ json_str = json.dumps(
347
+ self._results[-1], indent=2, ensure_ascii=False
348
+ )
349
+ f.write(json_str + "\n")
347
350
  f.flush()
348
351
 
349
352
  total = len(self._results)
@@ -108,6 +108,7 @@ class ShareGPTDataCollector(BaseDataCollector):
108
108
  tools=json.dumps(
109
109
  [t.get_openai_tool_schema()["function"] for t in self.tools]
110
110
  ),
111
+ ensure_ascii=False,
111
112
  conversations=[],
112
113
  )
113
114
 
@@ -124,7 +125,9 @@ class ShareGPTDataCollector(BaseDataCollector):
124
125
  conversations.append(
125
126
  {
126
127
  "from": "function_call",
127
- "value": json.dumps(message.function_call),
128
+ "value": json.dumps(
129
+ message.function_call, ensure_ascii=False
130
+ ),
128
131
  }
129
132
  )
130
133
  else:
@@ -135,7 +138,9 @@ class ShareGPTDataCollector(BaseDataCollector):
135
138
  conversations.append(
136
139
  {
137
140
  "from": "observation",
138
- "value": json.dumps(message.message), # type: ignore[attr-defined]
141
+ "value": json.dumps(
142
+ message.message, ensure_ascii=False
143
+ ), # type: ignore[attr-defined]
139
144
  }
140
145
  )
141
146
  data["conversations"] = conversations
@@ -171,7 +176,8 @@ class ShareGPTDataCollector(BaseDataCollector):
171
176
  context.append(
172
177
  "Tools: "
173
178
  + json.dumps(
174
- [t.get_openai_tool_schema()["function"] for t in self.tools]
179
+ [t.get_openai_tool_schema()["function"] for t in self.tools],
180
+ ensure_ascii=False,
175
181
  )
176
182
  )
177
183
  for _data in self.get_agent_history(str(self.agent_name)):
@@ -180,10 +186,15 @@ class ShareGPTDataCollector(BaseDataCollector):
180
186
  f"{role}: " if role != "user" else "User: " + f"{_data.name}: "
181
187
  )
182
188
  if message.function_call:
183
- context.append(prefix + json.dumps(message.function_call))
189
+ context.append(
190
+ prefix
191
+ + json.dumps(message.function_call, ensure_ascii=False)
192
+ )
184
193
 
185
194
  elif role == "function" or role == "tool":
186
- context.append(prefix + json.dumps(message.message)) # type: ignore[attr-defined]
195
+ context.append(
196
+ prefix + json.dumps(message.message, ensure_ascii=False)
197
+ ) # type: ignore[attr-defined]
187
198
  else:
188
199
  context.append(prefix + str(message.message))
189
200
  return converter.convert(
@@ -372,6 +372,7 @@ class HuggingFaceDatasetManager(BaseDatasetManager):
372
372
  for record in records
373
373
  ],
374
374
  f,
375
+ ensure_ascii=False,
375
376
  )
376
377
  temp_file_path = f.name
377
378
 
@@ -411,14 +412,14 @@ class HuggingFaceDatasetManager(BaseDatasetManager):
411
412
  )
412
413
  else:
413
414
  try:
414
- json.dumps(file_content)
415
+ json.dumps(file_content, ensure_ascii=False)
415
416
  json_content = file_content
416
417
  except (TypeError, ValueError):
417
418
  raise ValueError(
418
419
  "file_content is not JSON serializable."
419
420
  )
420
421
 
421
- json.dump(json_content, f)
422
+ json.dump(json_content, f, ensure_ascii=False)
422
423
  elif file_type == "md" or file_type == "txt":
423
424
  f.write(file_content)
424
425
  else:
@@ -120,7 +120,7 @@ class BaseGenerator(abc.ABC):
120
120
  try:
121
121
  with file_path.open("w", encoding="utf-8") as f:
122
122
  for datapoint in self._data:
123
- json.dump(datapoint.to_dict(), f)
123
+ json.dump(datapoint.to_dict(), f, ensure_ascii=False)
124
124
  f.write("\n") # Ensure each entry is on a new line
125
125
  logger.info(f"Dataset saved successfully to {file_path}")
126
126
  except IOError as e:
camel/loaders/base_io.py CHANGED
@@ -276,7 +276,7 @@ class JsonFile(File):
276
276
  # Parse the JSON data from the file
277
277
  data = json.load(file)
278
278
  # Create a dictionary with the parsed data
279
- doc = {"page_content": json.dumps(data)}
279
+ doc = {"page_content": json.dumps(data, ensure_ascii=False)}
280
280
  # Calculate a unique identifier for the file
281
281
  file_id = md5(file.getvalue()).hexdigest()
282
282
  # Reset the file pointer to the beginning
@@ -164,4 +164,4 @@ class ChunkrReader:
164
164
  Returns:
165
165
  str: Formatted JSON as a string.
166
166
  """
167
- return json.dumps(response_json, indent=4)
167
+ return json.dumps(response_json, indent=4, ensure_ascii=False)
@@ -113,7 +113,7 @@ class ToolCall(BaseModel):
113
113
 
114
114
  # Try to serialize arguments to ensure they're JSON-compatible
115
115
  try:
116
- json.dumps(v)
116
+ json.dumps(v, ensure_ascii=False)
117
117
  except (TypeError, ValueError):
118
118
  raise ValueError("Arguments must be JSON-serializable")
119
119
 
@@ -155,7 +155,7 @@ class ToolResponse(BaseModel):
155
155
 
156
156
  # Ensure content is JSON-serializable
157
157
  try:
158
- json.dumps(v)
158
+ json.dumps(v, ensure_ascii=False)
159
159
  except (TypeError, ValueError):
160
160
  raise ValueError("Response content must be JSON-serializable")
161
161
 
@@ -133,7 +133,7 @@ class FunctionCallingMessage(BaseMessage):
133
133
  "type": "function",
134
134
  "function": {
135
135
  "name": self.func_name,
136
- "arguments": json.dumps(self.args),
136
+ "arguments": json.dumps(self.args, ensure_ascii=False),
137
137
  },
138
138
  }
139
139
  ],
@@ -176,7 +176,9 @@ class CohereModel(BaseModelBackend):
176
176
  else:
177
177
  arguments = function_call.get("arguments") # type: ignore[attr-defined]
178
178
  arguments_dict = ast.literal_eval(arguments)
179
- arguments_json = json.dumps(arguments_dict)
179
+ arguments_json = json.dumps(
180
+ arguments_dict, ensure_ascii=False
181
+ )
180
182
 
181
183
  assis_tool_call_id = str(uuid.uuid4())
182
184
  tool_call_id = assis_tool_call_id
@@ -307,7 +307,8 @@ class SambaModel(BaseModelBackend):
307
307
  {
308
308
  "conversation_id": str(uuid.uuid4()),
309
309
  "messages": messages,
310
- }
310
+ },
311
+ ensure_ascii=False,
311
312
  ),
312
313
  "params": {
313
314
  "do_sample": {"type": "bool", "value": "true"},
@@ -537,7 +538,8 @@ class SambaModel(BaseModelBackend):
537
538
  {
538
539
  "conversation_id": str(uuid.uuid4()),
539
540
  "messages": messages,
540
- }
541
+ },
542
+ ensure_ascii=False,
541
543
  ),
542
544
  "params": {
543
545
  "do_sample": {"type": "bool", "value": "true"},
camel/personas/persona.py CHANGED
@@ -100,4 +100,5 @@ class Persona(BaseModel):
100
100
  ",",
101
101
  ": ",
102
102
  ), # Fine-tune separators for better readability
103
+ ensure_ascii=False,
103
104
  )
camel/runtime/api.py CHANGED
@@ -80,10 +80,14 @@ for module_function in modules_functions:
80
80
  output = sys.stdout.read()
81
81
  sys.stdout = sys.__stdout__
82
82
  return {
83
- "output": json.dumps(response_data),
83
+ "output": json.dumps(
84
+ response_data, ensure_ascii=False
85
+ ),
84
86
  "stdout": output,
85
87
  }
86
- return {"output": json.dumps(response_data)}
88
+ return {
89
+ "output": json.dumps(response_data, ensure_ascii=False)
90
+ }
87
91
 
88
92
  except (ImportError, AttributeError) as e:
89
93
  logger.error(f"Error importing {module_function}: {e}")
@@ -271,7 +271,7 @@ class DockerRuntime(BaseRuntime):
271
271
  funcs = [funcs]
272
272
 
273
273
  if arguments is not None:
274
- entrypoint += json.dumps(arguments)
274
+ entrypoint += json.dumps(arguments, ensure_ascii=False)
275
275
 
276
276
  for func in funcs:
277
277
  inner_func = func.func
@@ -100,7 +100,7 @@ class RemoteHttpRuntime(BaseRuntime):
100
100
  if not isinstance(funcs, list):
101
101
  funcs = [funcs]
102
102
  if arguments is not None:
103
- entrypoint += json.dumps(arguments)
103
+ entrypoint += json.dumps(arguments, ensure_ascii=False)
104
104
 
105
105
  for func in funcs:
106
106
  inner_func = func.func
@@ -75,7 +75,11 @@ class JsonStorage(BaseKeyValueStorage):
75
75
  """
76
76
  with self.json_path.open("a") as f:
77
77
  f.writelines(
78
- [json.dumps(r, cls=_CamelJSONEncoder) + "\n" for r in records]
78
+ [
79
+ json.dumps(r, cls=_CamelJSONEncoder, ensure_ascii=False)
80
+ + "\n"
81
+ for r in records
82
+ ]
79
83
  )
80
84
 
81
85
  def load(self) -> List[Dict[str, Any]]:
@@ -133,7 +133,7 @@ class RedisStorage(BaseKeyValueStorage):
133
133
  if self._client is None:
134
134
  raise ValueError("Redis client is not initialized")
135
135
  try:
136
- value = json.dumps(records)
136
+ value = json.dumps(records, ensure_ascii=False)
137
137
  if expire:
138
138
  await self._client.setex(self._sid, expire, value)
139
139
  else:
@@ -219,13 +219,13 @@ class FileWriteToolkit(BaseToolkit):
219
219
  try:
220
220
  # Try parsing as JSON string first
221
221
  data = json.loads(content)
222
- json.dump(data, f)
222
+ json.dump(data, f, ensure_ascii=False)
223
223
  except json.JSONDecodeError:
224
224
  # If not valid JSON string, write as is
225
225
  f.write(content)
226
226
  else:
227
227
  # If not string, dump as JSON
228
- json.dump(content, f)
228
+ json.dump(content, f, ensure_ascii=False)
229
229
  logger.debug(f"Wrote JSON to {file_path} with {encoding} encoding")
230
230
 
231
231
  def _write_yaml_file(
@@ -75,7 +75,9 @@ class LinkedInToolkit(BaseToolkit):
75
75
  }
76
76
 
77
77
  response = requests.post(
78
- url, headers=headers, data=json.dumps(post_data)
78
+ url,
79
+ headers=headers,
80
+ data=json.dumps(post_data, ensure_ascii=False),
79
81
  )
80
82
  if response.status_code == 201:
81
83
  post_response = response.json()
@@ -102,8 +102,12 @@ class _MCPServer(BaseToolkit):
102
102
  sse_client(self.command_or_url)
103
103
  )
104
104
  else:
105
+ command = self.command_or_url
106
+ if os.name == "nt" and command.lower() == "npx":
107
+ command = "npx.cmd"
108
+
105
109
  server_parameters = StdioServerParameters(
106
- command=self.command_or_url, args=self.args, env=self.env
110
+ command=command, args=self.args, env=self.env
107
111
  )
108
112
  (
109
113
  read_stream,
@@ -178,7 +178,7 @@ class NetworkXToolkit(BaseToolkit):
178
178
  """
179
179
  logger.info("Serializing the graph.")
180
180
  nx = self._get_nx()
181
- return json.dumps(nx.node_link_data(self.graph))
181
+ return json.dumps(nx.node_link_data(self.graph), ensure_ascii=False)
182
182
 
183
183
  def deserialize_graph(self, data: str) -> None:
184
184
  r"""Loads a graph from a serialized JSON string.
@@ -199,7 +199,7 @@ class NetworkXToolkit(BaseToolkit):
199
199
  logger.info(f"Exporting graph to file: {file_path}")
200
200
  nx = self._get_nx()
201
201
  with open(file_path, "w") as file:
202
- json.dump(nx.node_link_data(self.graph), file)
202
+ json.dump(nx.node_link_data(self.graph), file, ensure_ascii=False)
203
203
 
204
204
  def import_from_file(self, file_path: str) -> None:
205
205
  r"""Imports a graph from a JSON file.
@@ -751,7 +751,8 @@ class SearchToolkit(BaseToolkit):
751
751
  "summary": summary,
752
752
  "count": count,
753
753
  "page": page,
754
- }
754
+ },
755
+ ensure_ascii=False,
755
756
  )
756
757
  try:
757
758
  response = requests.post(url, headers=headers, data=payload)
@@ -835,6 +836,116 @@ class SearchToolkit(BaseToolkit):
835
836
  except Exception as e:
836
837
  return {"error": f"Baidu scraping error: {e!s}"}
837
838
 
839
+ def search_bing(self, query: str, max_results: int = 5) -> Dict[str, Any]:
840
+ r"""Use Bing search engine to search information for the given query.
841
+
842
+ This function queries the Chinese version of Bing search engine (cn.
843
+ bing.com) using web scraping to retrieve relevant search results. It
844
+ extracts search results including titles, snippets, and URLs. This
845
+ function is particularly useful when the query is in Chinese or when
846
+ Chinese search results are desired.
847
+
848
+ Args:
849
+ query (str): The search query string to submit to Bing. Works best
850
+ with Chinese queries or when Chinese results are preferred.
851
+ max_results (int): Maximum number of results to return.
852
+ (default: :obj:`5`)
853
+
854
+ Returns:
855
+ Dict ([str, Any]): A dictionary containing either:
856
+ - 'results': A list of dictionaries, each with:
857
+ - 'result_id': The index of the result.
858
+ - 'snippet': A brief description of the search result.
859
+ - 'title': The title of the search result.
860
+ - 'link': The URL of the search result.
861
+ - or 'error': An error message if something went wrong.
862
+ """
863
+ from typing import Any, Dict, List, cast
864
+ from urllib.parse import urlencode
865
+
866
+ from bs4 import BeautifulSoup, Tag
867
+
868
+ try:
869
+ query = urlencode({"q": query})
870
+ url = f'https://cn.bing.com/search?{query}'
871
+ headers = {
872
+ "User-Agent": (
873
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
874
+ "AppleWebKit/537.36 (KHTML, like Gecko) "
875
+ "Chrome/120.0.0.0 Safari/537.36"
876
+ ),
877
+ }
878
+ # Add timeout to prevent hanging
879
+ response = requests.get(url, headers=headers, timeout=10)
880
+
881
+ # Check if the request was successful
882
+ if response.status_code != 200:
883
+ return {
884
+ "error": (
885
+ f"Bing returned status code: "
886
+ f"{response.status_code}"
887
+ )
888
+ }
889
+
890
+ response.encoding = 'utf-8'
891
+ soup = BeautifulSoup(response.text, 'html.parser')
892
+
893
+ b_results_element = soup.find("ol", id="b_results")
894
+ if b_results_element is None:
895
+ return {"results": []}
896
+
897
+ # Ensure b_results is a Tag and find all li elements
898
+ b_results_tag = cast(Tag, b_results_element)
899
+ result_items = b_results_tag.find_all("li")
900
+
901
+ results: List[Dict[str, Any]] = []
902
+ for i in range(min(len(result_items), max_results)):
903
+ row = result_items[i]
904
+ if not isinstance(row, Tag):
905
+ continue
906
+
907
+ h2_element = row.find("h2")
908
+ if h2_element is None:
909
+ continue
910
+ h2_tag = cast(Tag, h2_element)
911
+
912
+ title = h2_tag.get_text().strip()
913
+
914
+ link_tag_element = h2_tag.find("a")
915
+ if link_tag_element is None:
916
+ continue
917
+ link_tag = cast(Tag, link_tag_element)
918
+
919
+ link = link_tag.get("href")
920
+ if link is None:
921
+ continue
922
+
923
+ content_element = row.find("p", class_="b_algoSlug")
924
+ content_text = ""
925
+ if content_element is not None and isinstance(
926
+ content_element, Tag
927
+ ):
928
+ content_text = content_element.get_text()
929
+
930
+ row_data = {
931
+ "result_id": i + 1,
932
+ "snippet": content_text,
933
+ "title": title,
934
+ "link": link,
935
+ }
936
+ results.append(row_data)
937
+
938
+ if not results:
939
+ return {
940
+ "warning": "No results found. Check if "
941
+ "Bing HTML structure has changed."
942
+ }
943
+
944
+ return {"results": results}
945
+
946
+ except Exception as e:
947
+ return {"error": f"Bing scraping error: {e!s}"}
948
+
838
949
  def get_tools(self) -> List[FunctionTool]:
839
950
  r"""Returns a list of FunctionTool objects representing the
840
951
  functions in the toolkit.
@@ -853,4 +964,5 @@ class SearchToolkit(BaseToolkit):
853
964
  FunctionTool(self.search_brave),
854
965
  FunctionTool(self.search_bocha),
855
966
  FunctionTool(self.search_baidu),
967
+ FunctionTool(self.search_bing),
856
968
  ]
@@ -238,7 +238,7 @@ class SemanticScholarToolkit(BaseToolkit):
238
238
  papers = response.json()
239
239
  if save_to_file:
240
240
  with open('recommended_papers.json', 'w') as output:
241
- json.dump(papers, output)
241
+ json.dump(papers, output, ensure_ascii=False)
242
242
  return papers
243
243
  except requests.exceptions.RequestException as e:
244
244
  return {"error": str(e)}
@@ -282,7 +282,7 @@ class SemanticScholarToolkit(BaseToolkit):
282
282
  response_data = response.json()
283
283
  if save_to_file:
284
284
  with open('author_information.json', 'w') as output:
285
- json.dump(response_data, output)
285
+ json.dump(response_data, output, ensure_ascii=False)
286
286
  return response_data
287
287
  except requests.exceptions.RequestException as e:
288
288
  return {"error": str(e)}
@@ -85,7 +85,7 @@ class StripeToolkit(BaseToolkit):
85
85
  self.logger.info(f"Retrieving customer with ID: {customer_id}")
86
86
  customer = stripe.Customer.retrieve(customer_id)
87
87
  self.logger.info(f"Retrieved customer: {customer.id}")
88
- json_string = json.dumps(customer)
88
+ json_string = json.dumps(customer, ensure_ascii=False)
89
89
  return json_string
90
90
  except Exception as e:
91
91
  return self.handle_exception("customer_get", e)
@@ -109,7 +109,9 @@ class StripeToolkit(BaseToolkit):
109
109
  self.logger.info(
110
110
  f"Successfully retrieved {len(customers)} customers."
111
111
  )
112
- return json.dumps([customer for customer in customers])
112
+ return json.dumps(
113
+ [customer for customer in customers], ensure_ascii=False
114
+ )
113
115
  except Exception as e:
114
116
  return self.handle_exception("customer_list", e)
115
117
 
@@ -128,7 +130,7 @@ class StripeToolkit(BaseToolkit):
128
130
  self.logger.info(
129
131
  f"Successfully retrieved account balance: {balance}."
130
132
  )
131
- return json.dumps(balance)
133
+ return json.dumps(balance, ensure_ascii=False)
132
134
  except Exception as e:
133
135
  return self.handle_exception("balance_get", e)
134
136
 
@@ -154,7 +156,10 @@ class StripeToolkit(BaseToolkit):
154
156
  f"Successfully retrieved {len(transactions)} "
155
157
  "balance transactions."
156
158
  )
157
- return json.dumps([transaction for transaction in transactions])
159
+ return json.dumps(
160
+ [transaction for transaction in transactions],
161
+ ensure_ascii=False,
162
+ )
158
163
  except Exception as e:
159
164
  return self.handle_exception("balance_transaction_list", e)
160
165
 
@@ -174,7 +179,7 @@ class StripeToolkit(BaseToolkit):
174
179
  self.logger.info(f"Retrieving payment with ID: {payment_id}")
175
180
  payment = stripe.PaymentIntent.retrieve(payment_id)
176
181
  self.logger.info(f"Retrieved payment: {payment.id}")
177
- return json.dumps(payment)
182
+ return json.dumps(payment, ensure_ascii=False)
178
183
  except Exception as e:
179
184
  return self.handle_exception("payment_get", e)
180
185
 
@@ -197,7 +202,9 @@ class StripeToolkit(BaseToolkit):
197
202
  self.logger.info(
198
203
  f"Successfully retrieved {len(payments)} payments."
199
204
  )
200
- return json.dumps([payment for payment in payments])
205
+ return json.dumps(
206
+ [payment for payment in payments], ensure_ascii=False
207
+ )
201
208
  except Exception as e:
202
209
  return self.handle_exception("payment_list", e)
203
210
 
@@ -217,7 +224,7 @@ class StripeToolkit(BaseToolkit):
217
224
  self.logger.info(f"Retrieving refund with ID: {refund_id}")
218
225
  refund = stripe.Refund.retrieve(refund_id)
219
226
  self.logger.info(f"Retrieved refund: {refund.id}")
220
- return json.dumps(refund)
227
+ return json.dumps(refund, ensure_ascii=False)
221
228
  except Exception as e:
222
229
  return self.handle_exception("refund_get", e)
223
230
 
@@ -238,7 +245,9 @@ class StripeToolkit(BaseToolkit):
238
245
  self.logger.info(f"Listing refunds with limit={limit}")
239
246
  refunds = stripe.Refund.list(limit=limit).data
240
247
  self.logger.info(f"Successfully retrieved {len(refunds)} refunds.")
241
- return json.dumps([refund for refund in refunds])
248
+ return json.dumps(
249
+ [refund for refund in refunds], ensure_ascii=False
250
+ )
242
251
  except Exception as e:
243
252
  return self.handle_exception("refund_list", e)
244
253
 
@@ -61,7 +61,10 @@ class SymPyToolkit(BaseToolkit):
61
61
  try:
62
62
  expr = sp.parsing.sympy_parser.parse_expr(expression)
63
63
  simplified = sp.simplify(expr)
64
- return json.dumps({"status": "success", "result": str(simplified)})
64
+ return json.dumps(
65
+ {"status": "success", "result": str(simplified)},
66
+ ensure_ascii=False,
67
+ )
65
68
  except Exception as e:
66
69
  return self.handle_exception("simplify_expression", e)
67
70
 
@@ -83,7 +86,9 @@ class SymPyToolkit(BaseToolkit):
83
86
  try:
84
87
  expr = sp.parsing.sympy_parser.parse_expr(expression)
85
88
  expanded_expr = sp.expand(expr)
86
- return json.dumps({"result": str(expanded_expr)})
89
+ return json.dumps(
90
+ {"result": str(expanded_expr)}, ensure_ascii=False
91
+ )
87
92
  except Exception as e:
88
93
  return self.handle_exception("expand_expression", e)
89
94
 
@@ -105,7 +110,9 @@ class SymPyToolkit(BaseToolkit):
105
110
  try:
106
111
  expr = sp.parsing.sympy_parser.parse_expr(expression)
107
112
  factored_expr = sp.factor(expr)
108
- return json.dumps({"result": str(factored_expr)})
113
+ return json.dumps(
114
+ {"result": str(factored_expr)}, ensure_ascii=False
115
+ )
109
116
  except Exception as e:
110
117
  return self.handle_exception("factor_expression", e)
111
118
 
@@ -133,7 +140,9 @@ class SymPyToolkit(BaseToolkit):
133
140
  eqs = [sp.sympify(eq) for eq in equations]
134
141
  vars = sp.symbols(variables)
135
142
  solution = sp.linsolve(eqs, vars)
136
- return json.dumps({"result": [str(sol) for sol in solution]})
143
+ return json.dumps(
144
+ {"result": [str(sol) for sol in solution]}, ensure_ascii=False
145
+ )
137
146
  except Exception as e:
138
147
  return self.handle_exception("solve_linear_system", e)
139
148
 
@@ -164,7 +173,9 @@ class SymPyToolkit(BaseToolkit):
164
173
  eqs = [sp.sympify(eq) for eq in sympy_equations]
165
174
  vars = sp.symbols(variables)
166
175
  solution = sp.nonlinsolve(eqs, vars)
167
- return json.dumps({"result": [str(sol) for sol in solution]})
176
+ return json.dumps(
177
+ {"result": [str(sol) for sol in solution]}, ensure_ascii=False
178
+ )
168
179
  except Exception as e:
169
180
  return self.handle_exception("solve_nonlinear_system", e)
170
181
 
@@ -191,7 +202,7 @@ class SymPyToolkit(BaseToolkit):
191
202
  var = sp.symbols(variable)
192
203
  ineq = sp.sympify(inequality)
193
204
  solution = sp.solve_univariate_inequality(ineq, var)
194
- return json.dumps({"result": str(solution)})
205
+ return json.dumps({"result": str(solution)}, ensure_ascii=False)
195
206
  except Exception as e:
196
207
  return self.handle_exception("solve_univariate_inequality", e)
197
208
 
@@ -214,7 +225,7 @@ class SymPyToolkit(BaseToolkit):
214
225
  try:
215
226
  ineqs = [sp.sympify(ineq) for ineq in inequalities]
216
227
  solution = sp.reduce_inequalities(ineqs)
217
- return json.dumps({"result": str(solution)})
228
+ return json.dumps({"result": str(solution)}, ensure_ascii=False)
218
229
  except Exception as e:
219
230
  return self.handle_exception("reduce_inequalities", e)
220
231
 
@@ -241,7 +252,7 @@ class SymPyToolkit(BaseToolkit):
241
252
  var = sp.symbols(variable)
242
253
  expr = sp.parsing.sympy_parser.parse_expr(expression)
243
254
  poly = sp.Poly(expr, var)
244
- return json.dumps({"result": str(poly)})
255
+ return json.dumps({"result": str(poly)}, ensure_ascii=False)
245
256
  except Exception as e:
246
257
  return self.handle_exception("polynomial_representation", e)
247
258
 
@@ -266,7 +277,7 @@ class SymPyToolkit(BaseToolkit):
266
277
  var = sp.symbols(variable)
267
278
  expr = sp.parsing.sympy_parser.parse_expr(expression)
268
279
  degree = int(sp.degree(expr, var))
269
- return json.dumps({"result": degree})
280
+ return json.dumps({"result": degree}, ensure_ascii=False)
270
281
  except Exception as e:
271
282
  return self.handle_exception("polynomial_degree", e)
272
283
 
@@ -292,7 +303,10 @@ class SymPyToolkit(BaseToolkit):
292
303
  var = sp.symbols(variable)
293
304
  expr = sp.parsing.sympy_parser.parse_expr(expression)
294
305
  coeffs = sp.Poly(expr, var).all_coeffs()
295
- return json.dumps({"result": [str(coeff) for coeff in coeffs]})
306
+ return json.dumps(
307
+ {"result": [str(coeff) for coeff in coeffs]},
308
+ ensure_ascii=False,
309
+ )
296
310
  except Exception as e:
297
311
  return self.handle_exception("polynomial_coefficients", e)
298
312
 
@@ -323,7 +337,9 @@ class SymPyToolkit(BaseToolkit):
323
337
  )
324
338
  eq = sp.sympify(sympy_equation)
325
339
  solutions = sp.solve(eq, variable)
326
- return json.dumps({"result": [str(sol) for sol in solutions]})
340
+ return json.dumps(
341
+ {"result": [str(sol) for sol in solutions]}, ensure_ascii=False
342
+ )
327
343
  except Exception as e:
328
344
  return self.handle_exception("solve_equation", e)
329
345
 
@@ -346,7 +362,9 @@ class SymPyToolkit(BaseToolkit):
346
362
  try:
347
363
  expr = sp.parsing.sympy_parser.parse_expr(expression)
348
364
  roots = sp.solve(expr)
349
- return json.dumps({"status": "success", "result": str(roots)})
365
+ return json.dumps(
366
+ {"status": "success", "result": str(roots)}, ensure_ascii=False
367
+ )
350
368
 
351
369
  except Exception as e:
352
370
  return self.handle_exception("find_roots", e)
@@ -379,7 +397,7 @@ class SymPyToolkit(BaseToolkit):
379
397
  )
380
398
  expr = sp.parsing.sympy_parser.parse_expr(expression)
381
399
  derivative = sp.diff(expr, variable)
382
- return json.dumps({"result": str(derivative)})
400
+ return json.dumps({"result": str(derivative)}, ensure_ascii=False)
383
401
  except Exception as e:
384
402
  return self.handle_exception("differentiate", e)
385
403
 
@@ -411,7 +429,7 @@ class SymPyToolkit(BaseToolkit):
411
429
  )
412
430
  expr = sp.parsing.sympy_parser.parse_expr(expression)
413
431
  integral = sp.integrate(expr, variable)
414
- return json.dumps({"result": str(integral)})
432
+ return json.dumps({"result": str(integral)}, ensure_ascii=False)
415
433
  except Exception as e:
416
434
  return self.handle_exception("integrate", e)
417
435
 
@@ -441,7 +459,7 @@ class SymPyToolkit(BaseToolkit):
441
459
  var = sp.symbols(variable)
442
460
  expr = sp.parsing.sympy_parser.parse_expr(expression)
443
461
  integral = sp.integrate(expr, (var, lower, upper))
444
- return json.dumps({"result": str(integral)})
462
+ return json.dumps({"result": str(integral)}, ensure_ascii=False)
445
463
  except Exception as e:
446
464
  return self.handle_exception("definite_integral", e)
447
465
 
@@ -473,7 +491,7 @@ class SymPyToolkit(BaseToolkit):
473
491
  var = sp.symbols(variable)
474
492
  expr = sp.parsing.sympy_parser.parse_expr(expression)
475
493
  series = sp.series(expr, var, point, order)
476
- return json.dumps({"result": str(series)})
494
+ return json.dumps({"result": str(series)}, ensure_ascii=False)
477
495
  except Exception as e:
478
496
  return self.handle_exception("series_expansion", e)
479
497
 
@@ -505,7 +523,7 @@ class SymPyToolkit(BaseToolkit):
505
523
  var = sp.symbols(variable)
506
524
  expr = sp.parsing.sympy_parser.parse_expr(expression)
507
525
  limit = sp.limit(expr, var, point)
508
- return json.dumps({"result": str(limit)})
526
+ return json.dumps({"result": str(limit)}, ensure_ascii=False)
509
527
  except Exception as e:
510
528
  return self.handle_exception("compute_limit", e)
511
529
 
@@ -534,7 +552,8 @@ class SymPyToolkit(BaseToolkit):
534
552
  derivative = sp.diff(expr, var)
535
553
  critical_points = sp.solve(derivative, var)
536
554
  return json.dumps(
537
- {"result": [str(point) for point in critical_points]}
555
+ {"result": [str(point) for point in critical_points]},
556
+ ensure_ascii=False,
538
557
  )
539
558
  except Exception as e:
540
559
  return self.handle_exception("find_critical_points", e)
@@ -568,7 +587,9 @@ class SymPyToolkit(BaseToolkit):
568
587
  right_limit = sp.limit(expr, var, point, dir='+')
569
588
  value_at_point = expr.subs(var, point)
570
589
  is_continuous = left_limit == right_limit == value_at_point
571
- return json.dumps({"result": str(is_continuous)})
590
+ return json.dumps(
591
+ {"result": str(is_continuous)}, ensure_ascii=False
592
+ )
572
593
  except Exception as e:
573
594
  return self.handle_exception("check_continuity", e)
574
595
 
@@ -590,7 +611,7 @@ class SymPyToolkit(BaseToolkit):
590
611
  try:
591
612
  mat = sp.Matrix(matrix)
592
613
  determinant = mat.det()
593
- return json.dumps({"result": str(determinant)})
614
+ return json.dumps({"result": str(determinant)}, ensure_ascii=False)
594
615
  except Exception as e:
595
616
  return self.handle_exception("compute_determinant", e)
596
617
 
@@ -613,7 +634,7 @@ class SymPyToolkit(BaseToolkit):
613
634
  try:
614
635
  mat = sp.Matrix(matrix)
615
636
  inverse = mat.inv()
616
- return json.dumps({"result": str(inverse)})
637
+ return json.dumps({"result": str(inverse)}, ensure_ascii=False)
617
638
  except Exception as e:
618
639
  return self.handle_exception("compute_inverse", e)
619
640
 
@@ -638,7 +659,8 @@ class SymPyToolkit(BaseToolkit):
638
659
  mat = sp.Matrix(matrix)
639
660
  eigenvalues = mat.eigenvals()
640
661
  return json.dumps(
641
- {"result": {str(k): str(v) for k, v in eigenvalues.items()}}
662
+ {"result": {str(k): str(v) for k, v in eigenvalues.items()}},
663
+ ensure_ascii=False,
642
664
  )
643
665
  except Exception as e:
644
666
  return self.handle_exception("compute_eigenvalues", e)
@@ -676,7 +698,7 @@ class SymPyToolkit(BaseToolkit):
676
698
  }
677
699
  for eigenvalue, multiplicity, vectors in eigenvectors
678
700
  ]
679
- return json.dumps({"result": result})
701
+ return json.dumps({"result": result}, ensure_ascii=False)
680
702
  except Exception as e:
681
703
  return self.handle_exception("compute_eigenvectors", e)
682
704
 
@@ -700,7 +722,9 @@ class SymPyToolkit(BaseToolkit):
700
722
  try:
701
723
  mat = sp.Matrix(matrix)
702
724
  nullspace = mat.nullspace()
703
- return json.dumps({"result": [str(vec) for vec in nullspace]})
725
+ return json.dumps(
726
+ {"result": [str(vec) for vec in nullspace]}, ensure_ascii=False
727
+ )
704
728
  except Exception as e:
705
729
  return self.handle_exception("compute_nullspace", e)
706
730
 
@@ -722,7 +746,7 @@ class SymPyToolkit(BaseToolkit):
722
746
  try:
723
747
  mat = sp.Matrix(matrix)
724
748
  rank = mat.rank()
725
- return json.dumps({"result": rank})
749
+ return json.dumps({"result": rank}, ensure_ascii=False)
726
750
  except Exception as e:
727
751
  return self.handle_exception("compute_rank", e)
728
752
 
@@ -759,7 +783,9 @@ class SymPyToolkit(BaseToolkit):
759
783
 
760
784
  # Compute the dot (inner) product.
761
785
  inner_product = v1.dot(v2)
762
- return json.dumps({"result": str(inner_product)})
786
+ return json.dumps(
787
+ {"result": str(inner_product)}, ensure_ascii=False
788
+ )
763
789
  except Exception as e:
764
790
  return self.handle_exception("compute_inner_product", e)
765
791
 
@@ -781,7 +807,8 @@ class SymPyToolkit(BaseToolkit):
781
807
  """
782
808
  logger.error(f"Error in {func_name}: {error}")
783
809
  return json.dumps(
784
- {"status": "error", "message": f"Error in {func_name}: {error}"}
810
+ {"status": "error", "message": f"Error in {func_name}: {error}"},
811
+ ensure_ascii=False,
785
812
  )
786
813
 
787
814
  def get_tools(self) -> List[FunctionTool]:
camel/types/enums.py CHANGED
@@ -166,6 +166,7 @@ class ModelType(UnifiedModelType, Enum):
166
166
  QWEN_2_5_14B = "qwen2.5-14b-instruct"
167
167
  QWEN_QWQ_32B = "qwq-32b-preview"
168
168
  QWEN_QVQ_72B = "qvq-72b-preview"
169
+ QWEN_QWQ_PLUS = "qwq-plus"
169
170
 
170
171
  # Yi models (01-ai)
171
172
  YI_LIGHTNING = "yi-lightning"
@@ -470,6 +471,7 @@ class ModelType(UnifiedModelType, Enum):
470
471
  ModelType.QWEN_2_5_14B,
471
472
  ModelType.QWEN_QWQ_32B,
472
473
  ModelType.QWEN_QVQ_72B,
474
+ ModelType.QWEN_QWQ_PLUS,
473
475
  }
474
476
 
475
477
  @property
@@ -599,6 +601,7 @@ class ModelType(UnifiedModelType, Enum):
599
601
  ModelType.NVIDIA_MISTRAL_LARGE,
600
602
  ModelType.NVIDIA_MIXTRAL_8X7B,
601
603
  ModelType.QWEN_QWQ_32B,
604
+ ModelType.QWEN_QWQ_PLUS,
602
605
  ModelType.QWEN_QVQ_72B,
603
606
  ModelType.INTERNLM3_8B_INSTRUCT,
604
607
  ModelType.INTERNLM3_LATEST,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.30
3
+ Version: 0.2.32
4
4
  Summary: Communicative Agents for AI Society Study
5
5
  Project-URL: Homepage, https://www.camel-ai.org/
6
6
  Project-URL: Repository, https://github.com/camel-ai/camel
@@ -1,13 +1,13 @@
1
- camel/__init__.py,sha256=6O1jJXOrxsfBIdPbCn45WbL1VejUHMYfY9JhXmw-uco,912
1
+ camel/__init__.py,sha256=27oSYH_OvsE3N753lXzFHLFPEevpllynG_Jyc0bzM1Q,912
2
2
  camel/generators.py,sha256=JRqj9_m1PF4qT6UtybzTQ-KBT9MJQt18OAAYvQ_fr2o,13844
3
3
  camel/human.py,sha256=9X09UmxI2JqQnhrFfnZ3B9EzFmVfdSWQcjLWTIXKXe0,4962
4
4
  camel/logger.py,sha256=rZVeOVYuQ9RYJ5Tqyv0usqy0g4zaVEq4qSfZ9nd2640,5755
5
5
  camel/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  camel/agents/__init__.py,sha256=LcS4m8s97-yADfznvcaAdUe9W0E9h3m6zrSc9H6m9so,1545
7
7
  camel/agents/_types.py,sha256=GGpZ9FGq_SGla_Vz-YcYW7KMQzwE8lfM4Ga0QaGzKxk,1423
8
- camel/agents/_utils.py,sha256=Nw63FXGoyshllqcTmSTNjIFO7hi4rfENGn-gfne4yOo,6228
8
+ camel/agents/_utils.py,sha256=0O9YjIin-ZSEux2fQ2NPuB2YIxXsPyd9Ws1Kll6Vxhw,6248
9
9
  camel/agents/base.py,sha256=c4bJYL3G3Z41SaFdMPMn8ZjLdFiFaVOFO6EQIfuCVR8,1124
10
- camel/agents/chat_agent.py,sha256=hd47ZXj0Hh0_5EI1T0pkS_lHt0h5M9iY9Ju3T22Yt_I,48036
10
+ camel/agents/chat_agent.py,sha256=19JMd5Rz06I5m5X36MsXshrmjB5QoJfR8oN9bfgMlWw,45888
11
11
  camel/agents/critic_agent.py,sha256=qFVlHlQo0CVgmPWfWYLT8_oP_KyzCLFsQw_nN_vu5Bs,7487
12
12
  camel/agents/deductive_reasoner_agent.py,sha256=6BZGaq1hR6hKJuQtOfoYQnk_AkZpw_Mr7mUy2MspQgs,13540
13
13
  camel/agents/embodied_agent.py,sha256=XBxBu5ZMmSJ4B2U3Z7SMwvLlgp6yNpaBe8HNQmY9CZA,7536
@@ -21,11 +21,11 @@ camel/agents/tool_agents/__init__.py,sha256=hhd1kQYDshfvszN5JHBorINH9L3dI6xdDfKn
21
21
  camel/agents/tool_agents/base.py,sha256=T6G5OaAJd4L_yHSFoWcrtqkMEyhge42ppVjx7lYD3Cg,1393
22
22
  camel/agents/tool_agents/hugging_face_tool_agent.py,sha256=nNySkdBRYaD05rLyPxzmq8W7D9WPcNHCY9h1jD6S0Hk,8717
23
23
  camel/benchmarks/__init__.py,sha256=QGZK03uHvXbblVap8lOVUrXlE6VprEDaNev9tiQAWF8,1122
24
- camel/benchmarks/apibank.py,sha256=mvI8irOfm0GxGafblT_4cpZmZKQO1XNfTDA_qioG9gY,21193
25
- camel/benchmarks/apibench.py,sha256=F9hvVOpX2NnYDB1BiwN2Tbga1mkHGHsmiLCwhva-Fi0,18973
24
+ camel/benchmarks/apibank.py,sha256=gqhrKQdBWUPrAH_C7-QHlf89rslCIcioSJqY1a_T1qg,21429
25
+ camel/benchmarks/apibench.py,sha256=DW4gJwn4_BTo_rk97tn5t03m385uGEC5M4-xAIrl1hU,19067
26
26
  camel/benchmarks/base.py,sha256=GHbcE0KAenEiYb3x8orLgyGPp40KTdLHwahVFhI-cgE,4594
27
- camel/benchmarks/gaia.py,sha256=ZMGzoQ2bdyCmVOdipj2lN3J-Ym1gySuZaYtSTvpUI9I,16774
28
- camel/benchmarks/nexus.py,sha256=Yi41HLoP7JsvRd-uieQInlw0jnIf4TfeCPhLJMHjXHo,18113
27
+ camel/benchmarks/gaia.py,sha256=TKUZr1XsPAVsJHxkpy0HUi64BMz0x3LAUUSRHlG2SxM,16858
28
+ camel/benchmarks/nexus.py,sha256=Yp1UGyaD3_857QKoUTOeSeB4MKqP08znaxa9hzm5gRk,18207
29
29
  camel/benchmarks/ragbench.py,sha256=XlBV6YK_eZSH0yscNMX10BFHsVOXDfLqj4b8QHgsjlk,11079
30
30
  camel/bots/__init__.py,sha256=6JRnSmUdnoZra20BJMqqrUrVfYSEbW9NyUksYmu6nwY,1174
31
31
  camel/bots/telegram_bot.py,sha256=z0B2O14-GTKGVX5e6-Q85zMp3eISE_hH-KqxlGOFJtM,2595
@@ -63,7 +63,7 @@ camel/configs/zhipuai_config.py,sha256=30plN-bSwogoP87V7elTRCMBspOZ58t4aKgg9ZoJF
63
63
  camel/data_collector/__init__.py,sha256=UWZya21xeJ6DvyLcf54XlYPg7ShOsNJmNR88kfRLmnA,924
64
64
  camel/data_collector/alpaca_collector.py,sha256=fqS_kws1EU9mDWlVxPXcoD1GhJ7lEzC28muGIMxiUpg,4683
65
65
  camel/data_collector/base.py,sha256=Rn0aJBBvpMZYYTLT1yNjIalIvDuVVwOx6iawKlzocZQ,6708
66
- camel/data_collector/sharegpt_collector.py,sha256=E06pf1CuqBAr2i0AQAlr6FtAEz7mwmKSq0RdFfX48PE,7255
66
+ camel/data_collector/sharegpt_collector.py,sha256=MqsGjkP9jOPuXY2fhN0xQ6HUZM0ZDuD6GHMdrCpbCpw,7616
67
67
  camel/datagen/__init__.py,sha256=EPF-eZ4rg7qbeSVZhfQ0iME0WDRSqRwBGbW-s0ZJ2EA,949
68
68
  camel/datagen/cot_datagen.py,sha256=WMw4NhUJVgpWOTvsMaQ1Fk1BYSXLtUlP-00wYPSuK7A,17650
69
69
  camel/datagen/self_improving_cot.py,sha256=4pTT_rsEOXevn3e_BlTpUFYsmDRCvV72sRkcmF-iywI,34284
@@ -80,10 +80,10 @@ camel/datagen/source2synth/models.py,sha256=gTdiKoGeHrZBPPOts6mKU9ZeUKh21uDcrCls
80
80
  camel/datagen/source2synth/user_data_processor_config.py,sha256=WpIePsxzFbpv3wFl0Wpe6kl0fJmR2AajiBH2OOJvFC0,2409
81
81
  camel/datahubs/__init__.py,sha256=1a8fRuzgirO2pHtPnuisZ76iF_AN9GxMFq9gwFKWE5I,906
82
82
  camel/datahubs/base.py,sha256=4QKWiJaeL5ReQpyTAbOtzHs-2CzAYbVyoMngYwdpZGU,4357
83
- camel/datahubs/huggingface.py,sha256=m1LDBv9ESNQINfiZdBpuVD5Zr1_iZqo-5LBYHXHhXw8,14853
83
+ camel/datahubs/huggingface.py,sha256=LgRruML4XnwHrm_jMB-aB-Ha-M9ErRrA7YmiL6saGis,14929
84
84
  camel/datahubs/models.py,sha256=tGb9OP_aomIhnwc0VapJjTg9PmyV_QCp5to9sABXF0Y,978
85
85
  camel/datasets/__init__.py,sha256=1hzkuN_B3i-VF6NbkyqyJkBbPzy0_qQImJcq-807VR4,945
86
- camel/datasets/base_generator.py,sha256=rB7f5qPBRZ_BWT12GpJhQd9LuVPXD7NX-8zQeS3d0iE,12236
86
+ camel/datasets/base_generator.py,sha256=vP6vGEwtLwQTiaxiq5u8oKtIzMayx-JbXh7QYCaU97k,12256
87
87
  camel/datasets/models.py,sha256=H0ksOfkwiPFjVr9xHMYbVoj8YTTWaLI2GYiWqesmiVs,2228
88
88
  camel/datasets/static_dataset.py,sha256=3r_WeyzY5WsnP9iHxE-q25TIDlWncS55Qbc-ztHrfUU,12220
89
89
  camel/embeddings/__init__.py,sha256=YKCFO_YVY-x4A4uWmRuoIEtltrilBmC17DkCcK4zSj8,1263
@@ -112,8 +112,8 @@ camel/interpreters/subprocess_interpreter.py,sha256=8tNbaQ8PQLy8HT3mrQ-vS93mcqn3
112
112
  camel/interpreters/docker/Dockerfile,sha256=6_k33dlpxgf8V9vfywWmjLuOgHmT2s-a8Lb8VbFRv4s,253
113
113
  camel/loaders/__init__.py,sha256=AJnrCWXkD0he3uJDxs7arMGf8nFqNYz3SK0JagMEO7A,1250
114
114
  camel/loaders/apify_reader.py,sha256=oaVjKyNhJhG-hTuIwrpZ2hsB4XTL0M-kUksgSL2R0ck,7952
115
- camel/loaders/base_io.py,sha256=SAJInsmIYin45lXMSAhzWEFl7FjQ4WswqRU0D7sihRs,10170
116
- camel/loaders/chunkr_reader.py,sha256=OhoJoXOjuI-XvJ4GOmiN_wB2NRQRHO4qk5PG4MHGMG0,6120
115
+ camel/loaders/base_io.py,sha256=zsbdBPHgSPFyQrtiUgAsHvy39QHWUObRYNaVvr-pPk0,10190
116
+ camel/loaders/chunkr_reader.py,sha256=Vzc0a1ac28DHQ5z40Va4ce2noOxaGnhRi3Clf60R1lc,6140
117
117
  camel/loaders/firecrawl_reader.py,sha256=wCPHEWbfLv_q2x9MdTiSvJ_LDqUPO88lzPf0mmOBsME,5667
118
118
  camel/loaders/jina_url_reader.py,sha256=dL9J5JlsFKEhi4gU_vYIxKvvf_RJ4LY9gG6i8P8JpcA,3601
119
119
  camel/loaders/mineru_extractor.py,sha256=nKa5n7f3ergv1TURcbXZJP5mQpnSCIFdlWrxWn4hBz8,9070
@@ -130,10 +130,10 @@ camel/memories/context_creators/__init__.py,sha256=pqzkBM2ro5JZD7RhWg05TjinphhCq
130
130
  camel/memories/context_creators/score_based.py,sha256=wNPino1fMS4UwebMGc3lgCa5mdVLIXfN3WMxB8xL-x8,5999
131
131
  camel/messages/__init__.py,sha256=Px-gTFp2Kcgbeb2sZQ_f4tqjoLHE-QEOiMHIMfPrvTw,1949
132
132
  camel/messages/base.py,sha256=dY9HVqoVjUDvlNzCHOwcTSbhiPvIi6CINLg8oJ1U5j4,19602
133
- camel/messages/func_message.py,sha256=EjsUor40oUUKrHwolRpCH0sJECcqnp2mm4072tNWTPg,5939
133
+ camel/messages/func_message.py,sha256=2fv35Ruyhhf-wmqtCPiqC-ZujnR-hJH-rEoSgPTKdA8,5959
134
134
  camel/messages/conversion/__init__.py,sha256=8B4C-0wj-dm925YRKNyx31WYK25PWpME7Q9jPtx2jkY,1047
135
135
  camel/messages/conversion/alpaca.py,sha256=jBU2bMhzNjzptGuoasThYvFov_cYPCYt3pEfs0T7z7U,4163
136
- camel/messages/conversion/conversation_models.py,sha256=f2ybtYdCbILq9IYgaHkQ57yYxDdCBSspKrfaArZvNw8,5300
136
+ camel/messages/conversion/conversation_models.py,sha256=qTrH62Iem4F_KcxNR6PvfjnrkfVbOyRBhyUgok4EviM,5340
137
137
  camel/messages/conversion/sharegpt/__init__.py,sha256=oWUuHV5w85kxqhz_hoElLmCfzLm-ccku-fM9SnUJ5zI,794
138
138
  camel/messages/conversion/sharegpt/function_call_formatter.py,sha256=cn7e7CfmxEVFlfOqhjhNuA8nuWvWD6hXYn-3okXNxxQ,1832
139
139
  camel/messages/conversion/sharegpt/hermes/__init__.py,sha256=mxuMSm-neaTgInIjYXuIVdC310E6jKJzM3IdtaJ4qY4,812
@@ -145,7 +145,7 @@ camel/models/anthropic_model.py,sha256=8XAj9sVaN1X0hvrL9a-qsmkAFWoGe1Ozj5XZsXYe1
145
145
  camel/models/azure_openai_model.py,sha256=l8hqhRQyxtkPR9mUq6fzbeL3ARjGxE8aht_GhiWC-r4,10383
146
146
  camel/models/base_audio_model.py,sha256=QkLqh0v-5kcE_jwFB5xAgvztAqB2Bot4_iG9sZdcl8A,2986
147
147
  camel/models/base_model.py,sha256=RolL8fRwVpfz8g9lpb_71h0mYTNl-U63f8KBy6hc3E0,10679
148
- camel/models/cohere_model.py,sha256=RAYHCyppDQxQ7BOR-e314AagB09vRxoScoHc-FtL6Bc,13355
148
+ camel/models/cohere_model.py,sha256=i1GHWp1l9oqbhzCjyaG9njrqLF1__q38OrTWOgChofw,13421
149
149
  camel/models/deepseek_model.py,sha256=HjFEGhxOuEGYOzE8dbkdJRjtrDIbyUZ9XRPKAgm4UFo,9621
150
150
  camel/models/fish_audio_model.py,sha256=RCwORRIdCbjZXWWjjctpksPI2DnS0b68JjxunHBQ1xk,5981
151
151
  camel/models/gemini_model.py,sha256=MUIQfZmSiqABPRjwjA8C-oIpRCgJmkRssM14BBApMWA,9779
@@ -164,7 +164,7 @@ camel/models/openai_compatible_model.py,sha256=GswUEFqVRJGCUb1IwgkR_SOIKCX7LrA4k
164
164
  camel/models/openai_model.py,sha256=CbfD9yVtAltyqdFpjnLXncFnmaGPDZq8JhJDaSfG0pc,10186
165
165
  camel/models/qwen_model.py,sha256=_LeeB0yrXRMI-gZOEEOHg0bWNOJpuQHf2G7u40--3r8,7064
166
166
  camel/models/reka_model.py,sha256=15DscZf3lbqsIzm6kzjzDrhblBt1_0xlphT4isuQMu0,10146
167
- camel/models/samba_model.py,sha256=i2k1qEbMMMhYDY5MWG3dqyy2oeDi43o35JZXLvDmvI0,22476
167
+ camel/models/samba_model.py,sha256=t8b9TA1iVlOUizYSn5NDw4RZWjURqsyd4mkisDXef_s,22558
168
168
  camel/models/sglang_model.py,sha256=lAxWpArP74lQ3E2IG-tEtBbs5ZRQPwKMfThvWSq1nFg,13782
169
169
  camel/models/siliconflow_model.py,sha256=c5vk4zAhZVf8pDF1uh-iSa_v8d0QoPLuIN27EemdMGE,5659
170
170
  camel/models/stub_model.py,sha256=dygYoxemnWWaxEX21L8QyKe-c75ti2CK9HnTuyHL5vs,5160
@@ -179,7 +179,7 @@ camel/models/reward/evaluator.py,sha256=54ev5MuQ_5Tp0-LGO59EIuIkGrVMbtXXqpBR5Ps9
179
179
  camel/models/reward/nemotron_model.py,sha256=EICDP2SyQpARupxsGWFKJHNADsVknT_t6tCG5R8AEPA,3916
180
180
  camel/models/reward/skywork_model.py,sha256=KxHVDuwja2kZBCoCX8_sLBbXUGRSFsTPjgwsy1uyoyU,3246
181
181
  camel/personas/__init__.py,sha256=b2EU-unbIfCZjgq2dODf9mq0L9-VP5QXDVTjeYyvKCM,804
182
- camel/personas/persona.py,sha256=Ssvp8coQU_kYuDm0W0J8r5AAZyOsn8EScLhVa0HjDOs,4221
182
+ camel/personas/persona.py,sha256=PCu_hCXM3AqOc4J0HT8F6_WT_GKj8ahWM1Aw1lxL0q4,4253
183
183
  camel/personas/persona_hub.py,sha256=v5O3BE_krz6s1OOiRhhnODuCf-2cqIw1tDCWgGG55dU,10555
184
184
  camel/prompts/__init__.py,sha256=suZUHJ4XUDCU4mB0AtMCcPbfzHU2nHEZH37sC_oyCx4,2386
185
185
  camel/prompts/ai_society.py,sha256=dOLSDCcjHkwTFXYorc0bSZq76DHj2cRMGKBVCViaaEg,6300
@@ -208,12 +208,12 @@ camel/retrievers/cohere_rerank_retriever.py,sha256=tzMS3HG4wD3gbIAVcHsC5fTbFxuiN
208
208
  camel/retrievers/hybrid_retrival.py,sha256=2ySeXnLunoBHarqssijjxn7bAQGypAXX6QdzxYstreM,9466
209
209
  camel/retrievers/vector_retriever.py,sha256=qWR9aUpXyhfv_t6rdgnOCASzfB13FkOWhx3BttIqNa8,10748
210
210
  camel/runtime/__init__.py,sha256=QFxG8qYixImqSmC5bLXgT4_gkC5V8nq9dr9XlY4iZZM,1125
211
- camel/runtime/api.py,sha256=NBSg1C0v6RqlooTIzPEDKcHNixPTaQImFvWmWsaskhc,3095
211
+ camel/runtime/api.py,sha256=JfkHqQ_Xs3ZNl4TXC_obV3Ymi21ltP1LAkXzBA3H_Lo,3227
212
212
  camel/runtime/base.py,sha256=KKBLO6PwWEWBXbYaVtO9JXqBT8110iYpMhgNSIxQvYQ,1512
213
213
  camel/runtime/configs.py,sha256=7swJ6shD5CAnQj16D_j1BWJjRDHLue8_BJcQ1-YiKJI,2431
214
- camel/runtime/docker_runtime.py,sha256=erQiP_vlu0xQD3iVYnRxHJVI6i_7tv_yrfRS7sbR0Lc,13558
214
+ camel/runtime/docker_runtime.py,sha256=Q1eN4rWxDB4PF_G7nq64Rk7xhRZgAhNqmlxsu6YMdCg,13578
215
215
  camel/runtime/llm_guard_runtime.py,sha256=n8MImZsYLXCfr6LG6BFvlC75Al16GMJMvGp4vFsob6E,8101
216
- camel/runtime/remote_http_runtime.py,sha256=G-uYajki-QTjeUdpCoPVDjvI-Rvc69aYvG3SVc2lm6s,6649
216
+ camel/runtime/remote_http_runtime.py,sha256=Emgz2xz4vbwCvErDk6Ni25aDA3EBXoPOQ7U70AgVg0w,6669
217
217
  camel/runtime/utils/__init__.py,sha256=_4kT7j4gW9t5Zd_AbFa2mcHe8rpLB0tVlgAhQHxfwQQ,875
218
218
  camel/runtime/utils/function_risk_toolkit.py,sha256=0A9IN61JSziwKYB0AtCTZByXV9A3zWDRcNATG2V2dmA,2356
219
219
  camel/runtime/utils/ignore_risk_toolkit.py,sha256=kvLyF7EWEjXhlQJsmvA3JDB7An_LjtFjCaanNxOVaBE,2695
@@ -242,8 +242,8 @@ camel/storages/graph_storages/neo4j_graph.py,sha256=Ng7fLCUrWhdFAd4d6UEpuAB6B6Qg
242
242
  camel/storages/key_value_storages/__init__.py,sha256=le_hl7MYoQvaiYaJHwomy8c0cvTemicZbmwxgCJUpOs,962
243
243
  camel/storages/key_value_storages/base.py,sha256=FSfxeLuG7SPvn-Mg-OQxtRKPtQBnRkB7lYeDaFOefpk,2177
244
244
  camel/storages/key_value_storages/in_memory.py,sha256=k04Nx53lYxD5MoqDtBEgZrQYkAQ-zIuU6tqnoNqiHws,1949
245
- camel/storages/key_value_storages/json.py,sha256=aVQ8BeC7p59valOYCE_HpziH7BrQQgh6ViEGDsm28gE,3486
246
- camel/storages/key_value_storages/redis.py,sha256=MTxInVFNOi-lTxJK3TFwdJTBwllxqzvwPVWYOBcBSbs,5700
245
+ camel/storages/key_value_storages/json.py,sha256=6GY91uqI2FgSO9mIEZGLSclIOOqDVLEXLn3mBQTJ1lg,3584
246
+ camel/storages/key_value_storages/redis.py,sha256=Suo7wxxBXFc0fkJ8qSX2xQ26Ik_YhoKWfTOVQKUl5vA,5720
247
247
  camel/storages/object_storages/__init__.py,sha256=26yATVTD9yVH-p9KueD30JakstTGiDh89GcFtUNNe4U,915
248
248
  camel/storages/object_storages/amazon_s3.py,sha256=9Yvyyyb1LGHxr8REEza7oGopbVtLEfOyXWJc18ZwgqA,7418
249
249
  camel/storages/object_storages/azure_blob.py,sha256=66dHcvjE2ZNdb339oBU6LbFiKzPYrnlb4tQ_3m2Yazc,5992
@@ -271,19 +271,19 @@ camel/toolkits/dalle_toolkit.py,sha256=Usmw3JiJErLQgWSB1qKq_bOACNwbUTQPFc_EsVzTr
271
271
  camel/toolkits/dappier_toolkit.py,sha256=_69IAmXE2QSbwGxnSEycaV2XrrkiM5wKI6heM7-4MfU,8175
272
272
  camel/toolkits/data_commons_toolkit.py,sha256=VmDipqHabDdYVCzhuoaPE832i76yXt-uom7p5ObH1w0,14121
273
273
  camel/toolkits/excel_toolkit.py,sha256=7ihj4vAmbWA1RFNQb0b5h86HY0cFYLlgX5h6laGCM-E,5908
274
- camel/toolkits/file_write_toolkit.py,sha256=d15gUOhdnnCPqMVr6OyGYCZ2-zVWJiK1RZ1RVYk30JQ,13403
274
+ camel/toolkits/file_write_toolkit.py,sha256=-efVXPEaHCZbsYi6BGffb6HMld-y8vFD6mU3gxoHFTo,13443
275
275
  camel/toolkits/function_tool.py,sha256=9I-7HHGf5TzdQDJce9xyz1tfrGZr5Os5iAopMK4p0XA,30325
276
276
  camel/toolkits/github_toolkit.py,sha256=EifsTjWJdykNgrGkhUJSHMRy1yx2oQdkW6eLqs8o0oQ,11728
277
277
  camel/toolkits/google_maps_toolkit.py,sha256=WTnkURpGri9KcY5OwV7AJJHOzmpu5RNmYE1QCVqvwWM,12023
278
278
  camel/toolkits/google_scholar_toolkit.py,sha256=pRFr-GZeGaYARuzbEhg3aDKyzWwAfj02YVp1Y5WOGTQ,7515
279
279
  camel/toolkits/human_toolkit.py,sha256=9CjB1flGXIx7mzkIliDjcwXATUvZNdrRCKWyEgR9EJc,1791
280
280
  camel/toolkits/image_analysis_toolkit.py,sha256=dpvT8n49s8B8AhJ8aFdy4OONb8E8r_Cwxpx-ByFruy8,7209
281
- camel/toolkits/linkedin_toolkit.py,sha256=9e7R6YXTeW5aM5o_eOv3YbnJE1ifw5HgaM-pMA-9rqU,7996
281
+ camel/toolkits/linkedin_toolkit.py,sha256=5ZSMG01RXjibJ2CtB1vLlQ4B-rv4sqf_2cUZC78WTE8,8041
282
282
  camel/toolkits/math_toolkit.py,sha256=5yVF0bKuwkZIV01uICd3TOfktXlTERjKt4DrFyz_oaE,3639
283
- camel/toolkits/mcp_toolkit.py,sha256=emglu4H4Kg_CGku9_8xKUqUwCzjXCIlgilGT-v7qlPE,17647
283
+ camel/toolkits/mcp_toolkit.py,sha256=j4twcLhZiEQCAEH0N3eQ_RLqDd59ObH93gyZMes3c84,17787
284
284
  camel/toolkits/meshy_toolkit.py,sha256=Fd6sQV2JtduxyvHxCBA0_zl2OCgJRAlvDEe58hX8gRg,6463
285
285
  camel/toolkits/mineru_toolkit.py,sha256=vRX9LholLNkpbJ6axfEN4pTG85aWb0PDmlVy3rAAXhg,6868
286
- camel/toolkits/networkx_toolkit.py,sha256=zsP95kst12Q-knafxixlSXdXr3sXjehCXZn7330bsEo,8483
286
+ camel/toolkits/networkx_toolkit.py,sha256=Zdnk5zmM_xzyoQ0qH0YRu8HY1Y0Uojg69sg1VVBvPcQ,8523
287
287
  camel/toolkits/notion_toolkit.py,sha256=44TYy_51RhIQVfCuLKMH9U5cmRCzpQNSEN9IbrZlSqU,9590
288
288
  camel/toolkits/open_api_toolkit.py,sha256=Venfq8JwTMQfzRzzB7AYmYUMEX35hW0BjIv_ozFMiNk,23316
289
289
  camel/toolkits/openbb_toolkit.py,sha256=_13onVlXnUz9SZQHkeqQlZpXf1GVWp8BzrCFSK8aCMY,28911
@@ -291,11 +291,11 @@ camel/toolkits/page_script.js,sha256=gypbuQ_gn_oa3rQDoCN_q-kJ0jND1eSvY-30PufPZmQ
291
291
  camel/toolkits/pubmed_toolkit.py,sha256=vrd5GIhSYt9Z8EHaWkFb0x9i6_TP7pQZc7jlLHSol04,12180
292
292
  camel/toolkits/reddit_toolkit.py,sha256=cTqEq1CRaLq9XxUHkHCmd09tRzb5Mz_bUs2JV58ewrs,8012
293
293
  camel/toolkits/retrieval_toolkit.py,sha256=y_mQtknrSIDDXSyQb-4FY6ahV_mOxkBhDkA2eMIVnz0,3801
294
- camel/toolkits/search_toolkit.py,sha256=U0BD80LZCHXgz-Q92FJa73EslbW6asCulUEI6U0jVfo,34631
295
- camel/toolkits/semantic_scholar_toolkit.py,sha256=Kp-5rz99rkeUsUmk5ShQdNKJRGVs78hQvCNg-NQMFDk,11547
294
+ camel/toolkits/search_toolkit.py,sha256=QIV9scEZbGx2PaAFkM4EDxnAr6gg8fZeKj8TrGlLC-I,38916
295
+ camel/toolkits/semantic_scholar_toolkit.py,sha256=DlkmHOVZ3KBSlxwxxZxJlA8RprZYpLpIAdZOrPAvAbM,11587
296
296
  camel/toolkits/slack_toolkit.py,sha256=n8cn3kZIc27B-2KMTRK6Nsdan37SwMqBiBi1PMtuUvQ,10744
297
- camel/toolkits/stripe_toolkit.py,sha256=1sCywkpo8mh4E_KwxFKLhAb-G5uZ47NXXQvcddThjqg,9781
298
- camel/toolkits/sympy_toolkit.py,sha256=TZzvBAr1tlk9p8jMnhAapg02ep9k9eIxSdybXEZDqeU,32760
297
+ camel/toolkits/stripe_toolkit.py,sha256=taOMTa2P0GVkG5QZdBFL3cAHsSGrLDRrdXlVZ065hio,10078
298
+ camel/toolkits/sympy_toolkit.py,sha256=XtfZ3RGG-Oma7yS1pKyq3jTrXqq7uLxWE7vD3e-jo4I,33711
299
299
  camel/toolkits/terminal_toolkit.py,sha256=y-6Spdn_58Yrj3Rc5rhCX4vVgZsfm80lnI3fv9kPVUA,15181
300
300
  camel/toolkits/twitter_toolkit.py,sha256=a2OLSJSW2wY7pOwOApb1qchZPXzH22Rbgm9Yd7-7vrA,15826
301
301
  camel/toolkits/video_analysis_toolkit.py,sha256=lDAY6YP1zXykSxt8Qanf0WZR3l1p8c4akKPkaF5R3wU,15064
@@ -329,7 +329,7 @@ camel/toolkits/open_api_specs/web_scraper/openapi.yaml,sha256=u_WalQ01e8W1D27VnZ
329
329
  camel/toolkits/open_api_specs/web_scraper/paths/__init__.py,sha256=OKCZrQCDwaWtXIN_2rA9FSqEvgpQRieRoHh7Ek6N16A,702
330
330
  camel/toolkits/open_api_specs/web_scraper/paths/scraper.py,sha256=aWy1_ppV4NVVEZfnbN3tu9XA9yAPAC9bRStJ5JuXMRU,1117
331
331
  camel/types/__init__.py,sha256=VLWhAt857IFct3XepY5BNOIhyhDhfmODTezr9jhO_TI,2251
332
- camel/types/enums.py,sha256=b3KZqTbenkWSxC7QrgR_rYO1bV8tpcmTczwofOiByJA,34343
332
+ camel/types/enums.py,sha256=zIgu5av92E1PPoDbU0ezvCNmp-aOuOBn4IFWhrG_Ymg,34448
333
333
  camel/types/openai_types.py,sha256=8ZFzLe-zGmKNPfuVZFzxlxAX98lGf18gtrPhOgMmzus,2104
334
334
  camel/types/unified_model_type.py,sha256=GP5GYtA3RfvLsqnk1c4UcOaRKMFhjDgZrLr0ln6JFw8,4253
335
335
  camel/types/agents/__init__.py,sha256=cbvVkogPoZgcwZrgxLH6EtpGXk0kavF79nOic0Dc1vg,786
@@ -345,7 +345,7 @@ camel/verifiers/__init__.py,sha256=p6UEyvaOlwUQaFACGB4C07fL1xSnpTouElt19YRuneQ,9
345
345
  camel/verifiers/base.py,sha256=efWZV9g58IHzJ24U4zr109y34CaAi8tV9WZPMCzP3YI,12017
346
346
  camel/verifiers/models.py,sha256=hC6m_YxEX-mqi_tkCNZHZWLBWf04ZTyv5vfKR-BEyU4,2818
347
347
  camel/verifiers/python_verifier.py,sha256=bj-UGxeJTZzxVVa3a8IEQ1lNOpSaaW3JdGnUEoPeQD0,7519
348
- camel_ai-0.2.30.dist-info/METADATA,sha256=j42j5MKgNDUVJxG8ajZ5dZcMe2IufGqWsn6mNTF1ZzM,38046
349
- camel_ai-0.2.30.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
350
- camel_ai-0.2.30.dist-info/licenses/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
351
- camel_ai-0.2.30.dist-info/RECORD,,
348
+ camel_ai-0.2.32.dist-info/METADATA,sha256=Lv8h4Xh2R_k0yH-vfPzn-mdblmH1Uo8_shllxWvjx-A,38046
349
+ camel_ai-0.2.32.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
350
+ camel_ai-0.2.32.dist-info/licenses/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
351
+ camel_ai-0.2.32.dist-info/RECORD,,