Spaces:
Runtime error
Runtime error
| import os | |
| import gradio as gr | |
| from groq import Groq | |
| import requests | |
| import re | |
| groq_client = Groq( | |
| api_key=os.environ.get("GROQ_API_KEY"), | |
| ) | |
| NOTION_TOKEN = os.environ.get("NOTION_TOKEN") | |
| NOTION_PAGE_ID = "4fc0a081f0a84257879d6f7638e368b9" # Replace with your actual page ID | |
| def format_text_for_notion(text): | |
| # Split the text into lines | |
| lines = text.split('\n') | |
| formatted_text = [] | |
| for line in lines: | |
| # Check if the line is a bullet point | |
| if line.strip().startswith('•') or line.strip().startswith('-'): | |
| formatted_text.append({ | |
| "type": "bulleted_list_item", | |
| "bulleted_list_item": { | |
| "rich_text": [{"type": "text", "text": {"content": line.strip()[2:].strip()}}] | |
| } | |
| }) | |
| else: | |
| # Check for bold text (assuming it's wrapped in ** or __) | |
| bold_parts = re.split(r'(\*\*.*?\*\*|__.*?__)', line) | |
| rich_text = [] | |
| for part in bold_parts: | |
| if part.startswith('**') and part.endswith('**'): | |
| rich_text.append({ | |
| "type": "text", | |
| "text": {"content": part[2:-2]}, | |
| "annotations": {"bold": True} | |
| }) | |
| elif part.startswith('__') and part.endswith('__'): | |
| rich_text.append({ | |
| "type": "text", | |
| "text": {"content": part[2:-2]}, | |
| "annotations": {"bold": True} | |
| }) | |
| elif part: | |
| rich_text.append({ | |
| "type": "text", | |
| "text": {"content": part} | |
| }) | |
| formatted_text.append({ | |
| "type": "paragraph", | |
| "paragraph": { | |
| "rich_text": rich_text | |
| } | |
| }) | |
| return formatted_text | |
| def store_conversation(user_input, bot_response): | |
| url = f"https://api.notion.com/v1/blocks/{NOTION_PAGE_ID}/children" | |
| headers = { | |
| "Authorization": f"Bearer {NOTION_TOKEN}", | |
| "Content-Type": "application/json", | |
| "Notion-Version": "2022-06-28" | |
| } | |
| formatted_bot_response = format_text_for_notion(bot_response) | |
| data = { | |
| "children": [ | |
| { | |
| "object": "block", | |
| "type": "paragraph", | |
| "paragraph": { | |
| "rich_text": [ | |
| { | |
| "type": "text", | |
| "text": {"content": "User: "}, | |
| "annotations": {"bold": True} | |
| }, | |
| { | |
| "type": "text", | |
| "text": {"content": user_input}, | |
| "annotations": {"bold": True} | |
| } | |
| ] | |
| } | |
| }, | |
| { | |
| "object": "block", | |
| "type": "paragraph", | |
| "paragraph": { | |
| "rich_text": [ | |
| { | |
| "type": "text", | |
| "text": {"content": "Bot: "}, | |
| "annotations": {"bold": True} | |
| } | |
| ] | |
| } | |
| }, | |
| *formatted_bot_response | |
| ] | |
| } | |
| try: | |
| response = requests.patch(url, headers=headers, json=data) | |
| response.raise_for_status() | |
| print("Conversation stored successfully") | |
| except requests.exceptions.RequestException as e: | |
| print(f"Error storing conversation: {str(e)}") | |
| print(f"Response status code: {e.response.status_code}") | |
| print(f"Response content: {e.response.content}") | |
| print("Make sure the Notion page is shared with your integration and the page ID is correct.") | |
| def chat_with_groq(user_input, additional_context=None): | |
| chat_completion = groq_client.chat.completions.create( | |
| messages=[ | |
| { | |
| "role": "user", | |
| "content": user_input, | |
| } | |
| ], | |
| model="llama-3.1-8b-instant", | |
| ) | |
| bot_response = chat_completion.choices[0].message.content | |
| store_conversation(user_input, bot_response) | |
| return bot_response | |
| demo = gr.ChatInterface(fn=chat_with_groq, | |
| textbox=gr.Textbox(placeholder="Ask me any question"), | |
| title="Hey NOPE", theme="Monochrome", | |
| description="Welcome to the world of NOPE", | |
| retry_btn=None, | |
| undo_btn="Delete Previous", | |
| clear_btn="Clear",) | |
| if __name__ == "__main__": | |
| print(f"Using Notion page ID: {NOTION_PAGE_ID}") | |
| print("Make sure the Notion page is shared with your integration.") | |
| demo.launch() |