Spaces:
Paused
Paused
import random | |
import uuid | |
from conversations import ConversationStyle | |
class SystemPromptContextConstructor: | |
# https://github.com/weaigc/bingo/blob/eaebba306d5f68b940e4486ad81897516d0db0f3/src/lib/bots/bing/index.ts#L205-L211 | |
# https://github.com/weaigc/bingo/blob/eaebba306d5f68b940e4486ad81897516d0db0f3/src/lib/bots/bing/index.ts#L296 | |
def __init__(self, system_prompt: str = None): | |
self.system_prompt = system_prompt | |
self.construct() | |
def construct(self): | |
if self.system_prompt: | |
self.system_context = [ | |
{ | |
"author": "user", | |
"description": self.system_prompt, | |
"contextType": "WebPage", | |
"messageType": "Context", | |
"messageId": "discover-web--page-ping-mriduna-----", | |
} | |
] | |
else: | |
self.system_context = None | |
class ChathubRequestPayloadConstructor: | |
def __init__( | |
self, | |
prompt: str, | |
client_id: str, | |
conversation_id: str, | |
invocation_id: int = 0, | |
conversation_style: str = ConversationStyle.PRECISE.value, | |
system_prompt: str = None, | |
): | |
self.prompt = prompt | |
self.client_id = client_id | |
self.conversation_id = conversation_id | |
self.invocation_id = invocation_id | |
self.conversation_style = conversation_style.lower() | |
if self.conversation_style.endswith("offline"): | |
self.enable_search = False | |
self.conversation_style = self.conversation_style.replace("-offline", "") | |
else: | |
self.enable_search = True | |
self.message_id = self.generate_random_uuid() | |
self.system_prompt = system_prompt | |
self.construct() | |
def generate_random_uuid(self): | |
return str(uuid.uuid4()) | |
def generate_random_hex_str(self, length: int = 32) -> str: | |
return "".join(random.choice("0123456789abcdef") for _ in range(length)) | |
def set_options_sets(self): | |
options_sets_body = [ | |
"nlu_direct_response_filter", | |
"deepleo", | |
"disable_emoji_spoken_text", | |
"responsible_ai_policy_235", | |
"enablemm", | |
"dv3sugg", | |
"autosave", | |
"iyxapbing", | |
"iycapbing", | |
"rai289", | |
"enflst", | |
"enpcktrk", | |
"rcaldictans", | |
"rcaltimeans", | |
"eredirecturl", | |
] | |
options_sets_by_styles = { | |
"precise": options_sets_body | |
+ [ | |
"h3precise", | |
"clgalileo", | |
"gencontentv3", | |
], | |
"balanced": options_sets_body | |
+ [ | |
"galileo", | |
"saharagenconv5", | |
], | |
"creative": options_sets_body | |
+ [ | |
"h3imaginative", | |
"clgalileo", | |
"gencontentv3", | |
], | |
} | |
self.options_sets = options_sets_by_styles[self.conversation_style] | |
def set_search_options(self): | |
self.plugins = [] | |
if self.enable_search: | |
self.plugins.append({"id": "c310c353-b9f0-4d76-ab0d-1dd5e979cf68"}) | |
else: | |
self.options_sets.append("nosearchall") | |
def set_system_context(self): | |
self.system_context = SystemPromptContextConstructor( | |
self.system_prompt | |
).system_context | |
def construct(self): | |
self.set_options_sets() | |
self.set_search_options() | |
self.set_system_context() | |
self.request_payload = { | |
"arguments": [ | |
{ | |
"source": "cib", | |
"optionsSets": self.options_sets, | |
"allowedMessageTypes": [ | |
"ActionRequest", | |
"Chat", | |
"ConfirmationCard", | |
"Context", | |
"InternalSearchQuery", | |
"InternalSearchResult", | |
"Disengaged", | |
"InternalLoaderMessage", | |
"InvokeAction", | |
"Progress", | |
"RenderCardRequest", | |
"RenderContentRequest", | |
"AdsQuery", | |
"SemanticSerp", | |
"GenerateContentQuery", | |
"SearchQuery", | |
], | |
"sliceIds": [ | |
"techpillscf", | |
"gbaa", | |
"gba", | |
"gbapa", | |
"codecreator", | |
"dlidcf", | |
"specedge", | |
"preall15", | |
"suppsm240-t", | |
"translref", | |
"ardsw_1_9_9", | |
"fluxnosearchc", | |
"fluxnosearch", | |
"1115rai289", | |
"1119backoss0", | |
"124multi2t", | |
"1129gpt4ts0", | |
"kchero50cf", | |
"cacfastapis", | |
"cacdupereccf", | |
"cacmuidarb", | |
"cacfrwebt2cf", | |
"sswebtop2cf", | |
], | |
"verbosity": "verbose", | |
"scenario": "SERP", | |
"plugins": self.plugins, | |
"previousMessages": self.system_context, | |
"traceId": self.generate_random_hex_str(), | |
"conversationHistoryOptionsSets": [ | |
"autosave", | |
"savemem", | |
"uprofupd", | |
"uprofgen", | |
], | |
"isStartOfSession": self.invocation_id == 0, | |
"requestId": self.message_id, | |
"message": { | |
"author": "user", | |
"inputMethod": "Keyboard", | |
"text": self.prompt, | |
"messageType": "Chat", | |
"requestId": self.message_id, # "a6ecd3aa-1007-6959-52fb-9e23f34e86be", | |
"messageId": self.message_id, # "a6ecd3aa-1007-6959-52fb-9e23f34e86be", | |
}, | |
"tone": self.conversation_style.capitalize(), | |
"spokenTextMode": "None", | |
"conversationId": self.conversation_id, # "51D|BingProdUnAuthenticatedUsers|65761F31183134340AFD8F9AF1532EA90DC7F11ED348765DE9BAC956C9BA4669", | |
"participant": { | |
"id": self.client_id, # "23EBCCB7073868D70172DF780674692D", | |
}, | |
} | |
], | |
"invocationId": str(self.invocation_id), | |
"target": "chat", | |
"type": 4, | |
} | |