启用使用 LLM 进行文本生成。
模块 haystack_experimental.components.generators.chat.openai
OpenAIChatGenerator
一个基于 OpenAI 的聊天式文本生成器组件,支持幻觉风险评分。
这基于论文 LLMs are Bayesian, in Expectation, not in Realization。
使用示例
```python
from haystack.dataclasses import ChatMessage
from haystack_experimental.utils.hallucination_risk_calculator.dataclasses import HallucinationScoreConfig
from haystack_experimental.components.generators.chat.openai import OpenAIChatGenerator
# Evidence-based Example
llm = OpenAIChatGenerator(model="gpt-4o")
rag_result = llm.run(
messages=[
ChatMessage.from_user(
text="Task: Answer strictly based on the evidence provided below.
" "问题:谁获得了 2019 年诺贝尔物理学奖? " "证据: " "- 诺贝尔奖新闻稿 (2019): James Peebles (1/2); Michel Mayor & Didier Queloz (1/2)。 " "约束:如果证据不足或有冲突,请拒绝。" ) ], hallucination_score_config=HallucinationScoreConfig(skeleton_policy="evidence_erase"), ) print(f"决定: {rag_result['replies'][0].meta['hallucination_decision']}") print(f"风险上限: {rag_result['replies'][0].meta['hallucination_risk']:.3f}") print(f"理由: {rag_result['replies'][0].meta['hallucination_rationale']}") print(f"答案: {rag_result['replies'][0].text}") print("---") ```
OpenAIChatGenerator.run
@component.output_types(replies=list[ChatMessage])
def run(
messages: list[ChatMessage],
streaming_callback: Optional[StreamingCallbackT] = None,
generation_kwargs: Optional[dict[str, Any]] = None,
*,
tools: Optional[Union[list[Tool], Toolset]] = None,
tools_strict: Optional[bool] = None,
hallucination_score_config: Optional[HallucinationScoreConfig] = None
) -> dict[str, list[ChatMessage]]
根据提供的消息和生成参数调用聊天补全。
参数:
messages: 一个 ChatMessage 实例列表,表示输入消息。streaming_callback: 当从流中接收到新 token 时调用的回调函数。generation_kwargs:文本生成的附加关键字参数。这些参数将覆盖组件初始化期间传递的参数。有关 OpenAI API 参数的详细信息,请参阅 OpenAI 文档。tools: 一个工具列表或 Toolset,模型可以为此准备调用。如果设置,它将覆盖tools参数在组件初始化期间设置。此参数可以接受一个列表Tool对象列表或一个Toolset实例。tools_strict:是否启用对工具调用的严格模式遵循。如果设置为True,模型将严格遵循工具定义中的parameters字段的工具定义,但这可能会增加延迟。如果设置,它将覆盖tools_strict参数在组件初始化期间设置。hallucination_score_config:如果提供,生成器将使用 OpenAIPlanner 评估其响应的幻觉风险,并用幻觉指标注解每个响应。这涉及生成多个样本并分析它们的连贯性,这可能会增加延迟和成本。当您需要评估生成内容在准确性至关重要的场景中的可靠性时,请使用此选项。有关详细信息,请参阅 研究论文
返回值:
一个字典,其中包含以下键
replies:一个包含生成响应的列表,作为 ChatMessage 实例。如果启用了幻觉评分,每个消息将包含附加元数据hallucination_decision:“ANSWER”表示模型决定回答,“REFUSE”表示它已放弃。hallucination_risk:EDFL 幻觉风险上限。hallucination_rationale:幻觉决策背后的理由。
OpenAIChatGenerator.run_async
@component.output_types(replies=list[ChatMessage])
async def run_async(
messages: list[ChatMessage],
streaming_callback: Optional[StreamingCallbackT] = None,
generation_kwargs: Optional[dict[str, Any]] = None,
*,
tools: Optional[Union[list[Tool], Toolset]] = None,
tools_strict: Optional[bool] = None,
hallucination_score_config: Optional[HallucinationScoreConfig] = None
) -> dict[str, list[ChatMessage]]
异步调用聊天补全,基于提供的消息和生成参数。
这是run 方法。它具有相同的参数和返回值,但可以在异步代码中与await 一起使用。
参数:
messages: 一个 ChatMessage 实例列表,表示输入消息。streaming_callback:当从流接收到新 token 时调用的回调函数。必须是协程。generation_kwargs:文本生成的附加关键字参数。这些参数将覆盖组件初始化期间传递的参数。有关 OpenAI API 参数的详细信息,请参阅 OpenAI 文档。tools: 一个工具列表或 Toolset,模型可以为此准备调用。如果设置,它将覆盖tools参数在组件初始化期间设置。此参数可以接受一个列表Tool对象列表或一个Toolset实例。tools_strict:是否启用对工具调用的严格模式遵循。如果设置为True,模型将严格遵循工具定义中的parameters字段的工具定义,但这可能会增加延迟。如果设置,它将覆盖tools_strict参数在组件初始化期间设置。hallucination_score_config:如果提供,生成器将使用 OpenAIPlanner 评估其响应的幻觉风险,并用幻觉指标注解每个响应。这涉及生成多个样本并分析它们的连贯性,这可能会增加延迟和成本。当您需要评估生成内容在准确性至关重要的场景中的可靠性时,请使用此选项。有关详细信息,请参阅 研究论文
返回值:
一个字典,其中包含以下键
replies:一个包含生成响应的列表,作为 ChatMessage 实例。如果启用了幻觉评分,每个消息将包含附加元数据hallucination_decision:“ANSWER”表示模型决定回答,“REFUSE”表示它已放弃。hallucination_risk:EDFL 幻觉风险上限。hallucination_rationale:幻觉决策背后的理由。
