Mistral 集成,用于 Haystack
模块 haystack_integrations.components.embedders.mistral.document_embedder
MistralDocumentEmbedder
一个使用 Mistral 模型计算 Document 嵌入的组件。每个 Document 的嵌入存储在Document 的 embedding 字段中。
使用示例
from haystack import Document
from haystack_integrations.components.embedders.mistral import MistralDocumentEmbedder
doc = Document(content="I love pizza!")
document_embedder = MistralDocumentEmbedder()
result = document_embedder.run([doc])
print(result['documents'][0].embedding)
# [0.017020374536514282, -0.023255806416273117, ...]
MistralDocumentEmbedder.__init__
def __init__(api_key: Secret = Secret.from_env_var("MISTRAL_API_KEY"),
model: str = "mistral-embed",
api_base_url: Optional[str] = "https://api.mistral.ai/v1",
prefix: str = "",
suffix: str = "",
batch_size: int = 32,
progress_bar: bool = True,
meta_fields_to_embed: Optional[List[str]] = None,
embedding_separator: str = "\n",
*,
timeout: Optional[float] = None,
max_retries: Optional[int] = None,
http_client_kwargs: Optional[Dict[str, Any]] = None)
创建一个 MistralDocumentEmbedder 组件。
参数:
api_key: Mistral API 密钥。model: 要使用的模型名称。api_base_url: Mistral API 基础 URL。有关更多详细信息,请参阅 Mistral 文档。prefix: 添加到每个文本开头的字符串。suffix: 添加到每个文本末尾的字符串。batch_size: 一次编码的 Document 数量。progress_bar: 是否显示进度条。在生产部署中禁用此选项有助于保持日志的整洁。meta_fields_to_embed: 需要与 Document 文本一起进行嵌入的元字段列表。embedding_separator: 用于将元字段连接到 Document 文本的分隔符。timeout: Mistral 客户端调用的超时时间。如果未设置,则默认为OPENAI_TIMEOUT环境变量,或 30 秒。max_retries: 在发生内部错误后联系 Mistral 的最大重试次数。如果未设置,则默认为OPENAI_MAX_RETRIES环境变量,或设置为 5。http_client_kwargs:用于配置自定义的关键字参数字典httpx.Client或httpx.AsyncClient。有关更多信息,请参阅 HTTPX 文档。
MistralDocumentEmbedder.to_dict
def to_dict() -> Dict[str, Any]
将组件序列化为字典。
返回值:
包含序列化数据的字典。
模块 haystack_integrations.components.embedders.mistral.text_embedder
MistralTextEmbedder
一个使用 Mistral 模型嵌入字符串的组件。
使用示例
from haystack_integrations.components.embedders.mistral.text_embedder import MistralTextEmbedder
text_to_embed = "I love pizza!"
text_embedder = MistralTextEmbedder()
print(text_embedder.run(text_to_embed))
__output:__
__{'embedding': [0.017020374536514282, -0.023255806416273117, ...],__
__'meta': {'model': 'mistral-embed',__
__ 'usage': {'prompt_tokens': 4, 'total_tokens': 4}}}__
MistralTextEmbedder.__init__
def __init__(api_key: Secret = Secret.from_env_var("MISTRAL_API_KEY"),
model: str = "mistral-embed",
api_base_url: Optional[str] = "https://api.mistral.ai/v1",
prefix: str = "",
suffix: str = "",
*,
timeout: Optional[float] = None,
max_retries: Optional[int] = None,
http_client_kwargs: Optional[Dict[str, Any]] = None)
创建一个 MistralTextEmbedder 组件。
参数:
api_key: Mistral API 密钥。model: 要使用的 Mistral 嵌入模型名称。api_base_url: Mistral API 基础 URL。有关更多详细信息,请参阅 Mistral 文档。prefix: 添加到每个文本开头的字符串。suffix: 添加到每个文本末尾的字符串。timeout: Mistral 客户端调用的超时时间。如果未设置,则默认为OPENAI_TIMEOUT环境变量,或 30 秒。max_retries: 在发生内部错误后联系 Mistral 的最大重试次数。如果未设置,则默认为OPENAI_MAX_RETRIES环境变量,或设置为 5。http_client_kwargs:用于配置自定义的关键字参数字典httpx.Client或httpx.AsyncClient。有关更多信息,请参阅 HTTPX 文档。
MistralTextEmbedder.to_dict
def to_dict() -> Dict[str, Any]
将组件序列化为字典。
返回值:
包含序列化数据的字典。
模块 haystack_integrations.components.generators.mistral.chat.chat_generator
MistralChatGenerator
使用 Mistral AI 生成模型启用文本生成。支持的模型请参阅 Mistral AI 文档。
用户可以通过以下方式将任何文本生成参数(适用于 Mistral Chat Completion API)直接传递给此组件:generation_kwargs 参数,将 Llama Chat Completion API 支持的任何文本生成参数直接传递给此组件,该参数位于__init__ 或generation_kwargs 参数,将 Llama Chat Completion API 支持的任何文本生成参数直接传递给此组件,该参数位于run 方法中。
主要特性和兼容性
- 主要兼容性:设计用于与 Mistral API Chat Completion 端点无缝协作。
- 流式支持:支持从 Mistral API Chat Completion 端点流式传输响应。
- 可定制性:支持 Mistral API Chat Completion 端点支持的所有参数。
该组件使用 ChatMessage 格式来构建输入和输出,确保在基于聊天的文本生成场景中响应的连贯性和上下文相关性。关于 ChatMessage 格式的详细信息,请参阅 Haystack 文档。
有关 Mistral API 支持的参数的更多详细信息,请参阅 Mistral API 文档。
使用示例
from haystack_integrations.components.generators.mistral import MistralChatGenerator
from haystack.dataclasses import ChatMessage
messages = [ChatMessage.from_user("What's Natural Language Processing?")]
client = MistralChatGenerator()
response = client.run(messages)
print(response)
>>{'replies': [ChatMessage(_role=<ChatRole.ASSISTANT: 'assistant'>, _content=[TextContent(text=
>> "Natural Language Processing (NLP) is a branch of artificial intelligence
>> that focuses on enabling computers to understand, interpret, and generate human language in a way that is
>> meaningful and useful.")], _name=None,
>> _meta={'model': 'mistral-small-latest', 'index': 0, 'finish_reason': 'stop',
>> 'usage': {'prompt_tokens': 15, 'completion_tokens': 36, 'total_tokens': 51}})]}
MistralChatGenerator.__init__
def __init__(api_key: Secret = Secret.from_env_var("MISTRAL_API_KEY"),
model: str = "mistral-small-latest",
streaming_callback: Optional[StreamingCallbackT] = None,
api_base_url: Optional[str] = "https://api.mistral.ai/v1",
generation_kwargs: Optional[Dict[str, Any]] = None,
tools: Optional[Union[List[Tool], Toolset]] = None,
*,
timeout: Optional[float] = None,
max_retries: Optional[int] = None,
http_client_kwargs: Optional[Dict[str, Any]] = None)
创建 MistralChatGenerator 的实例。除非在model 中另外指定,否则此值为 Mistral 的
mistral-small-latest 模型。
参数:
api_key: Mistral API 密钥。model: 要使用的 Mistral 聊天补全模型名称。streaming_callback: 当从流中接收到新 token 时调用的回调函数。回调函数接受 StreamingChunk 作为参数。api_base_url: Mistral API 基础 URL。有关更多详细信息,请参阅 Mistral 文档。generation_kwargs: 用于模型的其他参数。这些参数将直接发送到 Mistral 端点。有关更多详细信息,请参阅 Mistral API 文档。支持的一些参数max_tokens:输出文本可以拥有的最大 token 数。temperature:要使用的采样温度。值越高,模型承担的风险越大。对于更具创造性的应用,请尝试 0.9,对于有明确答案的应用,请尝试 0(argmax 采样)。top_p:一种替代温度采样的方法,称为 nucleus 采样,其中模型考虑具有 top_p 概率质量的 token 的结果。因此,0.1 意味着只考虑构成前 10% 概率质量的 token。stream:是否流式传输部分进度。如果设置,token 将作为数据(仅数据)服务器发送事件(SSE)可用时发送,流的结束由 data: [DONE] 消息终止。safe_prompt:是否在所有对话之前注入安全提示。random_seed:用于随机采样的种子。tools: 一个工具列表或 Toolset,模型可以为此准备调用。此参数可以接受一个Tool对象列表或一个Toolset实例。timeout: Mistral API 调用的超时时间。如果未设置,则默认为OPENAI_TIMEOUT环境变量,或 30 秒。max_retries: 在发生内部错误后联系 OpenAI 的最大重试次数。如果未设置,则默认为OPENAI_MAX_RETRIES环境变量,或设置为 5。http_client_kwargs:用于配置自定义的关键字参数字典httpx.Client或httpx.AsyncClient。有关更多信息,请参阅 HTTPX 文档。
MistralChatGenerator.to_dict
def to_dict() -> Dict[str, Any]
将此组件序列化为字典。
返回值:
序列化后的组件(字典格式)。
