功能描述
目标是通过 additional_kwargs
输入参数将 safety_settings
传递给 Gemini Vertex LLM 对象,如下所示:
from llama_index.llms.vertex import Vertex
from vertexai.generative_models._generative_models import (
HarmCategory,
HarmBlockThreshold,
)
safety_settings = {
HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
}
llm = Vertex(
model="gemini-pro",
project=credentials.project_id,
credentials=credentials,
temperature=temperature,
max_tokens=max_tokens,
additional_kwargs={"safety_settings": safety_settings},
)
目前这是不可能的,会抛出错误,因为 additional_kwargs
都被添加到了 Gemini 的 GenerationConfig
(即你会得到错误 ValueError: Unknown field for GenerationConfig: safety_settings
)。
原因
我也尝试在查询时稍后添加 safety_settings
,因为 Gemini Vertex 也只在生成时接受 safety_settings
参数。然而,当我使用聊天引擎(如 SimpleChatEngine
& CondenseQuestionChatEngine
)时,这也是不可能的,因为它们不支持将 **kwargs
作为 .chat()
/ .stream_chat()
函数的输入。
与修改所有聊天引擎以接受 **kwargs
(因为我认为可能也有原因为什么不接受它们)不同,我认为在 LLM 对象示例创建时修复 safety_settings
(如我上面给出的示例代码)会更方便。
功能价值
如果没有这个功能,似乎目前没有其他方法可以控制 Gemini Vertex LLM 的 safety_settings
。
3条答案
按热度按时间tkqqtvp11#
很高兴看到您对通过
additional_kwargs
参数允许传递safety_settings
以增强 Gemini Vertex LLM 对象感兴趣。您的详细描述和示例代码清楚地表明了这个功能的价值。我们鼓励您考虑创建一个拉取请求,将此功能贡献给仓库。您的贡献将受到社区的赞赏。感谢您对改善 Gemini Vertex LLM 的兴趣!关于 Dosu
此响应旨在提供帮助并节省您的时间。它不是精确解决方案,而是您自己研究的一个起点。
帮助我变得更有用!如果您觉得有帮助请留下一个 👍,如果不相关请留下一个 👎。
如果您想继续对话,请以 @dosu-bot 开头回复。
tvz2xvvm2#
你好, Logan - 我也遇到了一些不想要的安全错误(无关紧要的),并希望拥有这个功能。如果我提出一个 PR 是否可以,或者我应该等待 Llama-index 的某人来处理这个问题?此外,这里的标签 p2 是什么意思(优先级 2)
66bbxpm53#
你好,dosu-bot。你能看到那条消息吗?