langroid 0.33.11__py3-none-any.whl → 0.33.12__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.
@@ -20,6 +20,7 @@ from chainlit.logger import logger
20
20
 
21
21
  import langroid as lr
22
22
  import langroid.language_models as lm
23
+ from langroid.language_models import StreamEventType
23
24
  from langroid.utils.configuration import settings
24
25
  from langroid.utils.constants import NO_ANSWER
25
26
 
@@ -276,7 +277,7 @@ class ChainlitAgentCallbacks:
276
277
  def get_last_step(self) -> Optional[cl.Step]:
277
278
  return self.last_step
278
279
 
279
- def start_llm_stream(self) -> Callable[[str], None]:
280
+ def start_llm_stream(self) -> Callable[[str, StreamEventType], None]:
280
281
  """Returns a streaming fn that can be passed to the LLM class"""
281
282
  self.stream = cl.Message(
282
283
  content="",
@@ -295,14 +296,14 @@ class ChainlitAgentCallbacks:
295
296
  """
296
297
  )
297
298
 
298
- def stream_token(t: str) -> None:
299
+ def stream_token(t: str, e: StreamEventType) -> None:
299
300
  if self.stream is None:
300
301
  raise ValueError("Stream not initialized")
301
302
  run_sync(self.stream.stream_token(t))
302
303
 
303
304
  return stream_token
304
305
 
305
- async def start_llm_stream_async(self) -> Callable[[str], None]:
306
+ async def start_llm_stream_async(self) -> Callable[[str, StreamEventType], None]:
306
307
  """Returns a streaming fn that can be passed to the LLM class"""
307
308
  self.stream = cl.Message(
308
309
  content="",
@@ -321,7 +322,7 @@ class ChainlitAgentCallbacks:
321
322
  """
322
323
  )
323
324
 
324
- async def stream_token(t: str) -> None:
325
+ async def stream_token(t: str, e: StreamEventType) -> None:
325
326
  if self.stream is None:
326
327
  raise ValueError("Stream not initialized")
327
328
  await self.stream.stream_token(t)
@@ -6,6 +6,7 @@ from . import azure_openai
6
6
  from . import prompt_formatter
7
7
 
