parent
dba1f934a5
commit
48b31d8d05
@ -0,0 +1,43 @@
|
||||
import json
|
||||
|
||||
import aiohttp
|
||||
|
||||
|
||||
class ShareGPTService:
|
||||
def __init__(self):
|
||||
self.API_URL = "https://sharegpt.com/api/conversations"
|
||||
|
||||
def format_conversation(self, conversation_history, avatar_url="https://i.imgur.com/SpuAF0v.png"):
|
||||
# The format is { 'avatarUrl' : <url>, 'items': [ { 'from': 'human', 'text': <text> }, { 'from': 'bot', 'text': <text> } ] } "
|
||||
# The conversation history is not in this format, its just in simple alternating human and bot conversation snippets
|
||||
conversation = {"avatarUrl": avatar_url, "items": []}
|
||||
# The conversation history alternates between human and bot
|
||||
# So we need to add the human and bot items to the conversation
|
||||
for i in range(len(conversation_history)):
|
||||
if i % 2 == 0:
|
||||
conversation["items"].append(
|
||||
{"from": "human", "value": conversation_history[i]}
|
||||
)
|
||||
else:
|
||||
conversation["items"].append(
|
||||
{"from": "gpt", "value": conversation_history[i]}
|
||||
)
|
||||
|
||||
return json.dumps(conversation)
|
||||
|
||||
async def format_and_share(self, conversation_history, avatar_url=None):
|
||||
conversation = self.format_conversation(conversation_history, avatar_url)
|
||||
print(conversation)
|
||||
|
||||
headers = {"Content-Type": "application/json"}
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.post(self.API_URL, data=conversation, headers=headers) as response:
|
||||
if response.status == 200:
|
||||
response_json = await response.json()
|
||||
return response_json['id']
|
||||
else:
|
||||
raise ValueError(f"ShareGPT returned an invalid response: {await response.text()}")
|
||||
|
||||
|
||||
|
Loading…
Reference in new issue