langroid 0.15.2__py3-none-any.whl → 0.16.1__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/language_models/openai_gpt.py +58 -1
- {langroid-0.15.2.dist-info → langroid-0.16.1.dist-info}/METADATA +7 -2
- {langroid-0.15.2.dist-info → langroid-0.16.1.dist-info}/RECORD +6 -6
- pyproject.toml +2 -2
- {langroid-0.15.2.dist-info → langroid-0.16.1.dist-info}/LICENSE +0 -0
- {langroid-0.15.2.dist-info → langroid-0.16.1.dist-info}/WHEEL +0 -0
@@ -88,6 +88,8 @@ class OpenAIChatModel(str, Enum):
|
|
88
88
|
GPT4_TURBO = "gpt-4-turbo"
|
89
89
|
GPT4o = "gpt-4o-2024-08-06"
|
90
90
|
GPT4o_MINI = "gpt-4o-mini"
|
91
|
+
O1_PREVIEW = "o1-preview"
|
92
|
+
O1_MINI = "o1-mini"
|
91
93
|
|
92
94
|
|
93
95
|
class OpenAICompletionModel(str, Enum):
|
@@ -105,6 +107,8 @@ _context_length: Dict[str, int] = {
|
|
105
107
|
OpenAIChatModel.GPT4_TURBO: 128_000,
|
106
108
|
OpenAIChatModel.GPT4o: 128_000,
|
107
109
|
OpenAIChatModel.GPT4o_MINI: 128_000,
|
110
|
+
OpenAIChatModel.O1_PREVIEW: 128_000,
|
111
|
+
OpenAIChatModel.O1_MINI: 128_000,
|
108
112
|
OpenAICompletionModel.TEXT_DA_VINCI_003: 4096,
|
109
113
|
AnthropicModel.CLAUDE_3_5_SONNET: 200_000,
|
110
114
|
AnthropicModel.CLAUDE_3_OPUS: 200_000,
|
@@ -120,6 +124,8 @@ _cost_per_1k_tokens: Dict[str, Tuple[float, float]] = {
|
|
120
124
|
OpenAIChatModel.GPT4_TURBO: (0.01, 0.03), # 128K context
|
121
125
|
OpenAIChatModel.GPT4o: (0.0025, 0.010), # 128K context
|
122
126
|
OpenAIChatModel.GPT4o_MINI: (0.00015, 0.0006), # 128K context
|
127
|
+
OpenAIChatModel.O1_PREVIEW: (0.015, 0.060), # 128K context
|
128
|
+
OpenAIChatModel.O1_MINI: (0.003, 0.012), # 128K context
|
123
129
|
AnthropicModel.CLAUDE_3_5_SONNET: (0.003, 0.015),
|
124
130
|
AnthropicModel.CLAUDE_3_OPUS: (0.015, 0.075),
|
125
131
|
AnthropicModel.CLAUDE_3_SONNET: (0.003, 0.015),
|
@@ -132,6 +138,8 @@ openAIChatModelPreferenceList = [
|
|
132
138
|
OpenAIChatModel.GPT4_TURBO,
|
133
139
|
OpenAIChatModel.GPT4,
|
134
140
|
OpenAIChatModel.GPT4o_MINI,
|
141
|
+
OpenAIChatModel.O1_MINI,
|
142
|
+
OpenAIChatModel.O1_PREVIEW,
|
135
143
|
OpenAIChatModel.GPT3_5_TURBO,
|
136
144
|
]
|
137
145
|
|
@@ -140,6 +148,15 @@ openAICompletionModelPreferenceList = [
|
|
140
148
|
OpenAICompletionModel.TEXT_DA_VINCI_003,
|
141
149
|
]
|
142
150
|
|
151
|
+
NON_STREAMING_MODELS = [
|
152
|
+
OpenAIChatModel.O1_MINI,
|
153
|
+
OpenAIChatModel.O1_PREVIEW,
|
154
|
+
]
|
155
|
+
|
156
|
+
NON_SYSTEM_MESSAGE_MODELS = [
|
157
|
+
OpenAIChatModel.O1_MINI,
|
158
|
+
OpenAIChatModel.O1_PREVIEW,
|
159
|
+
]
|
143
160
|
|
144
161
|
if "OPENAI_API_KEY" in os.environ:
|
145
162
|
try:
|
@@ -579,6 +596,27 @@ class OpenAIGPT(LanguageModel):
|
|
579
596
|
openai_completion_models = [e.value for e in OpenAICompletionModel]
|
580
597
|
return self.config.completion_model in openai_completion_models
|
581
598
|
|
599
|
+
def unsupported_params(self) -> List[str]:
|
600
|
+
"""
|
601
|
+
List of params that are not supported by the current model
|
602
|
+
"""
|
603
|
+
match self.config.chat_model:
|
604
|
+
case OpenAIChatModel.O1_MINI | OpenAIChatModel.O1_PREVIEW:
|
605
|
+
return ["temperature", "stream"]
|
606
|
+
case _:
|
607
|
+
return []
|
608
|
+
|
609
|
+
def rename_params(self) -> Dict[str, str]:
|
610
|
+
"""
|
611
|
+
Map of param name -> new name for specific models.
|
612
|
+
Currently main troublemaker is o1* series.
|
613
|
+
"""
|
614
|
+
match self.config.chat_model:
|
615
|
+
case OpenAIChatModel.O1_MINI | OpenAIChatModel.O1_PREVIEW:
|
616
|
+
return {"max_tokens": "max_completion_tokens"}
|
617
|
+
case _:
|
618
|
+
return {}
|
619
|
+
|
582
620
|
def chat_context_length(self) -> int:
|
583
621
|
"""
|
584
622
|
Context-length for chat-completion models/endpoints
|
@@ -623,7 +661,11 @@ class OpenAIGPT(LanguageModel):
|
|
623
661
|
|
624
662
|
def get_stream(self) -> bool:
|
625
663
|
"""Get streaming status"""
|
626
|
-
return
|
664
|
+
return (
|
665
|
+
self.config.stream
|
666
|
+
and settings.stream
|
667
|
+
and self.config.chat_model not in NON_STREAMING_MODELS
|
668
|
+
)
|
627
669
|
|
628
670
|
@no_type_check
|
629
671
|
def _process_stream_event(
|
@@ -1421,6 +1463,12 @@ class OpenAIGPT(LanguageModel):
|
|
1421
1463
|
else:
|
1422
1464
|
llm_messages = messages
|
1423
1465
|
|
1466
|
+
# for models that don't support system msg, change SYSTEM role to USER
|
1467
|
+
if self.config.chat_model in NON_SYSTEM_MESSAGE_MODELS:
|
1468
|
+
for i, m in enumerate(llm_messages):
|
1469
|
+
if m.role == Role.SYSTEM:
|
1470
|
+
llm_messages[i].role = Role.USER
|
1471
|
+
|
1424
1472
|
# Azure uses different parameters. It uses ``engine`` instead of ``model``
|
1425
1473
|
# and the value should be the deployment_name not ``self.config.chat_model``
|
1426
1474
|
chat_model = self.config.chat_model
|
@@ -1457,6 +1505,15 @@ class OpenAIGPT(LanguageModel):
|
|
1457
1505
|
tool_choice=tool_choice,
|
1458
1506
|
)
|
1459
1507
|
)
|
1508
|
+
for p in self.unsupported_params():
|
1509
|
+
# some models e.g. o1-mini (as of sep 2024) don't support some params,
|
1510
|
+
# like temperature and stream, so we need to remove them.
|
1511
|
+
args.pop(p, None)
|
1512
|
+
|
1513
|
+
param_rename_map = self.rename_params()
|
1514
|
+
for old_param, new_param in param_rename_map.items():
|
1515
|
+
if old_param in args:
|
1516
|
+
args[new_param] = args.pop(old_param)
|
1460
1517
|
return args
|
1461
1518
|
|
1462
1519
|
def _process_chat_completion_response(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: langroid
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.16.1
|
4
4
|
Summary: Harness LLMs with Multi-Agent Programming
|
5
5
|
License: MIT
|
6
6
|
Author: Prasad Chalasani
|
@@ -66,7 +66,7 @@ Requires-Dist: neo4j (>=5.14.1,<6.0.0) ; extra == "all" or extra == "neo4j"
|
|
66
66
|
Requires-Dist: nest-asyncio (>=1.6.0,<2.0.0)
|
67
67
|
Requires-Dist: nltk (>=3.8.1,<4.0.0)
|
68
68
|
Requires-Dist: onnxruntime (>=1.16.1,<2.0.0)
|
69
|
-
Requires-Dist: openai (>=1.
|
69
|
+
Requires-Dist: openai (>=1.45.0,<2.0.0)
|
70
70
|
Requires-Dist: pandas (>=2.0.3,<3.0.0)
|
71
71
|
Requires-Dist: pdf2image (>=1.17.0,<2.0.0) ; extra == "doc-chat" or extra == "all" or extra == "pdf-parsers"
|
72
72
|
Requires-Dist: pdfplumber (>=0.10.2,<0.11.0) ; extra == "doc-chat" or extra == "all" or extra == "pdf-parsers"
|
@@ -242,6 +242,11 @@ teacher_task.run()
|
|
242
242
|
<details>
|
243
243
|
<summary> <b>Click to expand</b></summary>
|
244
244
|
|
245
|
+
- **Sep 2024:**
|
246
|
+
- **[0.16.0](https://github.com/langroid/langroid/releases/tag/0.16.0)** Support for OpenAI `o1-mini` and `o1-preview` models.
|
247
|
+
- **[0.15.0](https://github.com/langroid/langroid/releases/tag/0.15.0)** Cerebras API support -- run llama-3.1 models hosted on Cerebras Cloud (very fast inference).
|
248
|
+
- **[0.14.0](https://github.com/langroid/langroid/releases/tag/0.14.0)** `DocChatAgent` uses Reciprocal Rank Fusion (RRF) to rank chunks retrieved by different methods.
|
249
|
+
- **[0.12.0](https://github.com/langroid/langroid/releases/tag/0.12.0)** `run_batch_task` new option -- `stop_on_first_result` - allows termination of batch as soon as any task returns a result.
|
245
250
|
- **Aug 2024:**
|
246
251
|
- **[0.11.0](https://github.com/langroid/langroid/releases/tag/0.11.0)** Polymorphic `Task.run(), Task.run_async`.
|
247
252
|
- **[0.10.0](https://github.com/langroid/langroid/releases/tag/0.10.0)** Allow tool handlers to return arbitrary result type, including other tools.
|
@@ -72,7 +72,7 @@ langroid/language_models/azure_openai.py,sha256=G4le3j4YLHV7IwgB2C37hO3MKijZ1Kjy
|
|
72
72
|
langroid/language_models/base.py,sha256=ytJ_0Jw5erbqrqLPp4JMCo_nIkwzUvBqoKUr8Sae9Qg,21792
|
73
73
|
langroid/language_models/config.py,sha256=9Q8wk5a7RQr8LGMT_0WkpjY8S4ywK06SalVRjXlfCiI,378
|
74
74
|
langroid/language_models/mock_lm.py,sha256=HuiAvjHiCfffYF5xjFJUq945HVTW0QPbeUUctOnNCzQ,3868
|
75
|
-
langroid/language_models/openai_gpt.py,sha256=
|
75
|
+
langroid/language_models/openai_gpt.py,sha256=rZJCX1hJHPvlL8mR5ec3TUyG2nwFTZH4UifnE7wrWD4,64111
|
76
76
|
langroid/language_models/prompt_formatter/__init__.py,sha256=2-5cdE24XoFDhifOLl8yiscohil1ogbP1ECkYdBlBsk,372
|
77
77
|
langroid/language_models/prompt_formatter/base.py,sha256=eDS1sgRNZVnoajwV_ZIha6cba5Dt8xjgzdRbPITwx3Q,1221
|
78
78
|
langroid/language_models/prompt_formatter/hf_formatter.py,sha256=PVJppmjRvD-2DF-XNC6mE05vTZ9wbu37SmXwZBQhad0,5055
|
@@ -138,8 +138,8 @@ langroid/vector_store/meilisearch.py,sha256=6frB7GFWeWmeKzRfLZIvzRjllniZ1cYj3Hmh
|
|
138
138
|
langroid/vector_store/momento.py,sha256=qR-zBF1RKVHQZPZQYW_7g-XpTwr46p8HJuYPCkfJbM4,10534
|
139
139
|
langroid/vector_store/qdrant_cloud.py,sha256=3im4Mip0QXLkR6wiqVsjV1QvhSElfxdFSuDKddBDQ-4,188
|
140
140
|
langroid/vector_store/qdrantdb.py,sha256=v88lqFkepADvlN6lByUj9I4NEKa9X9lWH16uTPPbYrE,17457
|
141
|
-
pyproject.toml,sha256=
|
142
|
-
langroid-0.
|
143
|
-
langroid-0.
|
144
|
-
langroid-0.
|
145
|
-
langroid-0.
|
141
|
+
pyproject.toml,sha256=HDI-JAyZ243qlEJ5tk58A02rIuiPzsy_PFdrgYzWPT4,7157
|
142
|
+
langroid-0.16.1.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
|
143
|
+
langroid-0.16.1.dist-info/METADATA,sha256=TC5RuK81GFIJC6X-RW8TBXbyDMU8OBEAgcxqQ8wxhSE,56165
|
144
|
+
langroid-0.16.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
145
|
+
langroid-0.16.1.dist-info/RECORD,,
|
pyproject.toml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "langroid"
|
3
|
-
version = "0.
|
3
|
+
version = "0.16.1"
|
4
4
|
description = "Harness LLMs with Multi-Agent Programming"
|
5
5
|
authors = ["Prasad Chalasani <pchalasani@gmail.com>"]
|
6
6
|
readme = "README.md"
|
@@ -53,7 +53,7 @@ trafilatura = "^1.5.0"
|
|
53
53
|
halo = "^0.0.31"
|
54
54
|
typer = "^0.9.0"
|
55
55
|
colorlog = "^6.7.0"
|
56
|
-
openai = "^1.
|
56
|
+
openai = "^1.45.0"
|
57
57
|
tiktoken = "^0.7.0"
|
58
58
|
pygithub = "^1.58.1"
|
59
59
|
pygments = "^2.15.1"
|
File without changes
|
File without changes
|