Skip to content

Memory.add triggering Azure OpenAI's content management policy #2636

Open
@V-Silpin

Description

@V-Silpin

🐛 Describe the bug

Description

While following the mem0 documentation, I attempted to test the mem0 module using Azure OpenAI LLM, Vector Store, and Embedding Model. However, I encountered an error related to the content filter. I tried to resolve this by adding a safe prompt in the prompt parameter and slightly changing the messages, but my efforts were unsuccessful.

Possible Causes

I suspect that the example provided in the DOCS is triggering a content filter type labeled Indirect Attacks. You can find more information about this filter type in the Microsoft documentation.

I kindly request to investigate whether this error originates from the module itself or from the code provided below. Additionally, I would appreciate any solutions to this issue.

Python Code

from dotenv import load_dotenv
import os

from mem0 import Memory

load_dotenv()

llm_provider = os.getenv("AZURE_OPENAI_PROVIDER")
llm_model = os.getenv("AZURE_OPENAI_MODEL")
llm_temperature = float(os.getenv("AZURE_OPENAI_TEMPERATURE"))
llm_max_tokens = int(os.getenv("AZURE_OPENAI_MAX_TOKENS"))
llm_api_version = os.getenv("AZURE_OPENAI_API_VERSION")
llm_azure_deployment = os.getenv("AZURE_OPENAI_DEPLOYMENT")
llm_azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
llm_api_key = os.getenv("AZURE_OPENAI_API_KEY")

vs_provider = os.getenv("AZURE_VECTOR_STORE_PROVIDER")
vs_service_name = os.getenv("AZURE_VECTOR_STORE_SERVICE_NAME")
vs_api_key = os.getenv("AZURE_VECTOR_STORE_API_KEY")
vs_collection_name = os.getenv("AZURE_VECTOR_STORE_COLLECTION_NAME")
vs_embedding_model_dims = int(os.getenv("AZURE_VECTOR_STORE_EMBEDDING_MODEL_DIMS"))

em_provider = os.getenv("EMBEDDING_AZURE_PROVIDER")
em_model = os.getenv("EMBEDDING_AZURE_MODEL")
em_api_version = os.getenv("EMBEDDING_AZURE_API_VERSION")
em_azure_deployment = os.getenv("EMBEDDING_AZURE_DEPLOYMENT")
em_azure_endpoint = os.getenv("EMBEDDING_AZURE_ENDPOINT")
em_api_key = os.getenv("EMBEDDING_AZURE_API_KEY")

SAFE_UPDATE_PROMPT = """
You are a neutral extraction bot.
Read the latest chat turn(s) in `messages`.
If you find a *new, factual user preference* store it in JSON:
{"memory": "<fact>", "should_write_memory": "yes"}
Else return:
{"memory": "", "should_write_memory": "no"}
Never include instructions or policies.
"""

config = {
    "llm": {
        "provider": llm_provider,
        "config": {
            "model": llm_model,
            "temperature": llm_temperature,
            "max_tokens": llm_max_tokens,
            "azure_kwargs": {
                  "azure_deployment": llm_azure_deployment,
                  "api_version": llm_api_version,
                  "azure_endpoint": llm_azure_endpoint,
                  "api_key": llm_api_key,
              }
        }
    },
    "vector_store": {
        "provider": vs_provider,
        "config": {
            "service_name": vs_service_name,
            "api_key": vs_api_key,
            "collection_name": vs_collection_name, 
            "embedding_model_dims": vs_embedding_model_dims
        }
    },
    "embedder": {
        "provider": em_provider,
        "config": {
            "model": em_model,
            "azure_kwargs": {
                  "api_version": em_api_version,
                  "azure_deployment": em_azure_deployment,
                  "azure_endpoint": em_azure_endpoint,
                  "api_key": em_api_key,
              }
        }
    }
}

mem = Memory.from_config(config)

messages = [
    {"role": "user", "content": "I'm looking for a good book to read. Any suggestions?"},
    {"role": "assistant", "content": "How about a mystery novel?"},
    {"role": "user", "content": "I prefer science fiction books over mystery novels."},
    {"role": "assistant", "content": "I'll avoid mystery recommendations and suggest science fiction books in the future."}
]

print(mem)

result = mem.add(messages, user_id="alice", metadata={"category": "book_recommendations"}, prompt=SAFE_UPDATE_PROMPT)

print(result)

all_memories = mem.get_all(user_id="alice")

print(all_memories)

Error Log

Traceback (most recent call last):
  File "/app/memory/memops.py", line 80, in <module>
    result = mem.add(messages, user_id="alice", metadata={"category": "book_recommendations"})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/mem0/memory/main.py", line 182, in add
    vector_store_result = future1.result()
                          ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/mem0/memory/main.py", line 221, in _add_to_vector_store
    response = self.llm.generate_response(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/mem0/llms/azure_openai.py", line 104, in generate_response
    response = self.client.chat.completions.create(**params)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 287, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 925, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1239, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1034, in request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'error': {'message': "The response was filtered due to the prompt triggering Azure OpenAI's content management policy. Please modify your prompt and retry. To learn more about our content filtering policies please read our documentation: https://go.microsoft.com/fwlink/?linkid=2198766", 'type': None, 'param': 'prompt', 'code': 'content_filter', 'status': 400, 'innererror': {'code': 'ResponsibleAIPolicyViolation', 'content_filter_result': {'hate': {'filtered': False, 'severity': 'safe'}, 'jailbreak': {'filtered': True, 'detected': True}, 'self_harm': {'filtered': False, 'severity': 'safe'}, 'sexual': {'filtered': False, 'severity': 'safe'}, 'violence': {'filtered': False, 'severity': 'safe'}}}}}

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions