文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
API 参考

Generators (生成器)

启用使用 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:幻觉决策背后的理由。