We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
AttributeError: 'dict' object has no attribute 'force_set'
**Bug description**
When I try the pretrained model of Self-feeding Chatbot, by `python projects/self_feeding/interactive.py --model-file zoo:self_feeding/hh131k_hb60k_fb60k_st1k/model --no-cuda`, error occurs: AttributeError: 'dict' object has no attribute 'force_set'

**Logs**
Please paste the command line output:

```
Enter Your Message: hello
Traceback (most recent call last):
  File "projects/self_feeding/interactive.py", line 87, in <module>
    interactive(parser.parse_args(print_args=False), print_parser=parser)
  File "projects/self_feeding/interactive.py", line 78, in interactive
    world.parley()
  File "/home/han/Github/ParlAI/parlai/core/worlds.py", line 273, in parley
    agents[1].observe(validate(acts[0]))
  File "/home/han/Github/ParlAI/projects/self_feeding/self_feeding_agent.py", line 370, in observe
    observation.force_set(
AttributeError: 'dict' object has no attribute 'force_set'
```

**Additional context**
Add any other context about the problem here. (like proxy settings, network setup, overall goals, etc.)


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `parlai/agents/local_human/local_human.py`
Content:
```
1 #!/usr/bin/env python3
2 
3 # Copyright (c) Facebook, Inc. and its affiliates.
4 # This source code is licensed under the MIT license found in the
5 # LICENSE file in the root directory of this source tree.
6 """Agent does gets the local keyboard input in the act() function.
7    Example: python examples/eval_model.py -m local_human -t babi:Task1k:1 -dt valid
8 """
9 
10 from parlai.core.agents import Agent
11 from parlai.core.utils import display_messages, load_cands
12 
13 
14 class LocalHumanAgent(Agent):
15     def add_cmdline_args(argparser):
16         """Add command-line arguments specifically for this agent."""
17         agent = argparser.add_argument_group('Local Human Arguments')
18         agent.add_argument(
19             '-fixedCands',
20             '--local-human-candidates-file',
21             default=None,
22             type=str,
23             help='File of label_candidates to send to other agent',
24         )
25         agent.add_argument(
26             '--single_turn',
27             type='bool',
28             default=False,
29             help='If on, assumes single turn episodes.',
30         )
31 
32     def __init__(self, opt, shared=None):
33         super().__init__(opt)
34         self.id = 'localHuman'
35         self.episodeDone = False
36         self.fixedCands_txt = load_cands(self.opt.get('local_human_candidates_file'))
37         print("Enter [DONE] if you want to end the episode.\n")
38 
39     def observe(self, msg):
40         print(
41             display_messages(
42                 [msg],
43                 ignore_fields=self.opt.get('display_ignore_fields', ''),
44                 prettify=self.opt.get('display_prettify', False),
45             )
46         )
47 
48     def act(self):
49         reply = {}
50         reply['id'] = self.getID()
51         reply_text = input("Enter Your Message: ")
52         reply_text = reply_text.replace('\\n', '\n')
53         if self.opt.get('single_turn', False):
54             reply_text += '[DONE]'
55         reply['episode_done'] = False
56         reply['label_candidates'] = self.fixedCands_txt
57         if '[DONE]' in reply_text:
58             reply['episode_done'] = True
59             self.episodeDone = True
60             reply_text = reply_text.replace('[DONE]', '')
61         reply['text'] = reply_text
62         return reply
63 
64     def episode_done(self):
65         return self.episodeDone
66
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/parlai/agents/local_human/local_human.py b/parlai/agents/local_human/local_human.py
--- a/parlai/agents/local_human/local_human.py
+++ b/parlai/agents/local_human/local_human.py
@@ -8,6 +8,7 @@
 """
 
 from parlai.core.agents import Agent
+from parlai.core.message import Message
 from parlai.core.utils import display_messages, load_cands
 
 
@@ -46,7 +47,7 @@
         )
 
     def act(self):
-        reply = {}
+        reply = Message()
         reply['id'] = self.getID()
         reply_text = input("Enter Your Message: ")
         reply_text = reply_text.replace('\\n', '\n')
@@ -55,7 +56,7 @@
         reply['episode_done'] = False
         reply['label_candidates'] = self.fixedCands_txt
         if '[DONE]' in reply_text:
-            reply['episode_done'] = True
+            reply.force_set('episode_done', True)
             self.episodeDone = True
             reply_text = reply_text.replace('[DONE]', '')
         reply['text'] = reply_text

{"golden_diff": "diff --git a/parlai/agents/local_human/local_human.py b/parlai/agents/local_human/local_human.py\n--- a/parlai/agents/local_human/local_human.py\n+++ b/parlai/agents/local_human/local_human.py\n@@ -8,6 +8,7 @@\n \"\"\"\n \n from parlai.core.agents import Agent\n+from parlai.core.message import Message\n from parlai.core.utils import display_messages, load_cands\n \n \n@@ -46,7 +47,7 @@\n         )\n \n     def act(self):\n-        reply = {}\n+        reply = Message()\n         reply['id'] = self.getID()\n         reply_text = input(\"Enter Your Message: \")\n         reply_text = reply_text.replace('\\\\n', '\\n')\n@@ -55,7 +56,7 @@\n         reply['episode_done'] = False\n         reply['label_candidates'] = self.fixedCands_txt\n         if '[DONE]' in reply_text:\n-            reply['episode_done'] = True\n+            reply.force_set('episode_done', True)\n             self.episodeDone = True\n             reply_text = reply_text.replace('[DONE]', '')\n         reply['text'] = reply_text\n", "issue": "AttributeError: 'dict' object has no attribute 'force_set'\n**Bug description**\r\nWhen I try the pretrained model of Self-feeding Chatbot, by `python projects/self_feeding/interactive.py --model-file zoo:self_feeding/hh131k_hb60k_fb60k_st1k/model --no-cuda`, error occurs: AttributeError: 'dict' object has no attribute 'force_set'\r\n\r\n**Logs**\r\nPlease paste the command line output:\r\n\r\n```\r\nEnter Your Message: hello\r\nTraceback (most recent call last):\r\n  File \"projects/self_feeding/interactive.py\", line 87, in <module>\r\n    interactive(parser.parse_args(print_args=False), print_parser=parser)\r\n  File \"projects/self_feeding/interactive.py\", line 78, in interactive\r\n    world.parley()\r\n  File \"/home/han/Github/ParlAI/parlai/core/worlds.py\", line 273, in parley\r\n    agents[1].observe(validate(acts[0]))\r\n  File \"/home/han/Github/ParlAI/projects/self_feeding/self_feeding_agent.py\", line 370, in observe\r\n    observation.force_set(\r\nAttributeError: 'dict' object has no attribute 'force_set'\r\n```\r\n\r\n**Additional context**\r\nAdd any other context about the problem here. (like proxy settings, network setup, overall goals, etc.)\r\n\n", "before_files": [{"content": "#!/usr/bin/env python3\n\n# Copyright (c) Facebook, Inc. and its affiliates.\n# This source code is licensed under the MIT license found in the\n# LICENSE file in the root directory of this source tree.\n\"\"\"Agent does gets the local keyboard input in the act() function.\n   Example: python examples/eval_model.py -m local_human -t babi:Task1k:1 -dt valid\n\"\"\"\n\nfrom parlai.core.agents import Agent\nfrom parlai.core.utils import display_messages, load_cands\n\n\nclass LocalHumanAgent(Agent):\n    def add_cmdline_args(argparser):\n        \"\"\"Add command-line arguments specifically for this agent.\"\"\"\n        agent = argparser.add_argument_group('Local Human Arguments')\n        agent.add_argument(\n            '-fixedCands',\n            '--local-human-candidates-file',\n            default=None,\n            type=str,\n            help='File of label_candidates to send to other agent',\n        )\n        agent.add_argument(\n            '--single_turn',\n            type='bool',\n            default=False,\n            help='If on, assumes single turn episodes.',\n        )\n\n    def __init__(self, opt, shared=None):\n        super().__init__(opt)\n        self.id = 'localHuman'\n        self.episodeDone = False\n        self.fixedCands_txt = load_cands(self.opt.get('local_human_candidates_file'))\n        print(\"Enter [DONE] if you want to end the episode.\\n\")\n\n    def observe(self, msg):\n        print(\n            display_messages(\n                [msg],\n                ignore_fields=self.opt.get('display_ignore_fields', ''),\n                prettify=self.opt.get('display_prettify', False),\n            )\n        )\n\n    def act(self):\n        reply = {}\n        reply['id'] = self.getID()\n        reply_text = input(\"Enter Your Message: \")\n        reply_text = reply_text.replace('\\\\n', '\\n')\n        if self.opt.get('single_turn', False):\n            reply_text += '[DONE]'\n        reply['episode_done'] = False\n        reply['label_candidates'] = self.fixedCands_txt\n        if '[DONE]' in reply_text:\n            reply['episode_done'] = True\n            self.episodeDone = True\n            reply_text = reply_text.replace('[DONE]', '')\n        reply['text'] = reply_text\n        return reply\n\n    def episode_done(self):\n        return self.episodeDone\n", "path": "parlai/agents/local_human/local_human.py"}], "after_files": [{"content": "#!/usr/bin/env python3\n\n# Copyright (c) Facebook, Inc. and its affiliates.\n# This source code is licensed under the MIT license found in the\n# LICENSE file in the root directory of this source tree.\n\"\"\"Agent does gets the local keyboard input in the act() function.\n   Example: python examples/eval_model.py -m local_human -t babi:Task1k:1 -dt valid\n\"\"\"\n\nfrom parlai.core.agents import Agent\nfrom parlai.core.message import Message\nfrom parlai.core.utils import display_messages, load_cands\n\n\nclass LocalHumanAgent(Agent):\n    def add_cmdline_args(argparser):\n        \"\"\"Add command-line arguments specifically for this agent.\"\"\"\n        agent = argparser.add_argument_group('Local Human Arguments')\n        agent.add_argument(\n            '-fixedCands',\n            '--local-human-candidates-file',\n            default=None,\n            type=str,\n            help='File of label_candidates to send to other agent',\n        )\n        agent.add_argument(\n            '--single_turn',\n            type='bool',\n            default=False,\n            help='If on, assumes single turn episodes.',\n        )\n\n    def __init__(self, opt, shared=None):\n        super().__init__(opt)\n        self.id = 'localHuman'\n        self.episodeDone = False\n        self.fixedCands_txt = load_cands(self.opt.get('local_human_candidates_file'))\n        print(\"Enter [DONE] if you want to end the episode.\\n\")\n\n    def observe(self, msg):\n        print(\n            display_messages(\n                [msg],\n                ignore_fields=self.opt.get('display_ignore_fields', ''),\n                prettify=self.opt.get('display_prettify', False),\n            )\n        )\n\n    def act(self):\n        reply = Message()\n        reply['id'] = self.getID()\n        reply_text = input(\"Enter Your Message: \")\n        reply_text = reply_text.replace('\\\\n', '\\n')\n        if self.opt.get('single_turn', False):\n            reply_text += '[DONE]'\n        reply['episode_done'] = False\n        reply['label_candidates'] = self.fixedCands_txt\n        if '[DONE]' in reply_text:\n            reply.force_set('episode_done', True)\n            self.episodeDone = True\n            reply_text = reply_text.replace('[DONE]', '')\n        reply['text'] = reply_text\n        return reply\n\n    def episode_done(self):\n        return self.episodeDone\n", "path": "parlai/agents/local_human/local_human.py"}]}