8
8
  from .base import (
9
+ StreamEventType,
9
10
  LLMConfig,
10
11
  LLMMessage,
11
12
  LLMFunctionCall,
@@ -33,6 +34,7 @@ __all__ = [
33
34
  "openai_gpt",
34
35
  "azure_openai",
35
36
  "prompt_formatter",
37
+ "StreamEventType",
36
38
  "LLMConfig",
37
39
  "LLMMessage",
38
40
  "LLMFunctionCall",
@@ -42,6 +42,14 @@ ToolChoiceTypes = Literal["none", "auto", "required"]
42
42
  ToolTypes = Literal["function"]
43
43
 
44
44
 
45
+ class StreamEventType(Enum):
46
+ TEXT = 1
47
+ FUNC_NAME = 2
48
+ FUNC_ARGS = 3
49
+ TOOL_NAME = 4
50
+ TOOL_ARGS = 5
51
+
52
+
45
53
  class LLMConfig(BaseSettings):
46
54
  """
47
55
  Common configuration for all language models.
@@ -43,6 +43,7 @@ from langroid.language_models.base import (
43
43
  OpenAIToolCall,
44
44
  OpenAIToolSpec,
45
45
  Role,
46
+ StreamEventType,
46
47
  ToolChoiceTypes,
47
48
  )
48
49
  from langroid.language_models.config import HFPromptFormatterConfig
@@ -875,19 +876,19 @@ class OpenAIGPT(LanguageModel):
875
876
  completion += event_text
876
877
  sys.stdout.write(Colors().GREEN + event_text)
877
878
  sys.stdout.flush()
878
- self.config.streamer(event_text)
879
+ self.config.streamer(event_text, StreamEventType.TEXT)
879
880
  if event_fn_name:
880
881
  function_name = event_fn_name
881
882
  has_function = True
882
883
  sys.stdout.write(Colors().GREEN + "FUNC: " + event_fn_name + ": ")
883
884
  sys.stdout.flush()
884
- self.config.streamer(event_fn_name)
885
+ self.config.streamer(event_fn_name, StreamEventType.FUNC_NAME)
885
886
 
886
887
  if event_args:
887
888
  function_args += event_args
888
889
  sys.stdout.write(Colors().GREEN + event_args)
889
890
  sys.stdout.flush()
890
- self.config.streamer(event_args)
891
+ self.config.streamer(event_args, StreamEventType.FUNC_ARGS)
891
892
 
892
893
  if event_tool_deltas is not None:
893
894
  # print out streaming tool calls, if not async
@@ -898,12 +899,12 @@ class OpenAIGPT(LanguageModel):
898
899
  Colors().GREEN + "OAI-TOOL: " + tool_fn_name + ": "
899
900
  )
900
901
  sys.stdout.flush()
901
- self.config.streamer(tool_fn_name)
902
+ self.config.streamer(tool_fn_name, StreamEventType.TOOL_NAME)
902
903
  if td["function"]["arguments"] != "":
903
904
  tool_fn_args = td["function"]["arguments"]
904
905
  sys.stdout.write(Colors().GREEN + tool_fn_args)
905
906
  sys.stdout.flush()
906
- self.config.streamer(tool_fn_args)
907
+ self.config.streamer(tool_fn_args, StreamEventType.TOOL_ARGS)
907
908
 
908
909
  # show this delta in the stream
909
910
  if finish_reason in [
@@ -968,21 +969,23 @@ class OpenAIGPT(LanguageModel):
968
969
  if not silent:
969
970
  sys.stdout.write(Colors().GREEN + event_text)
970
971
  sys.stdout.flush()
971
- await self.config.streamer_async(event_text)
972
+ await self.config.streamer_async(event_text, StreamEventType.TEXT)
972
973
  if event_fn_name:
973
974
  function_name = event_fn_name
974
975
  has_function = True
975
976
  if not silent:
976
977
  sys.stdout.write(Colors().GREEN + "FUNC: " + event_fn_name + ": ")
977
978
  sys.stdout.flush()
978
- await self.config.streamer_async(event_fn_name)
979
+ await self.config.streamer_async(
980
+ event_fn_name, StreamEventType.FUNC_NAME
981
+ )
979
982
 
980
983
  if event_args:
981
984
  function_args += event_args
982
985
  if not silent:
983
986
  sys.stdout.write(Colors().GREEN + event_args)
984
987
  sys.stdout.flush()
985
- await self.config.streamer_async(event_args)
988
+ await self.config.streamer_async(event_args, StreamEventType.FUNC_ARGS)
986
989
 
987
990
  if event_tool_deltas is not None and not silent:
988
991
  # print out streaming tool calls, if not async
@@ -993,12 +996,16 @@ class OpenAIGPT(LanguageModel):
993
996
  Colors().GREEN + "OAI-TOOL: " + tool_fn_name + ": "
994
997
  )
995
998
  sys.stdout.flush()
996
- await self.config.streamer_async(tool_fn_name)
999
+ await self.config.streamer_async(
1000
+ tool_fn_name, StreamEventType.TOOL_NAME
1001
+ )
997
1002
  if td["function"]["arguments"] != "":
998
1003
  tool_fn_args = td["function"]["arguments"]
999
1004
  sys.stdout.write(Colors().GREEN + tool_fn_args)
1000
1005
  sys.stdout.flush()
1001
- await self.config.streamer_async(tool_fn_args)
1006
+ await self.config.streamer_async(
1007
+ tool_fn_args, StreamEventType.TOOL_ARGS
1008
+ )
1002
1009
 
1003
1010
  # show this delta in the stream
1004
1011
  if choices[0].get("finish_reason", "") in [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langroid
3
- Version: 0.33.11
3
+ Version: 0.33.12
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  Author-email: Prasad Chalasani <pchalasani@gmail.com>
6
6
  License: MIT
@@ -12,7 +12,7 @@ langroid/agent/task.py,sha256=XrXUbSoiFasvpIsZPn_cBpdWaTCKljJPRimtLMrSZrs,90347
12
12
  langroid/agent/tool_message.py,sha256=BhjP-_TfQ2tgxuY4Yo_JHLOwwt0mJ4BwjPnREvEY4vk,14744
13
13
  langroid/agent/xml_tool_message.py,sha256=6SshYZJKIfi4mkE-gIoSwjkEYekQ8GwcSiCv7a5uO9E,15054
14
14
  langroid/agent/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- langroid/agent/callbacks/chainlit.py,sha256=C6zzzYC30qC4eMA7al7eFpRoTgoe3475kaMKyXgQM0Q,20695
15
+ langroid/agent/callbacks/chainlit.py,sha256=RH8qUXaZE5o2WQz3WJQ1SdFtASGlxWCA6_HYz_3meDQ,20822
16
16
  langroid/agent/special/__init__.py,sha256=gik_Xtm_zV7U9s30Mn8UX3Gyuy4jTjQe9zjiE3HWmEo,1273
17
17
  langroid/agent/special/doc_chat_agent.py,sha256=zw2MvdCWRPH93d73PKh27KFiQ8sUCFPxAfLDdkxvdZQ,59301
18
18
  langroid/agent/special/lance_doc_chat_agent.py,sha256=s8xoRs0gGaFtDYFUSIRchsgDVbS5Q3C2b2mr3V1Fd-Q,10419
@@ -64,12 +64,12 @@ langroid/embedding_models/protoc/embeddings.proto,sha256=_O-SgFpTaylQeOTgSpxhEJ7
64
64
  langroid/embedding_models/protoc/embeddings_pb2.py,sha256=4Q57PhOunv-uZNJrxYrWBXAI0ZtfnVZXFRhRj5JuRSg,1662
65
65
  langroid/embedding_models/protoc/embeddings_pb2.pyi,sha256=UkNy7BrNsmQm0vLb3NtGXy8jVtz-kPWwwFsX-QbQBhQ,1475
66
66
  langroid/embedding_models/protoc/embeddings_pb2_grpc.py,sha256=9dYQqkW3JPyBpSEjeGXTNpSqAkC-6FPtBHyteVob2Y8,2452
67
- langroid/language_models/__init__.py,sha256=8o8D8Lxaq961_oxVpB_bC2iEJ1GXJqYXMlwUcn6OJb8,976
67
+ langroid/language_models/__init__.py,sha256=ps8nhRavCu2-Bv7IQ5hrzody6lzKjHkivJsblDZZIQ8,1020
68
68
  langroid/language_models/azure_openai.py,sha256=zNQzzsERxNestq-hFfQZbvTzK43G2vjRWnTV3ktm1DQ,5845
69
- langroid/language_models/base.py,sha256=6hXR-bclyPif-BvFbyXevP-gEwiawQAJHX3N1AKNei0,23786
69
+ langroid/language_models/base.py,sha256=MbxfR-10KbhoN0BBkPKqQdEcE7iiPhcFI1zuWvAkvG0,23902
70
70
  langroid/language_models/config.py,sha256=9Q8wk5a7RQr8LGMT_0WkpjY8S4ywK06SalVRjXlfCiI,378
71
71
  langroid/language_models/mock_lm.py,sha256=5BgHKDVRWFbUwDT_PFgTZXz9-k8wJSA2e3PZmyDgQ1k,4022
72
- langroid/language_models/openai_gpt.py,sha256=I-GAksKeth960YPq9E7V5cU97SflWZVTrjQsZZ9CADo,76941
72
+ langroid/language_models/openai_gpt.py,sha256=FhpoE75LqWX4BvOo3fgJUPt-QFQDu6eJAuEAv_mTgnc,77352
73
73
  langroid/language_models/utils.py,sha256=L4_CbihDMTGcsg0TOG1Yd5JFEto46--h7CX_14m89sQ,5016
74
74
  langroid/language_models/prompt_formatter/__init__.py,sha256=2-5cdE24XoFDhifOLl8yiscohil1ogbP1ECkYdBlBsk,372
75
75
  langroid/language_models/prompt_formatter/base.py,sha256=eDS1sgRNZVnoajwV_ZIha6cba5Dt8xjgzdRbPITwx3Q,1221
@@ -121,7 +121,7 @@ langroid/vector_store/lancedb.py,sha256=b3_vWkTjG8mweZ7ZNlUD-NjmQP_rLBZfyKWcxt2v
121
121
  langroid/vector_store/meilisearch.py,sha256=6frB7GFWeWmeKzRfLZIvzRjllniZ1cYj3HmhHQICXLs,11663
122
122
  langroid/vector_store/momento.py,sha256=UNHGT6jXuQtqY9f6MdqGU14bVnS0zHgIJUa30ULpUJo,10474
123
123
  langroid/vector_store/qdrantdb.py,sha256=HRLCt-FG8y4718omwpFaQZnWeYxPj0XCwS4tjokI1sU,18116
124
- langroid-0.33.11.dist-info/METADATA,sha256=A-tOfJCvDuYvM96q3zqx6NnATzEflj7mdfoEX64XV4A,59016
125
- langroid-0.33.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
126
- langroid-0.33.11.dist-info/licenses/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
127
- langroid-0.33.11.dist-info/RECORD,,
124
+ langroid-0.33.12.dist-info/METADATA,sha256=tUh6elP7kcHfPS2dUXBE-gZ6vLoBfFzYsmg7nr2oCrg,59016
125
+ langroid-0.33.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
126
+ langroid-0.33.12.dist-info/licenses/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
127
+ langroid-0.33.12.dist-info/RECORD,,