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.
- langroid/agent/callbacks/chainlit.py +5 -4
- langroid/language_models/__init__.py +2 -0
- langroid/language_models/base.py +8 -0
- langroid/language_models/openai_gpt.py +17 -10
- {langroid-0.33.11.dist-info → langroid-0.33.12.dist-info}/METADATA +1 -1
- {langroid-0.33.11.dist-info → langroid-0.33.12.dist-info}/RECORD +8 -8
- {langroid-0.33.11.dist-info → langroid-0.33.12.dist-info}/WHEEL +0 -0
- {langroid-0.33.11.dist-info → langroid-0.33.12.dist-info}/licenses/LICENSE +0 -0
@@ -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",
|
langroid/language_models/base.py
CHANGED
@@ -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(
|
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(
|
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(
|
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 [
|
@@ -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=
|
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=
|
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=
|
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=
|
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.
|
125
|
-
langroid-0.33.
|
126
|
-
langroid-0.33.
|
127
|
-
langroid-0.33.
|
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,,
|
File without changes
|
File without changes
|