llama_index [问题]:为顶点AI添加安全设置

ltqd579y  于 2个月前  发布在  其他
关注(0)|答案(4)|浏览(32)

问题验证

  • 我已在文档和discord中寻找答案。

问题

我正在尝试为顶点AI模型添加安全设置。

safety_settings={
                    generative_models.HarmCategory.HARM_CATEGORY_HATE_SPEECH: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
                    generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
                    generative_models.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
                    generative_models.HarmCategory.HARM_CATEGORY_HARASSMENT: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
                }

当我传递上述设置时,我得到以下错误。

pydantic.v1.errors.ConfigError: field "safety_settings_List[ForwardRef('SafetySetting')]" not yet prepared so type is still a ForwardRef, you might need to call Vertex.update_forward_refs().

那么传递安全设置的正确格式是什么?

eqfvzcg8

eqfvzcg81#

将安全设置传递给Vertex AI模型的正确格式是使用vertexai.generative_models._generative_models模块中的SafetySettingsType。在创建Vertex类示例时,应将其作为名为safety_settings的可选参数传递。
以下是如何操作的示例:

from vertexai.generative_models._generative_models import SafetySettingsType
from llama_index.llms.vertex import Vertex

# Define your safety settings
safety_settings = SafetySettingsType(
    # Add your specific safety settings here
)

# Set up necessary variables
credentials = {
    "project_id": "INSERT_PROJECT_ID",
    "api_key": "INSERT_API_KEY",
}

# Create an instance of the Vertex class with safety settings
llm = Vertex(
    model="text-bison",
    project=credentials["project_id"],
    credentials=credentials,
    safety_settings=safety_settings
)

# Access the complete method from the instance
response = llm.complete("Hello world!")
print(str(response))

这确保了safety_settings参数被正确传递,并避免了pydantic.v1.errors.ConfigError1(https://github.com/run-llama/llama_index/blob/main/llama-index-integrations/llms/llama-index-llms-vertex/llama_index/llms/vertex/base.py)。

详细信息

关于Dosu

此响应旨在帮助您节省时间并提高效率。它不是精确解决方案,而是您自己研究的起点。
请帮助我变得更有用!如果这有帮助,请留下一个👍,如果不相关,请留下一个👎。

  • 要继续对话,请提及@dosu。*
of1yzvn4

of1yzvn42#

根据错误提示,需要调用update forward refs方法,因此类必须更新。解决方法是在使用之前手动调用它。

o2g1uqev

o2g1uqev3#

@dosu-bot, @logan-markewich

safety_settings={
                HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_ONLY_HIGH,
                HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
                HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
                HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_NONE,
            }

Vertex.update_forward_refs()
llm = Vertex(
    model="gemini-1.5-pro-preview-0514", 
    safety_settings=safety_settings, 
    project=credentials.project_id, 
    credentials=credentials,
    temperature = 0.3,
    max_tokens = 8192,
)

NameError: name 'SafetySetting' is not defined. Did you mean: 'SafetySettingsType'?

nzkunb0c

nzkunb0c4#

要解决 NameError: name 'SafetySetting' is not defined 错误,您需要确保 SafetySetting 被正确定义或导入。然而,在您的情况中,似乎您应该使用 SafetySettingsType
以下是如何正确定义和传递安全设置的方法:

  1. 导入必要的类:
from vertexai.preview.language_models import HarmCategory, HarmBlockThreshold
from vertexai.generative_models._generative_models import SafetySettingsType
from llama_index.llms.vertex import Vertex
  1. 使用 SafetySettingsType 定义您的安全设置:
safety_settings = SafetySettingsType(
    {
        HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_ONLY_HIGH,
        HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
        HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_NONE,
    }
)
  1. 调用 update_forward_refs 并创建 Vertex 示例:
Vertex.update_forward_refs()

llm = Vertex(
    model="gemini-1.5-pro-preview-0514",
    safety_settings=safety_settings,
    project=credentials.project_id,
    credentials=credentials,
    temperature=0.3,
    max_tokens=8192,
)

这应该解决 NameError 并正确将安全设置传递给您的 Vertex AI 模型 1(https://github.com/run-llama/llama_index/blob/main/llama-index-integrations/llms/llama-index-llms-vertex/llama_index/llms/vertex/base.py)。

  • 要继续与 Dosu 对话,请提及 @dosu。*

相关问题