File size: 4,331 Bytes
7200ed6
147252c
 
 
cf348fc
 
d2ca388
147252c
 
 
 
 
 
 
 
 
e11008c
 
 
 
a8d0107
 
e11008c
147252c
e11008c
 
 
 
c3d6c02
 
e11008c
147252c
 
 
 
 
 
 
 
 
 
 
a8d0107
147252c
 
 
 
 
 
 
 
 
 
 
 
 
 
288fd07
147252c
 
 
 
 
 
1d10ce8
147252c
 
 
 
 
 
92cc30f
 
d2ca388
 
92cc30f
d2ca388
 
 
 
8dd523e
d2ca388
 
92cc30f
d2ca388
 
 
 
8dd523e
92cc30f
 
 
 
 
 
 
 
 
 
d2ca388
92cc30f
d2ca388
 
8dd523e
d2ca388
92cc30f
d2ca388
 
8dd523e
 
d2ca388
 
 
 
 
 
8dd523e
 
d2ca388
 
 
92cc30f
d2ca388
92cc30f
26c7910
d2ca388
 
92cc30f
71a99b7
 
d2ca388
147252c
 
1
2
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import os
import gradio as gr

from crewai import Agent, Task, Crew, Process

os.environ["OPENAI_API_KEY"] = "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"

from crewai import Agent, Task, Crew, Process

def run_therapy_session(group_size, topic):
    participant_names = ['Alice', 'Bob', 'Charlie', 'Diana', 'Ethan', 'Fiona', 'George', 'Hannah', 'Ivan']
    
    if group_size > len(participant_names) + 1:  # +1 for the therapist
        return "Group size exceeds the number of available participant names."

    # Create the therapist agent
    dr_smith = Agent(
        role='Therapist', 
        goal='Facilitate a supportive group discussion', 
        backstory='An experienced therapist specializing in group dynamics.', 
        verbose=True,
        allow_delegation=False
    )
    # Create participant agents
    participants = [Agent(
        role='Group Therapy Participant', 
        goal='Participate in group therapy', 
        backstory=f'{name} is interested in sharing and learning from the group.',
        verbose=True,
        allow_delegation=False)
        for name in participant_names[:group_size - 1]]
    participants.append(dr_smith)  # Add the therapist

    # Define tasks for each participant
    tasks = [Task(description=f'{name} discusses the topic: {topic}', agent=participant)
             for name, participant in zip(participant_names, participants)]

    # Instantiate the crew with a sequential process
    therapy_crew = Crew(
        agents=participants,
        tasks=tasks,
        process=Process.sequential,
        verbose=True
    )

    # Start the group therapy session
    result = therapy_crew.kickoff()

    # Simulating a conversation (placeholder, adjust based on CrewAI capabilities)
    conversation = "\n".join([f"{name}: [Participant's thoughts on '{topic}']" for name in participant_names[:group_size-1] + ["Dr. Smith"]])

    return conversation

# Gradio interface
iface = gr.Interface(
    fn=run_therapy_session,
    inputs=[
        gr.Slider(minimum=2, maximum=10, label="Group Size", value=4),
        gr.Textbox(lines=2, placeholder="Enter a topic or question for discussion", label="Discussion Topic")
    ],
    outputs="text"
)

# Launch the interface
iface.launch(share=True)



# Choosing topics

'''
def run_crew(topic):
    # Define your agents
    researcher = Agent(
        role='Senior Research Analyst',
        goal='Uncover cutting-edge developments',
        backstory="""You are a Senior Research Analyst at a leading tech think tank...""",
        verbose=True,
        allow_delegation=False
    )

    writer = Agent(
        role='Tech Content Strategist',
        goal='Craft compelling content',
        backstory="""You are a renowned Tech Content Strategist...""",
        verbose=True,
        allow_delegation=False
    )

    # Assign tasks based on the selected topic
    if topic == "write short story":
        task_description = "Write a captivating short story about a journey through a futuristic city."
    elif topic == "write an article":
        task_description = "Compose an insightful article on the latest trends in technology."
    elif topic == "analyze stock":
        task_description = "Perform a detailed analysis of recent trends in the stock market."
    elif topic == "create a vacation":
        task_description = "Plan a perfect vacation itinerary for a family trip to Europe."

    task1 = Task(
        description=task_description,
        agent=researcher
    )

    task2 = Task(
        description=f"Use the findings from the researcher's task to develop a comprehensive report on '{topic}'.",
        agent=writer
    )

    # Instantiate your crew with a sequential process
    crew = Crew(
        agents=[researcher, writer],
        tasks=[task1, task2],
        verbose=2,
        process=Process.sequential
    )

    # Get your crew to work!
    result = crew.kickoff()
    return result

# Gradio Interface with Dropdown for Topic Selection
iface = gr.Interface(
    fn=run_crew,
    inputs=gr.Dropdown(choices=["write short story", "write an article", "analyze stock", "create a vacation"], label="Select Topic"),
    outputs="text",
    title="AI Research and Writing Crew",
    description="Select a topic and click the button to run the crew of AI agents."
)

iface.launch()

'''