llm-dialog-manager 0.4.2__py3-none-any.whl → 0.4.4__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,4 @@
1
1
  from .chat_history import ChatHistory
2
2
  from .agent import Agent
3
3
 
4
- __version__ = "0.4.2"
4
+ __version__ = "0.4.4"
@@ -38,6 +38,10 @@ def load_env_vars():
38
38
 
39
39
  load_env_vars()
40
40
 
41
+ def encode_image(image_path):
42
+ with open(image_path, "rb") as image_file:
43
+ return base64.b64encode(image_file.read()).decode("utf-8")
44
+
41
45
  def format_messages_for_gemini(messages):
42
46
  """
43
47
  将标准化的消息格式转化为 Gemini 格式。
@@ -389,26 +393,46 @@ class Agent:
389
393
  if image_path:
390
394
  if not os.path.exists(image_path):
391
395
  raise FileNotFoundError(f"Image file {image_path} does not exist.")
392
- if "gemini" in self.model_name:
396
+ if "gemini" in self.model_name and "openai" not in self.model_name:
393
397
  # For Gemini, load as PIL.Image
394
398
  image_pil = Image.open(image_path)
395
399
  image_block = image_pil
396
- else:
400
+ elif "claude" in self.model_name and "openai" not in self.model_name:
397
401
  # For Claude and others, use base64 encoding
398
402
  with open(image_path, "rb") as img_file:
399
403
  image_data = base64.standard_b64encode(img_file.read()).decode("utf-8")
400
404
  image_block = {
401
- "type": "image_base64",
402
- "image_base64": {
405
+ "type": "image",
406
+ "source": {
407
+ "type": "base64",
403
408
  "media_type": media_type,
404
- "data": image_data
405
- }
409
+ "data": image_data,
410
+ },
411
+ }
412
+ else:
413
+ # openai format
414
+ base64_image = encode_image(image_path)
415
+ image_block = {
416
+ "type": "image_url",
417
+ "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"},
406
418
  }
407
419
  else:
408
420
  # If image_url is provided
409
- if "gemini" in self.model_name:
421
+ if "gemini" in self.model_name and "openai" not in self.model_name:
410
422
  # For Gemini, you can pass image URLs directly
411
423
  image_block = {"type": "image_url", "image_url": {"url": image_url}}
424
+ elif "claude" in self.model_name and "openai" not in self.model_name:
425
+ import httpx
426
+ media_type = "image/jpeg"
427
+ image_data = base64.standard_b64encode(httpx.get(image_url).content).decode("utf-8")
428
+ image_block = {
429
+ "type": "image",
430
+ "source": {
431
+ "type": "base64",
432
+ "media_type": media_type,
433
+ "data": image_data,
434
+ },
435
+ }
412
436
  else:
413
437
  # For Claude and others, use image URLs
414
438
  image_block = {
@@ -525,7 +549,7 @@ if __name__ == "__main__":
525
549
  agent = Agent("gemini-1.5-flash", "you are Jack101", memory_enabled=True)
526
550
 
527
551
  # Add an image
528
- agent.add_image(image_path="/Users/junfan/Projects/Personal/oneapi/dialog_manager/example.png")
552
+ agent.add_image(image_path="example.png")
529
553
 
530
554
  # Add a user message
531
555
  agent.add_message("user", "Who are you? What's in this image?")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: llm_dialog_manager
3
- Version: 0.4.2
3
+ Version: 0.4.4
4
4
  Summary: A Python package for managing LLM chat conversation history
5
5
  Author-email: xihajun <work@2333.fun>
6
6
  License: MIT
@@ -0,0 +1,9 @@
1
+ llm_dialog_manager/__init__.py,sha256=J7qsuEH4NWFkTQVvCqHgxX1jOYnY79s9BMi02KTo3-A,86
2
+ llm_dialog_manager/agent.py,sha256=ou9D8NtRt6fDXgrneXP5jZRil7XyKpCTUHCADPJmeeA,25332
3
+ llm_dialog_manager/chat_history.py,sha256=DKKRnj_M6h-4JncnH6KekMTghX7vMgdN3J9uOwXKzMU,10347
4
+ llm_dialog_manager/key_manager.py,sha256=shvxmn4zUtQx_p-x1EFyOmnk-WlhigbpKtxTKve-zXk,4421
5
+ llm_dialog_manager-0.4.4.dist-info/LICENSE,sha256=vWGbYgGuWpWrXL8-xi6pNcX5UzD6pWoIAZmcetyfbus,1064
6
+ llm_dialog_manager-0.4.4.dist-info/METADATA,sha256=Rjjs7I8JwbQ21QyMxTDrDrwzmAqMcdY30srUOJxYzWs,4194
7
+ llm_dialog_manager-0.4.4.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
8
+ llm_dialog_manager-0.4.4.dist-info/top_level.txt,sha256=u2EQEXW0NGAt0AAHT7jx1odXZ4rZfjcgbmJhvKFuMkI,19
9
+ llm_dialog_manager-0.4.4.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- llm_dialog_manager/__init__.py,sha256=JfEU5PUkn2YXXKa6yCMjGd6usEpf6Yp9r7FPwhaZzAs,86
2
- llm_dialog_manager/agent.py,sha256=sV3RhZFlNCdTuOyCxJ3pRdUv5mwk4xFEfKs68LXAalg,24261
3
- llm_dialog_manager/chat_history.py,sha256=DKKRnj_M6h-4JncnH6KekMTghX7vMgdN3J9uOwXKzMU,10347
4
- llm_dialog_manager/key_manager.py,sha256=shvxmn4zUtQx_p-x1EFyOmnk-WlhigbpKtxTKve-zXk,4421
5
- llm_dialog_manager-0.4.2.dist-info/LICENSE,sha256=vWGbYgGuWpWrXL8-xi6pNcX5UzD6pWoIAZmcetyfbus,1064
6
- llm_dialog_manager-0.4.2.dist-info/METADATA,sha256=p40WrWZheemV-4rWErChIXZGFAcdx1bZHcw1DD3lF7o,4194
7
- llm_dialog_manager-0.4.2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
8
- llm_dialog_manager-0.4.2.dist-info/top_level.txt,sha256=u2EQEXW0NGAt0AAHT7jx1odXZ4rZfjcgbmJhvKFuMkI,19
9
- llm_dialog_manager-0.4.2.dist-info/RECORD,,