parent
2cf86acd6d
commit
36492c1e0f
@ -0,0 +1,88 @@
|
||||
"""
|
||||
pip3 install -U swarms
|
||||
pip3 install -U chromadb
|
||||
|
||||
|
||||
|
||||
task -> Understanding Agent [understands the problem better] -> Summarize of the conversation -> research agent that has access to internt perplexity -> final rag agent
|
||||
|
||||
|
||||
# Todo
|
||||
- Use better llm -- gpt4, claude, gemini
|
||||
- Make better system prompt
|
||||
- Populate the vector database with q/a of past history
|
||||
"""
|
||||
|
||||
from swarms import Agent, llama3Hosted, AgentRearrange
|
||||
from pydantic import BaseModel
|
||||
from playground.memory.chromadb_example import ChromaDB
|
||||
|
||||
# Initialize the language model agent (e.g., GPT-3)
|
||||
llm = llama3Hosted(max_tokens=3000)
|
||||
|
||||
|
||||
# Initialize Memory
|
||||
memory = ChromaDB(output_dir="swarm_mechanic", n_results=2, verbose=True)
|
||||
|
||||
|
||||
# Perplexity Agent
|
||||
# def webbrowser(query: str):
|
||||
# # put your logic here
|
||||
# return query
|
||||
|
||||
|
||||
# Output
|
||||
class EvaluatorOuputSchema(BaseModel):
|
||||
evaluation: str = None
|
||||
question_for_user: str = None
|
||||
|
||||
|
||||
# Initialize agents for individual tasks
|
||||
agent1 = Agent(
|
||||
agent_name="Summary ++ Hightlighter Agent",
|
||||
system_prompt="Generate a simple, direct, and reliable summary of the input task alongside the highlights",
|
||||
llm=llm,
|
||||
max_loops=1,
|
||||
)
|
||||
|
||||
# Point out that if their are details that can be added
|
||||
# What do you mean? What lights do you have turned on.
|
||||
agent2 = Agent(
|
||||
agent_name="Evaluator",
|
||||
system_prompt="Summarize and evaluate the summary and the users demand, always be interested in learning more about the situation with extreme precision.",
|
||||
llm=llm,
|
||||
max_loops=1,
|
||||
list_base_models=[EvaluatorOuputSchema],
|
||||
)
|
||||
|
||||
# research_agent = Agent(
|
||||
# agent_name="Research Agent",
|
||||
# system_prompt="Summarize and evaluate the summary and the users demand, always be interested in learning more about the situation with extreme precision.",
|
||||
# llm=llm,
|
||||
# max_loops=1,
|
||||
# tool = [webbrowser]
|
||||
# )
|
||||
|
||||
agent3 = Agent(
|
||||
agent_name="Summarizer Agent",
|
||||
system_prompt="Summarize the entire history of the interaction",
|
||||
llm=llm,
|
||||
max_loops=1,
|
||||
long_term_memory=memory,
|
||||
)
|
||||
|
||||
|
||||
# Task
|
||||
task = "Car Model: S-Class, Car Year: 2020, Car Mileage: 10000, all my service lights are on, what should i do?"
|
||||
|
||||
|
||||
# Swarm
|
||||
swarm = AgentRearrange(
|
||||
agents=[agent1, agent2, agent3],
|
||||
flow=f"{agent1.agent_name} -> {agent2.agent_name} -> {agent3.agent_name}",
|
||||
memory_system=memory,
|
||||
)
|
||||
|
||||
# Task
|
||||
out = swarm.run(task)
|
||||
print(out)
|
@ -1,15 +0,0 @@
|
||||
from swarms.memory import ChromaDB
|
||||
|
||||
# Initialize the memory
|
||||
chroma = ChromaDB(
|
||||
metric="cosine",
|
||||
limit_tokens=1000,
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Add text
|
||||
text = "This is a test"
|
||||
chroma.add(text)
|
||||
|
||||
# Search for similar text
|
||||
similar_text = chroma.query(text)
|
@ -0,0 +1,73 @@
|
||||
import timeit
|
||||
from typing import Callable, Iterable, List, Optional, TypeVar
|
||||
|
||||
T = TypeVar("T")
|
||||
R = TypeVar("R")
|
||||
|
||||
|
||||
def optimized_loop(
|
||||
data: Iterable[T],
|
||||
operation: Callable[[T], R],
|
||||
condition: Optional[Callable[[T], bool]] = None,
|
||||
) -> List[R]:
|
||||
"""
|
||||
Perform an optimized loop over the input data, applying an operation to each element.
|
||||
Optionally, filter elements based on a condition before applying the operation.
|
||||
|
||||
Args:
|
||||
data (Iterable[T]): The input data to be processed. Can be any iterable type.
|
||||
operation (Callable[[T], R]): The operation to be applied to each element.
|
||||
condition (Optional[Callable[[T], bool]]): An optional condition to filter elements before applying the operation.
|
||||
|
||||
Returns:
|
||||
List[R]: The result of applying the operation to the filtered elements.
|
||||
"""
|
||||
if condition is not None:
|
||||
return [operation(x) for x in data if condition(x)]
|
||||
else:
|
||||
return [operation(x) for x in data]
|
||||
|
||||
|
||||
# Sample data, operation, and condition for benchmarking
|
||||
data = list(range(1000000))
|
||||
operation = lambda x: x * x
|
||||
condition = lambda x: x % 2 == 0
|
||||
|
||||
|
||||
# Define a traditional loop for comparison
|
||||
def traditional_loop(data: Iterable[int]) -> List[int]:
|
||||
result = []
|
||||
for x in data:
|
||||
if x % 2 == 0:
|
||||
result.append(x * x)
|
||||
return result
|
||||
|
||||
|
||||
# Define a benchmarking function
|
||||
def benchmark():
|
||||
# Time the execution of the optimized loop
|
||||
optimized_time = timeit.timeit(
|
||||
stmt="optimized_loop(data, operation, condition)",
|
||||
setup="from __main__ import optimized_loop, data, operation, condition",
|
||||
globals=globals(),
|
||||
number=10,
|
||||
)
|
||||
|
||||
print(f"Optimized loop execution time: {optimized_time:.4f} seconds")
|
||||
|
||||
# Time the execution of the traditional loop for comparison
|
||||
traditional_time = timeit.timeit(
|
||||
stmt="traditional_loop(data)",
|
||||
setup="from __main__ import traditional_loop, data",
|
||||
globals=globals(),
|
||||
number=10,
|
||||
)
|
||||
|
||||
print(
|
||||
f"Traditional loop execution time: {traditional_time:.4f} seconds"
|
||||
)
|
||||
|
||||
|
||||
# Run the benchmark
|
||||
if __name__ == "__main__":
|
||||
benchmark()
|
Loading…
Reference in new issue