langroid 0.28.7__py3-none-any.whl → 0.30.0__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.
@@ -432,8 +432,8 @@ class OpenAIGPT(LanguageModel):
432
432
  Class for OpenAI LLMs
433
433
  """
434
434
 
435
- client: OpenAI | Groq | Cerebras
436
- async_client: AsyncOpenAI | AsyncGroq | AsyncCerebras
435
+ client: OpenAI | Groq | Cerebras | None
436
+ async_client: AsyncOpenAI | AsyncGroq | AsyncCerebras | None
437
437
 
438
438
  def __init__(self, config: OpenAIGPTConfig = OpenAIGPTConfig()):
439
439
  """
@@ -1375,12 +1375,15 @@ class OpenAIGPT(LanguageModel):
1375
1375
  else:
1376
1376
  if self.config.litellm:
1377
1377
  from litellm import completion as litellm_completion
1378
- assert isinstance(self.client, OpenAI)
1379
- completion_call = (
1380
- litellm_completion
1381
- if self.config.litellm
1382
- else self.client.completions.create
1383
- )
1378
+
1379
+ completion_call = litellm_completion
1380
+ else:
1381
+ if self.client is None:
1382
+ raise ValueError(
1383
+ "OpenAI/equivalent chat-completion client not set"
1384
+ )
1385
+ assert isinstance(self.client, OpenAI)
1386
+ completion_call = self.client.completions.create
1384
1387
  if self.config.litellm and settings.debug:
1385
1388
  kwargs["logger_fn"] = litellm_logging_fn
1386
1389
  # If it's not in the cache, call the API
@@ -1619,14 +1622,15 @@ class OpenAIGPT(LanguageModel):
1619
1622
  if settings.debug:
1620
1623
  print("[grey37]CACHED[/grey37]")
1621
1624
  else:
1625
+ # If it's not in the cache, call the API
1622
1626
  if self.config.litellm:
1623
1627
  from litellm import completion as litellm_completion
1624
- # If it's not in the cache, call the API
1625
- completion_call = (
1626
- litellm_completion
1627
- if self.config.litellm
1628
- else self.client.chat.completions.create
1629
- )
1628
+
1629
+ completion_call = litellm_completion
1630
+ else:
1631
+ if self.client is None:
1632
+ raise ValueError("OpenAI/equivalent chat-completion client not set")
1633
+ completion_call = self.client.chat.completions.create
1630
1634
  if self.config.litellm and settings.debug:
1631
1635
  kwargs["logger_fn"] = litellm_logging_fn
1632
1636
  result = completion_call(**kwargs)
@@ -1649,11 +1653,14 @@ class OpenAIGPT(LanguageModel):
1649
1653
  else:
1650
1654
  if self.config.litellm:
1651
1655
  from litellm import acompletion as litellm_acompletion
1652
- acompletion_call = (
1653
- litellm_acompletion
1654
- if self.config.litellm
1655
- else self.async_client.chat.completions.create
1656
- )
1656
+
1657
+ acompletion_call = litellm_acompletion
1658
+ else:
1659
+ if self.async_client is None:
1660
+ raise ValueError(
1661
+ "OpenAI/equivalent async chat-completion client not set"
1662
+ )
1663
+ acompletion_call = self.async_client.chat.completions.create
1657
1664
  if self.config.litellm and settings.debug:
1658
1665
  kwargs["logger_fn"] = litellm_logging_fn
1659
1666
  # If it's not in the cache, call the API
@@ -35,6 +35,7 @@ class ChromaDB(VectorStore):
35
35
  self.client = chromadb.Client(
36
36
  chromadb.config.Settings(
37
37
  # chroma_db_impl="duckdb+parquet",
38
+ # is_persistent=bool(config.storage_path),
38
39
  persist_directory=config.storage_path,
39
40
  )
40
41
  )
@@ -124,6 +125,13 @@ class ChromaDB(VectorStore):
124
125
  m["window_ids"] = ",".join(m["window_ids"])
125
126
 
126
127
  ids = [str(d.id()) for d in documents]
