Skip to content

Commit c6c008d

Browse files
authored
Merge branch 'main' into feat/kreuzberg-converter
2 parents d11f0d6 + a15b73f commit c6c008d

23 files changed

Lines changed: 223 additions & 19 deletions

File tree

integrations/anthropic/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## [integrations/anthropic-v5.7.0] - 2026-03-13
4+
5+
### 🌀 Miscellaneous
6+
7+
- Feat: List supported models for `AnthropicChatGenerator` (#2958)
8+
39
## [integrations/anthropic-v5.6.1] - 2026-03-12
410

511
### 🧹 Chores

integrations/anthropic/src/haystack_integrations/components/generators/anthropic/chat/chat_generator.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,20 @@ class AnthropicChatGenerator:
110110
"output_config",
111111
]
112112

113+
SUPPORTED_MODELS: ClassVar[list[str]] = [
114+
"claude-opus-4-6",
115+
"claude-sonnet-4-6",
116+
"claude-haiku-4-5-20251001",
117+
"claude-sonnet-4-5-20250929",
118+
"claude-opus-4-5-20251101",
119+
"claude-opus-4-1-20250805",
120+
"claude-sonnet-4-20250514",
121+
"claude-opus-4-20250514",
122+
"claude-3-haiku-20240307",
123+
]
124+
"""A non-exhaustive list of chat models supported by this component. See
125+
https://platform.claude.com/docs/en/about-claude/models/overview for the full list."""
126+
113127
def __init__(
114128
self,
115129
api_key: Secret = Secret.from_env_var("ANTHROPIC_API_KEY"), # noqa: B008

integrations/anthropic/tests/test_chat_generator.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,13 @@ def mock_anthropic_completion():
9090

9191

9292
class TestAnthropicChatGenerator:
93+
def test_supported_models(self) -> None:
94+
"""SUPPORTED_MODELS is a non-empty list of strings."""
95+
models = AnthropicChatGenerator.SUPPORTED_MODELS
96+
assert isinstance(models, list)
97+
assert len(models) > 0
98+
assert all(isinstance(m, str) for m in models)
99+
93100
def test_init_default(self, monkeypatch):
94101
"""
95102
Test the default initialization of the AnthropicChatGenerator component.

integrations/astra/tests/test_document_store.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,8 @@ def run_before_tests(self, document_store: AstraDocumentStore):
157157
document_store.delete_all_documents()
158158
assert document_store.count_documents() == 0
159159

160-
def assert_documents_are_equal(self, received: list[Document], expected: list[Document]):
160+
@staticmethod
161+
def assert_documents_are_equal(received: list[Document], expected: list[Document]):
161162
"""
162163
Assert that two lists of Documents are equal.
163164
This is used in every test, if a Document Store implementation has a different behaviour
@@ -174,7 +175,7 @@ def test_comparison_equal_with_none(self, document_store, filterable_docs):
174175
document_store.write_documents(filterable_docs)
175176
result = document_store.filter_documents(filters={"field": "meta.number", "operator": "==", "value": None})
176177
# Astra does not support filtering on None, it returns empty list
177-
self.assert_documents_are_equal(result, [])
178+
TestDocumentStore.assert_documents_are_equal(result, [])
178179

179180
def test_write_documents(self, document_store: AstraDocumentStore):
180181
"""
@@ -185,9 +186,9 @@ def test_write_documents(self, document_store: AstraDocumentStore):
185186
doc2 = Document(id="1", content="test doc 2")
186187

187188
assert document_store.write_documents([doc2], policy=DuplicatePolicy.OVERWRITE) == 1
188-
self.assert_documents_are_equal(document_store.filter_documents(), [doc2])
189+
TestDocumentStore.assert_documents_are_equal(document_store.filter_documents(), [doc2])
189190
assert document_store.write_documents(documents=[doc1], policy=DuplicatePolicy.OVERWRITE) == 1
190-
self.assert_documents_are_equal(document_store.filter_documents(), [doc1])
191+
TestDocumentStore.assert_documents_are_equal(document_store.filter_documents(), [doc1])
191192

192193
def test_write_documents_skip_duplicates(self, document_store: AstraDocumentStore):
193194
docs = [
@@ -264,7 +265,7 @@ def test_filter_documents_nested_filters(self, document_store, filterable_docs):
264265
document_store.write_documents(filterable_docs)
265266
result = document_store.filter_documents(filters=filter_criteria)
266267

267-
self.assert_documents_are_equal(
268+
TestDocumentStore.assert_documents_are_equal(
268269
result,
269270
[
270271
d
@@ -278,7 +279,7 @@ def test_filter_documents_by_id(self, document_store):
278279
docs = [Document(id="1", content="test doc 1"), Document(id="2", content="test doc 2")]
279280
document_store.write_documents(docs)
280281
result = document_store.filter_documents(filters={"field": "id", "operator": "==", "value": "1"})
281-
self.assert_documents_are_equal(result, [docs[0]])
282+
TestDocumentStore.assert_documents_are_equal(result, [docs[0]])
282283

283284
def test_filter_documents_by_in_operator(self, document_store):
284285
docs = [Document(id="3", content="test doc 3"), Document(id="4", content="test doc 4")]
@@ -288,8 +289,8 @@ def test_filter_documents_by_in_operator(self, document_store):
288289
# Sort the result in place by the id field
289290
result.sort(key=lambda x: x.id)
290291

291-
self.assert_documents_are_equal([result[0]], [docs[0]])
292-
self.assert_documents_are_equal([result[1]], [docs[1]])
292+
TestDocumentStore.assert_documents_are_equal([result[0]], [docs[0]])
293+
TestDocumentStore.assert_documents_are_equal([result[1]], [docs[1]])
293294

294295
def test_count_documents_by_filter(self, document_store: AstraDocumentStore):
295296
docs = [

integrations/meta_llama/CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,22 @@
11
# Changelog
22

3+
## [integrations/meta_llama-v2.2.0] - 2026-03-13
4+
5+
### 🚀 Features
6+
7+
- Add list of supported models for MetaLlamaChatGenerator (#2959)
8+
9+
## [integrations/meta_llama-v2.1.0] - 2026-02-26
10+
11+
### 🚀 Features
12+
13+
- *(meta-llama)* Add timeout and max_retries to chat generator (#2872)
14+
15+
### 📚 Documentation
16+
17+
- Simplify pydoc configs (#2855)
18+
19+
320
## [integrations/meta_llama-v2.0.0] - 2026-01-12
421

522
### ⚙️ CI

integrations/meta_llama/src/haystack_integrations/components/generators/meta_llama/chat/chat_generator.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44
# SPDX-License-Identifier: Apache-2.0
55

6-
from typing import Any
6+
from typing import Any, ClassVar
77

88
from haystack import component, default_to_dict, logging
99
from haystack.components.generators.chat import OpenAIChatGenerator
@@ -54,6 +54,15 @@ class MetaLlamaChatGenerator(OpenAIChatGenerator):
5454
```
5555
"""
5656

57+
SUPPORTED_MODELS: ClassVar[list[str]] = [
58+
"Llama-4-Maverick-17B-128E-Instruct-FP8",
59+
"Llama-4-Scout-17B-16E-Instruct-FP8",
60+
"Llama-3.3-70B-Instruct",
61+
"Llama-3.3-8B-Instruct",
62+
]
63+
"""A non-exhaustive list of chat models supported by this component.
64+
See https://llama.developer.meta.com/docs/models for the full list."""
65+
5766
def __init__(
5867
self,
5968
*,

integrations/meta_llama/tests/test_llama_chat_generator.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,13 @@ def mock_chat_completion():
103103

104104

105105
class TestLlamaChatGenerator:
106+
def test_supported_models(self) -> None:
107+
"""SUPPORTED_MODELS is a non-empty list of strings."""
108+
models = MetaLlamaChatGenerator.SUPPORTED_MODELS
109+
assert isinstance(models, list)
110+
assert len(models) > 0
111+
assert all(isinstance(m, str) for m in models)
112+
106113
def test_init_default(self, monkeypatch):
107114
monkeypatch.setenv("LLAMA_API_KEY", "test-api-key")
108115
component = MetaLlamaChatGenerator()

integrations/mistral/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
## [integrations/mistral-v1.2.0] - 2026-03-13
4+
5+
### 🧹 Chores
6+
7+
- Update mistral integration to work with mistralai>=2.0.0 (#2957)
8+
9+
310
## [integrations/mistral-v1.1.0] - 2026-03-12
411

512
### 🚀 Features

integrations/mistral/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ classifiers = [
2222
"Programming Language :: Python :: Implementation :: CPython",
2323
"Programming Language :: Python :: Implementation :: PyPy",
2424
]
25-
dependencies = ["haystack-ai>=2.22.0", "mistralai>=1.9.11,<2.0.0"]
25+
dependencies = ["haystack-ai>=2.22.0", "mistralai>=2.0.0"]
2626

2727
[project.urls]
2828
Documentation = "https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/mistral#readme"

integrations/mistral/src/haystack_integrations/components/converters/mistral/ocr_document_converter.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
)
1111
from haystack.dataclasses import ByteStream
1212
from haystack.utils import Secret, deserialize_secrets_inplace
13-
from mistralai import Mistral
14-
from mistralai.extra import response_format_from_pydantic_model
15-
from mistralai.models import (
13+
from mistralai.client import Mistral
14+
from mistralai.client.models import (
1615
DocumentURLChunk,
1716
FileChunk,
1817
ImageURLChunk,
1918
OCRResponse,
2019
)
20+
from mistralai.extra import response_format_from_pydantic_model # type: ignore[import-untyped]
2121
from pydantic import BaseModel
2222

2323
logger = logging.getLogger(__name__)

0 commit comments

Comments
 (0)