Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,64 +1,63 @@
|
|
1 |
import gradio as gr
|
2 |
-
from
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
response = ""
|
29 |
-
|
30 |
-
for message in client.chat_completion(
|
31 |
-
messages,
|
32 |
-
max_tokens=max_tokens,
|
33 |
-
stream=True,
|
34 |
-
temperature=temperature,
|
35 |
-
top_p=top_p,
|
36 |
-
):
|
37 |
-
token = message.choices[0].delta.content
|
38 |
-
|
39 |
-
response += token
|
40 |
-
yield response
|
41 |
-
|
42 |
-
|
43 |
-
"""
|
44 |
-
For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
|
45 |
-
"""
|
46 |
-
demo = gr.ChatInterface(
|
47 |
-
respond,
|
48 |
-
additional_inputs=[
|
49 |
-
gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
|
50 |
-
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
|
51 |
-
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
|
52 |
-
gr.Slider(
|
53 |
-
minimum=0.1,
|
54 |
-
maximum=1.0,
|
55 |
-
value=0.95,
|
56 |
-
step=0.05,
|
57 |
-
label="Top-p (nucleus sampling)",
|
58 |
),
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import gradio as gr
|
2 |
+
from composio_llamaindex import ComposioToolSet, App, Action
|
3 |
+
from llama_index.core.agent import FunctionCallingAgentWorker
|
4 |
+
from llama_index.core.llms import ChatMessage
|
5 |
+
from llama_index.llms.openai import OpenAI
|
6 |
+
from dotenv import load_dotenv
|
7 |
+
|
8 |
+
# Load environment variables
|
9 |
+
load_dotenv()
|
10 |
+
|
11 |
+
# Initialize ComposioToolSet and OpenAI LLM
|
12 |
+
toolset = ComposioToolSet(api_key=os.getenv('COMPOSIO_API_KEY'))
|
13 |
+
tools = toolset.get_tools(apps=[App.TWITTER])
|
14 |
+
|
15 |
+
llm = OpenAI(model="gpt-4o", api_key=os.getenv('OPENAI_API_KEY'))
|
16 |
+
|
17 |
+
# Set up prefix messages for the agent
|
18 |
+
prefix_messages = [
|
19 |
+
ChatMessage(
|
20 |
+
role="system",
|
21 |
+
content=(
|
22 |
+
f"""
|
23 |
+
You are a Twitter wrapped generator. Based on the Twitter username provided, analyze the user's profile, recent tweets, and engagement data.
|
24 |
+
Create a personalized "Twitter Wrapped" summary highlighting their top tweets, most engaging content, follower growth, and other key insights.
|
25 |
+
Generate the output in a structured JSON format that can be easily parsed programmatically. Include fields like "top_tweets", "engagement_stats", "follower_growth", and "summary_sheet_link".
|
26 |
+
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
),
|
28 |
+
)
|
29 |
+
]
|
30 |
+
|
31 |
+
# Initialize the agent
|
32 |
+
agent = FunctionCallingAgentWorker(
|
33 |
+
tools=tools,
|
34 |
+
llm=llm,
|
35 |
+
prefix_messages=prefix_messages,
|
36 |
+
max_function_calls=10,
|
37 |
+
allow_parallel_tool_calls=False,
|
38 |
+
verbose=True,
|
39 |
+
).as_agent()
|
40 |
+
|
41 |
+
def generate_wrapped(username):
|
42 |
+
"""
|
43 |
+
Function to generate a "Twitter Wrapped" summary based on the Twitter username provided by the user.
|
44 |
+
"""
|
45 |
+
user_input = f"Create a Twitter Wrapped summary for the username: {username}"
|
46 |
+
response = agent.chat(user_input)
|
47 |
+
return response
|
48 |
+
|
49 |
+
# Create Gradio interface
|
50 |
+
with gr.Blocks() as demo:
|
51 |
+
gr.Markdown("""### Twitter Wrapped Generator
|
52 |
+
Enter a Twitter username below to generate your personalized Twitter Wrapped summary.
|
53 |
+
""")
|
54 |
+
|
55 |
+
username_input = gr.Textbox(label="Twitter Username", placeholder="e.g., @elonmusk")
|
56 |
+
output = gr.Textbox(label="Output", placeholder="Your Twitter Wrapped summary and Google Sheet link will appear here.", lines=10)
|
57 |
+
|
58 |
+
generate_button = gr.Button("Generate Wrapped")
|
59 |
+
|
60 |
+
generate_button.click(fn=generate_wrapped, inputs=username_input, outputs=output)
|
61 |
+
|
62 |
+
# Launch the Gradio app
|
63 |
+
demo.launch()
|