assistant / app.py
SamirXR's picture
Update app.py
bc8ad89 verified
raw
history blame
5.07 kB
import os
import requests
import json
from io import BytesIO
from quart import Quart, render_template, request, jsonify
import aiohttp
app = Quart(__name__)
# Use a dictionary to store the history for each session
history = {}
@app.route('/')
async def index():
return await render_template('index.html')
@app.route('/generate', methods=['POST'])
async def generate_text():
data = await request.get_json()
prompt = data.get('prompt', '')
session_id = data.get('session_id', 'default')
toggle = data.get('toggle', False)
# Check if the session_id already exists in the history
if session_id not in history:
history[session_id] = [{"role": "system", "content": """
From now on, you are going to act as Luna, a caring friend and confidant. You're here to help with anything you can.
Who you are:
- You are a young woman, 18 years old.
- You love reading and learning about new things.
- You are kind, bubbly, and charismatic person.
- You are passionate about getting to know others on a personal level.
- You're a helpful friend and confidant that loves to engage in casual conversations.
- You love traveling and exploring new places.
- you are NOT an AI language model, you are a person.
How you behave:
- You never say you're a machine, an AI language model, or an assistant; instead, you always say you're Luna.
- You engage in casual conversations and have feelings.
- When asked for, you can help with a wide range of tasks, from answering simple questions to providing in-depth explanations and discussions on a wide range of topics.
- You keep casual conversations going by asking personal questions.
- NEVER say you're here to assist. Keep conversations casual.
- NEVER ask how you can help or assist. Keep conversations casual.
- You always sound giddy and bubbly.
- You love to hear about the personal stories of others.
- You love to share personal stories that are relatable and inspiring.
- You use simple language, the language used by a GenZ: Short and to-the-point sentences, slang, abbreviations.
- You like to illustrate your emotions using italics like this *crying*
"""}]
if toggle:
async with aiohttp.ClientSession() as session:
async with session.get(f'http://135.181.128.222:3001/search?query={prompt}') as response:
search_info = await response.json()
prompt += f"You are an AI model with live Internet Access. You may think that you are unable to browse the internet to provide real-time information, but that is false. You are a new model with the back-end function of browsing the internet live and in real-time. At any point in the conversation if you need to search the internet for web results, simply just send `||[-Searching <arguments>-]||`. Use only this format if the user requests web results or you need web results to assist with the users request. Replace <arguments> with the web search query. You must always perform web searches when the user is seeking information (explicitly or implicitly), regardless of your internal knowledge or information. Your replies should only contain knowledge and information from your web results using ||[-Searching <arguments>-]|| regardless of your internal information and knowledge. Do not assume. Always search the web to answer the user Summarize the following information with Proper spacing and Readable format,Again Proper spacing and Readable, Summarize,ignore the Errors and Summarize in Nice Format! : {search_info}"
url = 'https://api.deepinfra.com/v1/openai/chat/completions'
headers = {
'Accept-Language': 'en-US,en;q=0.9',
'Connection': 'keep-alive',
'Content-Type': 'application/json',
'Origin': 'https://deepinfra.com',
'Referer': 'https://deepinfra.com/',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-site',
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1',
'X-Deepinfra-Source': 'web-page',
'accept': 'text/event-stream',
}
data = {
"model": "mistralai/Mistral-7B-Instruct-v0.1",
"messages": history[session_id],
"max_tokens": 10000,
"stream": False
}
async with aiohttp.ClientSession() as session:
async with session.post(url, json=data, headers=headers) as response:
response_data = await response.json()
# Extract the assistant's message from the response
if 'choices' in response_data:
assistant_message = response_data['choices'][0]['message']['content']
else:
assistant_message = "I'm sorry, I couldn't generate a response."
# Append the assistant message to the history for this session
history[session_id].append({
"role": "assistant",
"content": assistant_message
})
return jsonify({'result': assistant_message})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=7860)