128
+
129
+ colls = self.list_collections(empty=True)
130
+ if self.config.collection_name is None:
131
+ raise ValueError("No collection name set, cannot ingest docs")
132
+ if self.config.collection_name not in colls:
133
+ self.create_collection(self.config.collection_name, replace=True)
134
+
127
135
  self.collection.add(
128
136
  # embedding_models=embedding_models,
129
137
  documents=contents,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langroid
3
- Version: 0.28.7
3
+ Version: 0.30.0
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  License: MIT
6
6
  Author: Prasad Chalasani
@@ -1,4 +1,16 @@
1
1
  langroid/__init__.py,sha256=z_fCOLQJPOw3LLRPBlFB5-2HyCjpPgQa4m4iY5Fvb8Y,1800
2
+ langroid/agent/.chainlit/config.toml,sha256=qEuh_rR6s0khb20KUADOv2g5OvDnu52mY3gcFFgEosE,3753
3
+ langroid/agent/.chainlit/translations/bn.json,sha256=m2TAaGMS-18_siW5dw4sbosh0Wn8ENWWzdGYkHaBrXw,22679
4
+ langroid/agent/.chainlit/translations/en-US.json,sha256=QoQAg8P5Q5gbGASc-HAHcfhufk71-Uc1u_ewIBfHuLc,9821
5
+ langroid/agent/.chainlit/translations/gu.json,sha256=9wE-NsHf7j5VUFzfE-cCpESTyHtzVHRcZXAwC3ACMl0,21660
6
+ langroid/agent/.chainlit/translations/he-IL.json,sha256=uVS4q9wlxDWqCNXde_f34p4tXcyA89YBsVNRDiOkhaE,16974
7
+ langroid/agent/.chainlit/translations/hi.json,sha256=3zi4wbpTCv5Q1bOzakeVQqeRpaO5ZkPJJ6oV-dVtNF4,21079
8
+ langroid/agent/.chainlit/translations/kn.json,sha256=GRGmx2hPh8bSfpKJQHwwtV_UF45kaMc8S-rUJeh_ZA4,23514
9
+ langroid/agent/.chainlit/translations/ml.json,sha256=QK1mYIbx_0gmmR4Poy2mm3uttAgW2ZpMfo6jgDec6uc,24857
10
+ langroid/agent/.chainlit/translations/mr.json,sha256=JaU16y5uW-cH0x7w6RDztEmhqEtnerJ61h8azkNLqyg,21321
11
+ langroid/agent/.chainlit/translations/ta.json,sha256=8JPW6BwLN2dl9wuq5wSkMvazcY8lM5v1pqbBxwObGUw,24724
12
+ langroid/agent/.chainlit/translations/te.json,sha256=JzW2YXWg1qqvWgIvEgMelQz5s6EzTb_uD_3TEHAHiQw,23526
13
+ langroid/agent/.chainlit/translations/zh-CN.json,sha256=aLBSSSQ0yojlYGuMMlOYvkD_ruG9-d2AgnjJWhPODVw,11737
2
14
  langroid/agent/__init__.py,sha256=ll0Cubd2DZ-fsCMl7e10hf9ZjFGKzphfBco396IKITY,786
3
15
  langroid/agent/base.py,sha256=ZgWsRBC9rugcWp9aZLAmFFteU47pqKIEoTy_dgkYtBI,77529
4
16
  langroid/agent/batch.py,sha256=qK3ph6VNj_1sOhfXCZY4r6gh035DglDKU751p8BU0tY,14665
@@ -39,7 +51,6 @@ langroid/agent/special/sql/utils/tools.py,sha256=ovCePzq5cmbqw0vsVPBzxdZpUcSUIfT
39
51
  langroid/agent/special/table_chat_agent.py,sha256=d9v2wsblaRx7oMnKhLV7uO_ujvk9gh59pSGvBXyeyNc,9659
40
52
  langroid/agent/structured_message.py,sha256=y7pud1EgRNeTFZlJmBkLmwME3yQJ_IYik-Xds9kdZbY,282
41
53
  langroid/agent/task.py,sha256=_iQTpjPIR1OGF0lq-ZFzQ92f_OmdIFmv7LlhoUA1QB8,89729
42
- langroid/agent/team.py,sha256=y0cpR0KvBQhBKJcEYRAY2n6URa6WMN1tZSih6qnSiHM,1063
43
54
  langroid/agent/tool_message.py,sha256=aaJSypRy2sC8b2qOszc7efgr5TrQva51SUGnxTwKXEg,14406
44
55
  langroid/agent/tools/__init__.py,sha256=IMgCte-_ZIvCkozGQmvMqxIw7_nKLKzD78ccJL1bnQU,804
45
56
  langroid/agent/tools/duckduckgo_search_tool.py,sha256=NhsCaGZkdv28nja7yveAhSK_w6l_Ftym8agbrdzqgfo,1935
@@ -58,10 +69,10 @@ langroid/cachedb/__init__.py,sha256=icAT2s7Vhf-ZGUeqpDQGNU6ob6o0aFEyjwcxxUGRFjg,
58
69
  langroid/cachedb/base.py,sha256=ztVjB1DtN6pLCujCWnR6xruHxwVj3XkYniRTYAKKqk0,1354
59
70
  langroid/cachedb/momento_cachedb.py,sha256=YEOJ62hEcV6iIeMr5aGgRYgWQqFYaej9gEDEcY0sm7M,3172
60
71
  langroid/cachedb/redis_cachedb.py,sha256=7kgnbf4b5CKsCrlL97mHWKvdvlLt8zgn7lc528jEpiE,5141
61
- langroid/embedding_models/__init__.py,sha256=lsu8qxCjfGujXGueJWU-VI3LMZYGjLSYgqUKDd4F3Qo,715
62
- langroid/embedding_models/base.py,sha256=3dK0nW3XNjK3Vyh2kxhIffzDuUYumVVkCIimB3UPHeU,2009
72
+ langroid/embedding_models/__init__.py,sha256=XhVIMQJbQRpImcnhA9sJR7h6r7QgPo1SKDCvwEUD9j4,851
73
+ langroid/embedding_models/base.py,sha256=Ipk6LcBZSmbu8HzfQy6uSp6-xAWCrmzX3MzhOr-jCZI,2208
63
74
  langroid/embedding_models/clustering.py,sha256=tZWElUqXl9Etqla0FAa7og96iDKgjqWjucZR_Egtp-A,6684
64
- langroid/embedding_models/models.py,sha256=NQ1Cfw5MmeR69fzthIWjnkSAQuWcxnUecS5z_U2IPNs,8900
75
+ langroid/embedding_models/models.py,sha256=pDED-Evwz3Y9tCwo2amOJVIIT0P9uskcbhs6gz6wVcU,13358
65
76
  langroid/embedding_models/protoc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
77
  langroid/embedding_models/protoc/embeddings.proto,sha256=_O-SgFpTaylQeOTgSpxhEJ7CUw7PeCQQJLaPqpPYKJg,321
67
78
  langroid/embedding_models/protoc/embeddings_pb2.py,sha256=4Q57PhOunv-uZNJrxYrWBXAI0ZtfnVZXFRhRj5JuRSg,1662
@@ -72,11 +83,11 @@ langroid/exceptions.py,sha256=G60UVDChkUlBDVWHFr_43zUUszZHSejoU00tX_dfD68,2322
72
83
  langroid/language_models/.chainlit/config.toml,sha256=1t5lHORGzc2E6dkaO9P15jYHu2w-4Kl9pYjpDPc84vs,3716
73
84
  langroid/language_models/.chainlit/translations/en-US.json,sha256=DAFz2HjOFFfboCStrUfKFg2BpplJPK_OOtixwF_GivY,9931
74
85
  langroid/language_models/__init__.py,sha256=8o8D8Lxaq961_oxVpB_bC2iEJ1GXJqYXMlwUcn6OJb8,976
75
- langroid/language_models/azure_openai.py,sha256=DdWq_pRFI9PT5LwUy9TXDox90TY-mkP5MKxFwoM42x4,7250
86
+ langroid/language_models/azure_openai.py,sha256=0a86-EtjgRsYw9kuGv0Tu6EOFbTCc-d5kb3GCJaJA54,8757
76
87
  langroid/language_models/base.py,sha256=6hXR-bclyPif-BvFbyXevP-gEwiawQAJHX3N1AKNei0,23786
77
88
  langroid/language_models/config.py,sha256=9Q8wk5a7RQr8LGMT_0WkpjY8S4ywK06SalVRjXlfCiI,378
78
89
  langroid/language_models/mock_lm.py,sha256=5BgHKDVRWFbUwDT_PFgTZXz9-k8wJSA2e3PZmyDgQ1k,4022
79
- langroid/language_models/openai_gpt.py,sha256=IPZ5bOyfQO-pWHharQ5fMsBuW87Cpwfy1Ywce6ARbfQ,75204
90
+ langroid/language_models/openai_gpt.py,sha256=reOLAhGFpqjZCqrwUR1npIJMeG30_C6LSSziiuRoK5U,75617
80
91
  langroid/language_models/prompt_formatter/__init__.py,sha256=2-5cdE24XoFDhifOLl8yiscohil1ogbP1ECkYdBlBsk,372
81
92
  langroid/language_models/prompt_formatter/base.py,sha256=eDS1sgRNZVnoajwV_ZIha6cba5Dt8xjgzdRbPITwx3Q,1221
82
93
  langroid/language_models/prompt_formatter/hf_formatter.py,sha256=PVJppmjRvD-2DF-XNC6mE05vTZ9wbu37SmXwZBQhad0,5055
@@ -137,14 +148,14 @@ langroid/utils/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
137
148
  langroid/utils/web/login.py,sha256=1iz9eUAHa87vpKIkzwkmFa00avwFWivDSAr7QUhK7U0,2528
138
149
  langroid/vector_store/__init__.py,sha256=6xBjb_z4QtUy4vz4RuFbcbSwmHrggHL8-q0DwCf3PMM,972
139
150
  langroid/vector_store/base.py,sha256=WhVtiO_EuIMiwww_3ICQK6I7hwlmEyXEFKfWdbsES2Y,13952
140
- langroid/vector_store/chromadb.py,sha256=KH_4K8ZfSv3ReiUxXGM6ZUy7ZKBp9LF3RGyuCRwwBlk,7870
151
+ langroid/vector_store/chromadb.py,sha256=9WXW9IoSnhOmGEtMruVhEtVWL_VO6NXnPIz-nzh0gIQ,8235
141
152
  langroid/vector_store/lancedb.py,sha256=l7C0UAMSQIntVE8a5Scg4V5f1odW40NJIbkKB_kxA2E,14626
142
153
  langroid/vector_store/meilisearch.py,sha256=6frB7GFWeWmeKzRfLZIvzRjllniZ1cYj3HmhHQICXLs,11663
143
154
  langroid/vector_store/momento.py,sha256=UNHGT6jXuQtqY9f6MdqGU14bVnS0zHgIJUa30ULpUJo,10474
144
155
  langroid/vector_store/qdrant_cloud.py,sha256=3im4Mip0QXLkR6wiqVsjV1QvhSElfxdFSuDKddBDQ-4,188
145
156
  langroid/vector_store/qdrantdb.py,sha256=v7mCsijc2GdRJyil-yFaUVAX4SX5D75mD3vzlpjCMuo,17393
146
- pyproject.toml,sha256=8yHJUY980ArmEfZOP_SS4L2blz9COR6rVGNr2YBw_qg,7533
147
- langroid-0.28.7.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
148
- langroid-0.28.7.dist-info/METADATA,sha256=Sr2BUV_iAsrCbT0zWopduyU484Lmr52eYvupFFUXvMQ,57569
149
- langroid-0.28.7.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
150
- langroid-0.28.7.dist-info/RECORD,,
157
+ pyproject.toml,sha256=yZUBvpitvw9Kh1VYYu7e6kC39iRRtpjTt1QciTehfHg,7533
158
+ langroid-0.30.0.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
159
+ langroid-0.30.0.dist-info/METADATA,sha256=YXV7MFnvWwkiIIRBLaalaMAarJvMlF-QMSFarcDY4t0,57569
160
+ langroid-0.30.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
161
+ langroid-0.30.0.dist-info/RECORD,,
pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langroid"
3
- version = "0.28.7"
3
+ version = "0.30.0"
4
4
  description = "Harness LLMs with Multi-Agent Programming"
5
5
  authors = ["Prasad Chalasani <pchalasani@gmail.com>"]
6
6
  readme = "README.md"
langroid/agent/team.py DELETED
@@ -1,41 +0,0 @@
1
- from abc import ABC, abstractmethod
2
-
3
- class TeamComponent(ABC):
4
- @abstractmethod
5
- def run(self, msg):
6
- pass
7
-
8
- class Team(TeamComponent):
9
- def __init__(self):
10
- self.components = []
11
- self.input_port = []
12
- self.followers = []
13
- self.scheduler = None
14
-
15
- def follow(self, team):
16
- team.followers.append(self)
17
-
18
- def add_component(self, component):
19
- self.components.append(component)
20
-
21
- def notify_followers(self, result):
22
- for follower in self.followers:
23
- follower.input_port.append(result)
24
-
25
- def run(self, msg):
26
- if self.scheduler:
27
- return self.scheduler.run(self.components, msg)
28
- # Default sequential execution
29
- result = ""
30
- for component in self.components:
31
- result += component.run(msg)
32
- self.notify_followers(result)
33
- return result
34
-
35
- class Agent(TeamComponent):
36
- def __init__(self, name):
37
- self.name = name
38
-
39
- def run(self, msg):
40
- result = f"Agent {self.name} processed: {msg}"
41
- return result