Add option to disable Bing ai jailbreak mode

This commit is contained in:
hibobmaster 2023-03-18 07:20:55 +08:00
parent 09596c1990
commit 599d186ba7
Signed by: bobmaster
GPG key ID: 316B77D7914D713C
3 changed files with 21 additions and 8 deletions

22
bing.py
View file

@ -10,13 +10,18 @@ python_boolean_to_json = {
class BingBot: class BingBot:
def __init__(self, bing_api_endpoint: str): def __init__(self, bing_api_endpoint: str, jailbreakEnabled: bool = False):
self.data = { self.data = {
'jailbreakConversationId': json.dumps(python_boolean_to_json['true']), # 'jailbreakConversationId': json.dumps(python_boolean_to_json['true']),
'clientOptions.clientToUse': 'bing' 'clientOptions.clientToUse': 'bing',
} }
self.bing_api_endpoint = bing_api_endpoint self.bing_api_endpoint = bing_api_endpoint
self.jailbreakEnabled = jailbreakEnabled
if self.jailbreakEnabled:
self.data['jailbreakConversationId'] = json.dumps(python_boolean_to_json['true'])
async def ask_bing(self, prompt) -> str: async def ask_bing(self, prompt) -> str:
self.data['message'] = prompt self.data['message'] = prompt
async with aiohttp.ClientSession() as session: async with aiohttp.ClientSession() as session:
@ -34,9 +39,14 @@ class BingBot:
await asyncio.sleep(2) await asyncio.sleep(2)
continue continue
json_body = json.loads(body) json_body = json.loads(body)
# print(json_body['jailbreakConversationId']) if self.jailbreakEnabled:
self.data['jailbreakConversationId'] = json_body['jailbreakConversationId'] self.data['jailbreakConversationId'] = json_body['jailbreakConversationId']
self.data['parentMessageId'] = json_body['messageId'] self.data['parentMessageId'] = json_body['messageId']
else:
self.data['conversationSignature'] = json_body['conversationSignature']
self.data['conversationId'] = json_body['conversationId']
self.data['clientId'] = json_body['clientId']
self.data['invocationId'] = json_body['invocationId']
return json_body['response'] return json_body['response']
except Exception as e: except Exception as e:
logger.error("Error Exception", exc_info=True) logger.error("Error Exception", exc_info=True)

4
bot.py
View file

@ -31,6 +31,7 @@ class Bot:
room_id: Optional[str] = '', room_id: Optional[str] = '',
bing_api_endpoint: Optional[str] = '', bing_api_endpoint: Optional[str] = '',
access_token: Optional[str] = '', access_token: Optional[str] = '',
jailbreakEnabled: Optional[bool] = False,
): ):
self.homeserver = homeserver self.homeserver = homeserver
self.user_id = user_id self.user_id = user_id
@ -39,6 +40,7 @@ class Bot:
self.room_id = room_id self.room_id = room_id
self.api_key = api_key self.api_key = api_key
self.bing_api_endpoint = bing_api_endpoint self.bing_api_endpoint = bing_api_endpoint
self.jailbreakEnabled = jailbreakEnabled
# initialize AsyncClient object # initialize AsyncClient object
self.store_path = os.getcwd() self.store_path = os.getcwd()
self.config = AsyncClientConfig(store=SqliteStore, self.config = AsyncClientConfig(store=SqliteStore,
@ -72,7 +74,7 @@ class Bot:
# initialize bingbot # initialize bingbot
if self.bing_api_endpoint != '': if self.bing_api_endpoint != '':
self.bingbot = BingBot(bing_api_endpoint) self.bingbot = BingBot(bing_api_endpoint, jailbreakEnabled=self.jailbreakEnabled)
# message_callback event # message_callback event
async def message_callback(self, room: MatrixRoom, event: RoomMessageText) -> None: async def message_callback(self, room: MatrixRoom, event: RoomMessageText) -> None:

View file

@ -14,7 +14,8 @@ async def main():
room_id=config.get('room_id', ''), room_id=config.get('room_id', ''),
api_key=config.get('api_key', ''), api_key=config.get('api_key', ''),
bing_api_endpoint=config.get('bing_api_endpoint', ''), bing_api_endpoint=config.get('bing_api_endpoint', ''),
access_token=config.get('access_token', '') access_token=config.get('access_token', ''),
jailbreakEnabled=config.get('jailbreakEnabled', False),
) )
if config.get('access_token', '') == '': if config.get('access_token', '') == '':
await matrix_bot.login() await matrix_bot.login()