From 30824ea00d518c5dfb7d1f99cc07274a3aac4765 Mon Sep 17 00:00:00 2001 From: Kye Gomez Date: Fri, 23 Feb 2024 07:57:27 +0000 Subject: [PATCH 1/8] add examples for every models --- examples/README.md | 0 .../Screenshot from 2024-02-20 05-55-34.png | Bin 0 -> 115988 bytes examples/example_GPT4vison.py | 14 +++ examples/example_QwenVLMultiModal.py | 14 +++ examples/example_agent.py | 29 +++++ examples/example_anthropic.py | 13 +++ examples/example_concurrentWorkflow.py | 24 +++++ examples/example_dalle3.py | 14 +++ examples/example_huggingFaceLLM.py | 18 ++++ examples/example_idefics.py | 33 ++++++ examples/example_kosmos.py | 10 ++ examples/example_logistics.py | 100 ++++++++++++++++++ examples/example_mixtral.py | 10 ++ examples/example_recursiveWorkflow.py | 26 +++++ examples/example_sequentialWorkflow.py | 46 ++++++++ examples/example_simple_conversation_agent.py | 43 ++++++++ examples/example_swarmNetwork.py | 44 ++++++++ examples/example_swarms.md | 25 +++++ examples/example_task.py | 53 ++++++++++ examples/example_toolgAgent.py | 30 ++++++ examples/example_worker.py | 33 ++++++ examples/example_zeroscopeTV.py | 12 +++ test_output.py | 4 + 23 files changed, 595 insertions(+) create mode 100644 examples/README.md create mode 100644 examples/Screenshot from 2024-02-20 05-55-34.png create mode 100644 examples/example_GPT4vison.py create mode 100644 examples/example_QwenVLMultiModal.py create mode 100644 examples/example_agent.py create mode 100644 examples/example_anthropic.py create mode 100644 examples/example_concurrentWorkflow.py create mode 100644 examples/example_dalle3.py create mode 100644 examples/example_huggingFaceLLM.py create mode 100644 examples/example_idefics.py create mode 100644 examples/example_kosmos.py create mode 100644 examples/example_logistics.py create mode 100644 examples/example_mixtral.py create mode 100644 examples/example_recursiveWorkflow.py create mode 100644 examples/example_sequentialWorkflow.py create mode 100644 examples/example_simple_conversation_agent.py create mode 100644 examples/example_swarmNetwork.py create mode 100644 examples/example_swarms.md create mode 100644 examples/example_task.py create mode 100644 examples/example_toolgAgent.py create mode 100644 examples/example_worker.py create mode 100644 examples/example_zeroscopeTV.py create mode 100644 test_output.py diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 00000000..e69de29b diff --git a/examples/Screenshot from 2024-02-20 05-55-34.png b/examples/Screenshot from 2024-02-20 05-55-34.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f469942967c830aac81fd06fe2034629b8431f GIT binary patch literal 115988 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

5U4+zE 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 AM*si- literal 0 HcmV?d00001 diff --git a/examples/example_GPT4vison.py b/examples/example_GPT4vison.py new file mode 100644 index 00000000..e2c383bc --- /dev/null +++ b/examples/example_GPT4vison.py @@ -0,0 +1,14 @@ +from swarms import GPT4VisionAPI + +# Initialize with default API key and custom max_tokens +api = GPT4VisionAPI(max_tokens=1000) + +# Define the task and image URL +task = "Describe the scene in the image." +img = "/home/kye/.swarms/swarms/examples/Screenshot from 2024-02-20 05-55-34.png" + +# Run the GPT-4 Vision model +response = api.run(task, img) + +# Print the model's response +print(response) diff --git a/examples/example_QwenVLMultiModal.py b/examples/example_QwenVLMultiModal.py new file mode 100644 index 00000000..f338a508 --- /dev/null +++ b/examples/example_QwenVLMultiModal.py @@ -0,0 +1,14 @@ +from swarms import QwenVLMultiModal + +# Instantiate the QwenVLMultiModal model +model = QwenVLMultiModal( + model_name="Qwen/Qwen-VL-Chat", + device="cuda", + quantize=True, +) + +# Run the model +response = model("Hello, how are you?", "https://example.com/image.jpg") + +# Print the response +print(response) diff --git a/examples/example_agent.py b/examples/example_agent.py new file mode 100644 index 00000000..85b3da4b --- /dev/null +++ b/examples/example_agent.py @@ -0,0 +1,29 @@ +import os +import sys + +from dotenv import load_dotenv + +# Import the OpenAIChat model and the Agent struct +from swarms import OpenAIChat, Agent + +# Load the environment variables +load_dotenv() + +# Get the API key from the environment +api_key = os.environ.get("OPENAI_API_KEY") + +# Initialize the language model +llm = OpenAIChat( + temperature=0.5, model_name="gpt-4", openai_api_key=api_key, max_tokens=4000 +) + + +print(f'this is a test msg for stdout and stderr: {sys.stdout}, {sys.stderr}') + +## Initialize the workflow +agent = Agent(llm=llm, max_loops=1, autosave=True, dashboard=True) + +# Run the workflow on a task +out = agent.run("Generate a 10,000 word blog on health and wellness.") + +print(out) diff --git a/examples/example_anthropic.py b/examples/example_anthropic.py new file mode 100644 index 00000000..3414214f --- /dev/null +++ b/examples/example_anthropic.py @@ -0,0 +1,13 @@ +# Import necessary modules and classes +from swarms.models import Anthropic + +# Initialize an instance of the Anthropic class +model = Anthropic(anthropic_api_key="") + +# Using the run method +# completion_1 = model.run("What is the capital of France?") +# print(completion_1) + +# Using the __call__ method +completion_2 = model("How far is the moon from the earth?", stop=["miles", "km"]) +print(completion_2) diff --git a/examples/example_concurrentWorkflow.py b/examples/example_concurrentWorkflow.py new file mode 100644 index 00000000..cc1e3a2f --- /dev/null +++ b/examples/example_concurrentWorkflow.py @@ -0,0 +1,24 @@ +import os +from dotenv import load_dotenv +from swarms import OpenAIChat, Task, ConcurrentWorkflow, Agent + +# Load environment variables from .env file +load_dotenv() + +# Load environment variables +llm = OpenAIChat(openai_api_key=os.getenv("OPENAI_API_KEY")) +agent = Agent(llm=llm, max_loops=1) + +# Create a workflow +workflow = ConcurrentWorkflow(max_workers=5) + +# Create tasks +task1 = Task(agent, "What's the weather in miami") +task2 = Task(agent, "What's the weather in new york") +task3 = Task(agent, "What's the weather in london") + +# Add tasks to the workflow +workflow.add(tasks=[task1, task2, task3]) + +# Run the workflow +workflow.run() diff --git a/examples/example_dalle3.py b/examples/example_dalle3.py new file mode 100644 index 00000000..1aae1f53 --- /dev/null +++ b/examples/example_dalle3.py @@ -0,0 +1,14 @@ +'''from swarms.models import Dalle3 + +# Create an instance of the Dalle3 class with high quality +dalle3 = Dalle3(quality="high") + +# Define a text prompt +task = "A high-quality image of a sunset" + +# Generate a high-quality image from the text prompt +image_url = dalle3(task) + +# Print the generated image URL +print(image_url) +''' \ No newline at end of file diff --git a/examples/example_huggingFaceLLM.py b/examples/example_huggingFaceLLM.py new file mode 100644 index 00000000..64c08621 --- /dev/null +++ b/examples/example_huggingFaceLLM.py @@ -0,0 +1,18 @@ +from swarms.models import HuggingfaceLLM + +# Initialize with custom configuration +custom_config = { + "quantize": True, + "quantization_config": {"load_in_4bit": True}, + "verbose": True, +} +inference = HuggingfaceLLM( + model_id="NousResearch/Nous-Hermes-2-Vision-Alpha", **custom_config +) + +# Generate text based on a prompt +prompt_text = ( + "Create a list of known biggest risks of structural collapse with references" +) +generated_text = inference(prompt_text) +print(generated_text) diff --git a/examples/example_idefics.py b/examples/example_idefics.py new file mode 100644 index 00000000..ea36ba77 --- /dev/null +++ b/examples/example_idefics.py @@ -0,0 +1,33 @@ +# Import the idefics model from the swarms.models module +from swarms.models import Idefics + +# Create an instance of the idefics model +model = Idefics() + +# Define user input with an image URL and chat with the model +user_input = ( + "User: What is in this image?" + " https://upload.wikimedia.org/wikipedia/commons/8/86/Id%C3%A9fix.JPG" +) +response = model.chat(user_input) +print(response) + +# Define another user input with an image URL and chat with the model +user_input = ( + "User: And who is that?" + " https://static.wikia.nocookie.net/asterix/images/2/25/R22b.gif/revision/latest?cb=20110815073052" +) +response = model.chat(user_input) +print(response) + +# Set the checkpoint of the model to "new_checkpoint" +model.set_checkpoint("new_checkpoint") + +# Set the device of the model to "cpu" +model.set_device("cpu") + +# Set the maximum length of the chat to 200 +model.set_max_length(200) + +# Clear the chat history of the model +model.clear_chat_history() diff --git a/examples/example_kosmos.py b/examples/example_kosmos.py new file mode 100644 index 00000000..dbfd108f --- /dev/null +++ b/examples/example_kosmos.py @@ -0,0 +1,10 @@ +from swarms import Kosmos + +# Initialize the model +model = Kosmos() + +# Generate +out = model.run("Analyze the reciepts in this image", "docs.jpg") + +# Print the output +print(out) diff --git a/examples/example_logistics.py b/examples/example_logistics.py new file mode 100644 index 00000000..035ca9e5 --- /dev/null +++ b/examples/example_logistics.py @@ -0,0 +1,100 @@ +from swarms.structs import Agent +import os +from dotenv import load_dotenv +from swarms.models import GPT4VisionAPI +from swarms.prompts.logistics import ( + Health_Security_Agent_Prompt, + Quality_Control_Agent_Prompt, + Productivity_Agent_Prompt, + Safety_Agent_Prompt, + Security_Agent_Prompt, + Sustainability_Agent_Prompt, + Efficiency_Agent_Prompt, +) + +# Load ENV +load_dotenv() +api_key = os.getenv("OPENAI_API_KEY") + +# GPT4VisionAPI +llm = GPT4VisionAPI(openai_api_key=api_key) + +# Image for analysis +factory_image = "factory_image1.jpg" + +# Initialize agents with respective prompts +health_security_agent = Agent( + llm=llm, + sop=Health_Security_Agent_Prompt, + max_loops=1, + multi_modal=True, +) + +# Quality control agent +quality_control_agent = Agent( + llm=llm, + sop=Quality_Control_Agent_Prompt, + max_loops=1, + multi_modal=True, +) + + +# Productivity Agent +productivity_agent = Agent( + llm=llm, + sop=Productivity_Agent_Prompt, + max_loops=1, + multi_modal=True, +) + +# Initiailize safety agent +safety_agent = Agent(llm=llm, sop=Safety_Agent_Prompt, max_loops=1, multi_modal=True) + +# Init the security agent +security_agent = Agent( + llm=llm, sop=Security_Agent_Prompt, max_loops=1, multi_modal=True +) + + +# Initialize sustainability agent +sustainability_agent = Agent( + llm=llm, + sop=Sustainability_Agent_Prompt, + max_loops=1, + multi_modal=True, +) + + +# Initialize efficincy agent +efficiency_agent = Agent( + llm=llm, + sop=Efficiency_Agent_Prompt, + max_loops=1, + multi_modal=True, +) + +# Run agents with respective tasks on the same image +health_analysis = health_security_agent.run( + "Analyze the safety of this factory", factory_image +) +quality_analysis = quality_control_agent.run( + "Examine product quality in the factory", factory_image +) +productivity_analysis = productivity_agent.run( + "Evaluate factory productivity", factory_image +) +safety_analysis = safety_agent.run( + "Inspect the factory's adherence to safety standards", + factory_image, +) +security_analysis = security_agent.run( + "Assess the factory's security measures and systems", + factory_image, +) +sustainability_analysis = sustainability_agent.run( + "Examine the factory's sustainability practices", factory_image +) +efficiency_analysis = efficiency_agent.run( + "Analyze the efficiency of the factory's manufacturing process", + factory_image, +) diff --git a/examples/example_mixtral.py b/examples/example_mixtral.py new file mode 100644 index 00000000..e1fddb05 --- /dev/null +++ b/examples/example_mixtral.py @@ -0,0 +1,10 @@ +from swarms.models import Mixtral + +# Initialize the Mixtral model with 4 bit and flash attention! +mixtral = Mixtral(load_in_4bit=True, use_flash_attention_2=True) + +# Generate text for a simple task +generated_text = mixtral.run("Generate a creative story.") + +# Print the generated text +print(generated_text) diff --git a/examples/example_recursiveWorkflow.py b/examples/example_recursiveWorkflow.py new file mode 100644 index 00000000..9760b606 --- /dev/null +++ b/examples/example_recursiveWorkflow.py @@ -0,0 +1,26 @@ +import os +from dotenv import load_dotenv +from swarms import OpenAIChat, Task, RecursiveWorkflow, Agent + +# Load environment variables from .env file +load_dotenv() + +# Load environment variables +llm = OpenAIChat(openai_api_key=os.getenv("OPENAI_API_KEY")) +agent = Agent(llm=llm, max_loops=1) + +# Create a workflow +workflow = RecursiveWorkflow(stop_token="") + +# Create tasks +task1 = Task(agent, "What's the weather in miami") +task2 = Task(agent, "What's the weather in new york") +task3 = Task(agent, "What's the weather in london") + +# Add tasks to the workflow +workflow.add(task1) +workflow.add(task2) +workflow.add(task3) + +# Run the workflow +workflow.run() diff --git a/examples/example_sequentialWorkflow.py b/examples/example_sequentialWorkflow.py new file mode 100644 index 00000000..efc5890f --- /dev/null +++ b/examples/example_sequentialWorkflow.py @@ -0,0 +1,46 @@ +import os +from swarms import OpenAIChat, Agent, SequentialWorkflow +from dotenv import load_dotenv + +load_dotenv() + +# Load the environment variables +api_key = os.getenv("OPENAI_API_KEY") + + +# Initialize the language agent +llm = OpenAIChat( + temperature=0.5, model_name="gpt-4", openai_api_key=api_key, max_tokens=4000 +) + + +# Initialize the agent with the language agent +agent1 = Agent(llm=llm, max_loops=1) + +# Create another agent for a different task +agent2 = Agent(llm=llm, max_loops=1) + +# Create another agent for a different task +agent3 = Agent(llm=llm, max_loops=1) + +# Create the workflow +workflow = SequentialWorkflow(max_loops=1) + +# Add tasks to the workflow +workflow.add( + agent1, + "Generate a 10,000 word blog on health and wellness.", +) + +# Suppose the next task takes the output of the first task as input +workflow.add( + agent2, + "Summarize the generated blog", +) + +# Run the workflow +workflow.run() + +# Output the results +for task in workflow.tasks: + print(f"Task: {task.description}, Result: {task.result}") diff --git a/examples/example_simple_conversation_agent.py b/examples/example_simple_conversation_agent.py new file mode 100644 index 00000000..25c5635e --- /dev/null +++ b/examples/example_simple_conversation_agent.py @@ -0,0 +1,43 @@ +import os + +from dotenv import load_dotenv + +from swarms import ( + OpenAIChat, + Conversation, +) + +conv = Conversation( + time_enabled=True, +) + +# Load the environment variables +load_dotenv() + +# Get the API key from the environment +api_key = os.environ.get("OPENAI_API_KEY") + +# Initialize the language model +llm = OpenAIChat(openai_api_key=api_key, model_name="gpt-4") + + +# Run the language model in a loop +def interactive_conversation(llm): + conv = Conversation() + while True: + user_input = input("User: ") + conv.add("user", user_input) + if user_input.lower() == "quit": + break + task = conv.return_history_as_string() # Get the conversation history + out = llm(task) + conv.add("assistant", out) + print( + f"Assistant: {out}", + ) + conv.display_conversation() + conv.export_conversation("conversation.txt") + + +# Replace with your LLM instance +interactive_conversation(llm) diff --git a/examples/example_swarmNetwork.py b/examples/example_swarmNetwork.py new file mode 100644 index 00000000..f2501c4c --- /dev/null +++ b/examples/example_swarmNetwork.py @@ -0,0 +1,44 @@ +import os + +from dotenv import load_dotenv + +# Import the OpenAIChat model and the Agent struct +from swarms import OpenAIChat, Agent, SwarmNetwork + +# Load the environment variables +load_dotenv() + +# Get the API key from the environment +api_key = os.environ.get("OPENAI_API_KEY") + +# Initialize the language model +llm = OpenAIChat( + temperature=0.5, + openai_api_key=api_key, +) + +## Initialize the workflow +agent = Agent(llm=llm, max_loops=1, agent_name="Social Media Manager") +agent2 = Agent(llm=llm, max_loops=1, agent_name=" Product Manager") +agent3 = Agent(llm=llm, max_loops=1, agent_name="SEO Manager") + + +# Load the swarmnet with the agents +swarmnet = SwarmNetwork( + agents=[agent, agent2, agent3], +) + +# List the agents in the swarm network +out = swarmnet.list_agents() +print(out) + +# Run the workflow on a task +out = swarmnet.run_single_agent( + agent2.id, "Generate a 10,000 word blog on health and wellness." +) +print(out) + + +# Run all the agents in the swarm network on a task +out = swarmnet.run_many_agents("Generate a 10,000 word blog on health and wellness.") +print(out) diff --git a/examples/example_swarms.md b/examples/example_swarms.md new file mode 100644 index 00000000..9b46a70e --- /dev/null +++ b/examples/example_swarms.md @@ -0,0 +1,25 @@ +hey guys, we out here testing out swarms which is a multi-modal agent +framework which potentially makes all the agents work in a single pot +for instance take an empty pot and place all the known agents in that +pot and output a well structured answer out of it + +that's basically it, we belive that a multi-agent framework beats a single +agent framework which is not really rocket science + +ight first we gotta make sure out evn clean, install python3-pip, +this runs on python3.10 + +our current version of swarms==4.1.0 + +make sure you in a virtual env or conda + +just do + $ python3 -m venv ~/.venv + $ source ~/.venv/bin/active + +then boom we in a virtual env LFG + +now for the best we install swarms + + $ pip3 instll --upgrade swamrs==4.1.0 + diff --git a/examples/example_task.py b/examples/example_task.py new file mode 100644 index 00000000..c2ade96a --- /dev/null +++ b/examples/example_task.py @@ -0,0 +1,53 @@ +import os + +from dotenv import load_dotenv + +from swarms.structs import Agent, OpenAIChat, Task + +# Load the environment variables +load_dotenv() + + +# Define a function to be used as the action +def my_action(): + print("Action executed") + + +# Define a function to be used as the condition +def my_condition(): + print("Condition checked") + return True + + +# Create an agent +agent = Agent( + llm=OpenAIChat(openai_api_key=os.environ["OPENAI_API_KEY"]), + max_loops=1, + dashboard=False, +) + +# Create a task +task = Task( + description=( + "Generate a report on the top 3 biggest expenses for small" + " businesses and how businesses can save 20%" + ), + agent=agent, +) + +# Set the action and condition +task.set_action(my_action) +task.set_condition(my_condition) + +# Execute the task +print("Executing task...") +task.run() + +# Check if the task is completed +if task.is_completed(): + print("Task completed") +else: + print("Task not completed") + +# Output the result of the task +print(f"Task result: {task.result}") diff --git a/examples/example_toolgAgent.py b/examples/example_toolgAgent.py new file mode 100644 index 00000000..f22ab8b6 --- /dev/null +++ b/examples/example_toolgAgent.py @@ -0,0 +1,30 @@ +# Import necessary libraries +from transformers import AutoModelForCausalLM, AutoTokenizer +from swarms import ToolAgent + +# Load the pre-trained model and tokenizer +model = AutoModelForCausalLM.from_pretrained("databricks/dolly-v2-12b") +tokenizer = AutoTokenizer.from_pretrained("databricks/dolly-v2-12b") + +# Define a JSON schema for person's information +json_schema = { + "type": "object", + "properties": { + "name": {"type": "string"}, + "age": {"type": "number"}, + "is_student": {"type": "boolean"}, + "courses": {"type": "array", "items": {"type": "string"}}, + }, +} + +# Define the task to generate a person's information +task = "Generate a person's information based on the following schema:" + +# Create an instance of the ToolAgent class +agent = ToolAgent(model=model, tokenizer=tokenizer, json_schema=json_schema) + +# Run the agent to generate the person's information +generated_data = agent.run(task) + +# Print the generated data +print(generated_data) diff --git a/examples/example_worker.py b/examples/example_worker.py new file mode 100644 index 00000000..c6a33512 --- /dev/null +++ b/examples/example_worker.py @@ -0,0 +1,33 @@ +# Importing necessary modules +import os +from dotenv import load_dotenv +from swarms import Worker, OpenAIChat, tool + +# Loading environment variables from .env file +load_dotenv() + +# Retrieving the OpenAI API key from environment variables +api_key = os.getenv("OPENAI_API_KEY") + + +# Create a tool +@tool +def search_api(query: str): + pass + + +# Creating a Worker instance +worker = Worker( + name="My Worker", + role="Worker", + human_in_the_loop=False, + tools=[search_api], + temperature=0.5, + llm=OpenAIChat(openai_api_key=api_key), +) + +# Running the worker with a prompt +out = worker.run("Hello, how are you? Create an image of how your are doing!") + +# Printing the output +print(out) diff --git a/examples/example_zeroscopeTV.py b/examples/example_zeroscopeTV.py new file mode 100644 index 00000000..e4fb8264 --- /dev/null +++ b/examples/example_zeroscopeTV.py @@ -0,0 +1,12 @@ +# Import the model +from swarms import ZeroscopeTTV + +# Initialize the model +zeroscope = ZeroscopeTTV() + +# Specify the task +task = "A person is walking on the street." + +# Generate the video! +video_path = zeroscope(task) +print(video_path) diff --git a/test_output.py b/test_output.py new file mode 100644 index 00000000..f919cb98 --- /dev/null +++ b/test_output.py @@ -0,0 +1,4 @@ +import sys + +print('this is the standard output') +print('This is the standard error', file=sys.stderr) \ No newline at end of file From fe5c446ac2cf9986e1da5fe0782221bbfc66a498 Mon Sep 17 00:00:00 2001 From: vyomakesh09 Date: Sun, 25 Feb 2024 02:47:16 +0000 Subject: [PATCH 2/8] add examples to every model/ debug huggingface llm --- ...xample_concurrentWorkflow.py => example_concurrentworkflow.py} | 0 examples/{example_GPT4vison.py => example_gpt4vison.py} | 0 examples/{example_huggingFaceLLM.py => example_huggingfacellm.py} | 0 .../{example_QwenVLMultiModal.py => example_qwenvlmultimodal.py} | 0 ...{example_recursiveWorkflow.py => example_recursiveworkflow.py} | 0 ...xample_sequentialWorkflow.py => example_sequentialworkflow.py} | 0 examples/{example_swarmNetwork.py => example_swarmnetwork.py} | 0 examples/{example_toolgAgent.py => example_toolagent.py} | 0 examples/{example_zeroscopeTV.py => example_zeroscopetv.py} | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename examples/{example_concurrentWorkflow.py => example_concurrentworkflow.py} (100%) rename examples/{example_GPT4vison.py => example_gpt4vison.py} (100%) rename examples/{example_huggingFaceLLM.py => example_huggingfacellm.py} (100%) rename examples/{example_QwenVLMultiModal.py => example_qwenvlmultimodal.py} (100%) rename examples/{example_recursiveWorkflow.py => example_recursiveworkflow.py} (100%) rename examples/{example_sequentialWorkflow.py => example_sequentialworkflow.py} (100%) rename examples/{example_swarmNetwork.py => example_swarmnetwork.py} (100%) rename examples/{example_toolgAgent.py => example_toolagent.py} (100%) rename examples/{example_zeroscopeTV.py => example_zeroscopetv.py} (100%) diff --git a/examples/example_concurrentWorkflow.py b/examples/example_concurrentworkflow.py similarity index 100% rename from examples/example_concurrentWorkflow.py rename to examples/example_concurrentworkflow.py diff --git a/examples/example_GPT4vison.py b/examples/example_gpt4vison.py similarity index 100% rename from examples/example_GPT4vison.py rename to examples/example_gpt4vison.py diff --git a/examples/example_huggingFaceLLM.py b/examples/example_huggingfacellm.py similarity index 100% rename from examples/example_huggingFaceLLM.py rename to examples/example_huggingfacellm.py diff --git a/examples/example_QwenVLMultiModal.py b/examples/example_qwenvlmultimodal.py similarity index 100% rename from examples/example_QwenVLMultiModal.py rename to examples/example_qwenvlmultimodal.py diff --git a/examples/example_recursiveWorkflow.py b/examples/example_recursiveworkflow.py similarity index 100% rename from examples/example_recursiveWorkflow.py rename to examples/example_recursiveworkflow.py diff --git a/examples/example_sequentialWorkflow.py b/examples/example_sequentialworkflow.py similarity index 100% rename from examples/example_sequentialWorkflow.py rename to examples/example_sequentialworkflow.py diff --git a/examples/example_swarmNetwork.py b/examples/example_swarmnetwork.py similarity index 100% rename from examples/example_swarmNetwork.py rename to examples/example_swarmnetwork.py diff --git a/examples/example_toolgAgent.py b/examples/example_toolagent.py similarity index 100% rename from examples/example_toolgAgent.py rename to examples/example_toolagent.py diff --git a/examples/example_zeroscopeTV.py b/examples/example_zeroscopetv.py similarity index 100% rename from examples/example_zeroscopeTV.py rename to examples/example_zeroscopetv.py From 10028916ee26858764ec6d3012002a6a136ff051 Mon Sep 17 00:00:00 2001 From: vyomakesh09 Date: Sun, 25 Feb 2024 07:49:47 +0000 Subject: [PATCH 3/8] fixed hugging face llm --- examples/example_huggingfacellm.py | 41 +++++++++++++++++++----------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/examples/example_huggingfacellm.py b/examples/example_huggingfacellm.py index 64c08621..ca28df58 100644 --- a/examples/example_huggingfacellm.py +++ b/examples/example_huggingfacellm.py @@ -1,18 +1,29 @@ from swarms.models import HuggingfaceLLM +import torch -# Initialize with custom configuration -custom_config = { - "quantize": True, - "quantization_config": {"load_in_4bit": True}, - "verbose": True, -} -inference = HuggingfaceLLM( - model_id="NousResearch/Nous-Hermes-2-Vision-Alpha", **custom_config -) +try: + inference = HuggingfaceLLM( + model_id="gpt2", + quantize=False, + verbose=True, + ) -# Generate text based on a prompt -prompt_text = ( - "Create a list of known biggest risks of structural collapse with references" -) -generated_text = inference(prompt_text) -print(generated_text) + device = "cuda" if torch.cuda.is_available() else "cpu" + inference.model.to(device) + + prompt_text = "Create a list of known biggest risks of structural collapse with references" + inputs = inference.tokenizer(prompt_text, return_tensors="pt").to(device) + + generated_ids = inference.model.generate( + **inputs, + max_new_tokens=1000, # Adjust the length of the generation + temperature=0.7, # Adjust creativity + top_k=50, # Limits the vocabulary considered at each step + pad_token_id=inference.tokenizer.eos_token_id, + do_sample=True # Enable sampling to utilize temperature + ) + + generated_text = inference.tokenizer.decode(generated_ids[0], skip_special_tokens=True) + print(generated_text) +except Exception as e: + print(f"An error occurred: {e}") From 4b3e1e98575f088a8fc592da6b8b0dae35b93d27 Mon Sep 17 00:00:00 2001 From: vyomakesh09 Date: Sun, 3 Mar 2024 18:48:58 +0000 Subject: [PATCH 4/8] add examples and run cron job --- run_examples.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 run_examples.sh diff --git a/run_examples.sh b/run_examples.sh new file mode 100644 index 00000000..e41c7e1f --- /dev/null +++ b/run_examples.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Define a file to keep track of successfully executed scripts +SUCCESS_LOG="successful_runs.log" + +for f in examples/example_*.py; do + # Check if the script has been logged as successful + if grep -Fxq "$f" "$SUCCESS_LOG"; then + echo "Skipping ${f} as it ran successfully in a previous run." + else + # Run the script if not previously successful + if /home/kye/miniconda3/envs/swarms/bin/python "$f" 2>>errors.txt; then + echo "(${f}) ran successfully without errors." + # Log the successful script execution + echo "$f" >> "$SUCCESS_LOG" + else + echo "Error encountered in ${f}. Check errors.txt for details." + break + fi + fi + echo "##############################################################################" +done From 02ec7bbe43e193dfdf4bc84966ef78a0d9e94e99 Mon Sep 17 00:00:00 2001 From: vyomakesh09 Date: Tue, 5 Mar 2024 17:55:49 +0000 Subject: [PATCH 5/8] add readme examples and cron jobs --- {examples => playground/examples}/README.md | 0 .../Screenshot from 2024-02-20 05-55-34.png | Bin .../examples}/example_agent.py | 0 .../examples}/example_anthropic.py | 0 .../examples}/example_concurrentworkflow.py | 0 .../examples}/example_dalle3.py | 0 .../examples}/example_gpt4vison.py | 0 .../examples}/example_huggingfacellm.py | 0 .../examples}/example_idefics.py | 0 .../examples}/example_kosmos.py | 0 .../examples}/example_logistics.py | 0 .../examples}/example_mixtral.py | 0 .../examples}/example_qwenvlmultimodal.py | 0 .../examples}/example_recursiveworkflow.py | 0 .../examples}/example_sequentialworkflow.py | 0 .../example_simple_conversation_agent.py | 0 .../examples}/example_swarmnetwork.py | 0 .../examples}/example_swarms.md | 0 .../examples}/example_task.py | 0 .../examples}/example_toolagent.py | 0 .../examples}/example_worker.py | 0 .../examples}/example_zeroscopetv.py | 0 run_examples.sh | 2 +- scripts/run_examples.sh | 22 ++++++++++++++++++ 24 files changed, 23 insertions(+), 1 deletion(-) rename {examples => playground/examples}/README.md (100%) rename {examples => playground/examples}/Screenshot from 2024-02-20 05-55-34.png (100%) rename {examples => playground/examples}/example_agent.py (100%) rename {examples => playground/examples}/example_anthropic.py (100%) rename {examples => playground/examples}/example_concurrentworkflow.py (100%) rename {examples => playground/examples}/example_dalle3.py (100%) rename {examples => playground/examples}/example_gpt4vison.py (100%) rename {examples => playground/examples}/example_huggingfacellm.py (100%) rename {examples => playground/examples}/example_idefics.py (100%) rename {examples => playground/examples}/example_kosmos.py (100%) rename {examples => playground/examples}/example_logistics.py (100%) rename {examples => playground/examples}/example_mixtral.py (100%) rename {examples => playground/examples}/example_qwenvlmultimodal.py (100%) rename {examples => playground/examples}/example_recursiveworkflow.py (100%) rename {examples => playground/examples}/example_sequentialworkflow.py (100%) rename {examples => playground/examples}/example_simple_conversation_agent.py (100%) rename {examples => playground/examples}/example_swarmnetwork.py (100%) rename {examples => playground/examples}/example_swarms.md (100%) rename {examples => playground/examples}/example_task.py (100%) rename {examples => playground/examples}/example_toolagent.py (100%) rename {examples => playground/examples}/example_worker.py (100%) rename {examples => playground/examples}/example_zeroscopetv.py (100%) create mode 100644 scripts/run_examples.sh diff --git a/examples/README.md b/playground/examples/README.md similarity index 100% rename from examples/README.md rename to playground/examples/README.md diff --git a/examples/Screenshot from 2024-02-20 05-55-34.png b/playground/examples/Screenshot from 2024-02-20 05-55-34.png similarity index 100% rename from examples/Screenshot from 2024-02-20 05-55-34.png rename to playground/examples/Screenshot from 2024-02-20 05-55-34.png diff --git a/examples/example_agent.py b/playground/examples/example_agent.py similarity index 100% rename from examples/example_agent.py rename to playground/examples/example_agent.py diff --git a/examples/example_anthropic.py b/playground/examples/example_anthropic.py similarity index 100% rename from examples/example_anthropic.py rename to playground/examples/example_anthropic.py diff --git a/examples/example_concurrentworkflow.py b/playground/examples/example_concurrentworkflow.py similarity index 100% rename from examples/example_concurrentworkflow.py rename to playground/examples/example_concurrentworkflow.py diff --git a/examples/example_dalle3.py b/playground/examples/example_dalle3.py similarity index 100% rename from examples/example_dalle3.py rename to playground/examples/example_dalle3.py diff --git a/examples/example_gpt4vison.py b/playground/examples/example_gpt4vison.py similarity index 100% rename from examples/example_gpt4vison.py rename to playground/examples/example_gpt4vison.py diff --git a/examples/example_huggingfacellm.py b/playground/examples/example_huggingfacellm.py similarity index 100% rename from examples/example_huggingfacellm.py rename to playground/examples/example_huggingfacellm.py diff --git a/examples/example_idefics.py b/playground/examples/example_idefics.py similarity index 100% rename from examples/example_idefics.py rename to playground/examples/example_idefics.py diff --git a/examples/example_kosmos.py b/playground/examples/example_kosmos.py similarity index 100% rename from examples/example_kosmos.py rename to playground/examples/example_kosmos.py diff --git a/examples/example_logistics.py b/playground/examples/example_logistics.py similarity index 100% rename from examples/example_logistics.py rename to playground/examples/example_logistics.py diff --git a/examples/example_mixtral.py b/playground/examples/example_mixtral.py similarity index 100% rename from examples/example_mixtral.py rename to playground/examples/example_mixtral.py diff --git a/examples/example_qwenvlmultimodal.py b/playground/examples/example_qwenvlmultimodal.py similarity index 100% rename from examples/example_qwenvlmultimodal.py rename to playground/examples/example_qwenvlmultimodal.py diff --git a/examples/example_recursiveworkflow.py b/playground/examples/example_recursiveworkflow.py similarity index 100% rename from examples/example_recursiveworkflow.py rename to playground/examples/example_recursiveworkflow.py diff --git a/examples/example_sequentialworkflow.py b/playground/examples/example_sequentialworkflow.py similarity index 100% rename from examples/example_sequentialworkflow.py rename to playground/examples/example_sequentialworkflow.py diff --git a/examples/example_simple_conversation_agent.py b/playground/examples/example_simple_conversation_agent.py similarity index 100% rename from examples/example_simple_conversation_agent.py rename to playground/examples/example_simple_conversation_agent.py diff --git a/examples/example_swarmnetwork.py b/playground/examples/example_swarmnetwork.py similarity index 100% rename from examples/example_swarmnetwork.py rename to playground/examples/example_swarmnetwork.py diff --git a/examples/example_swarms.md b/playground/examples/example_swarms.md similarity index 100% rename from examples/example_swarms.md rename to playground/examples/example_swarms.md diff --git a/examples/example_task.py b/playground/examples/example_task.py similarity index 100% rename from examples/example_task.py rename to playground/examples/example_task.py diff --git a/examples/example_toolagent.py b/playground/examples/example_toolagent.py similarity index 100% rename from examples/example_toolagent.py rename to playground/examples/example_toolagent.py diff --git a/examples/example_worker.py b/playground/examples/example_worker.py similarity index 100% rename from examples/example_worker.py rename to playground/examples/example_worker.py diff --git a/examples/example_zeroscopetv.py b/playground/examples/example_zeroscopetv.py similarity index 100% rename from examples/example_zeroscopetv.py rename to playground/examples/example_zeroscopetv.py diff --git a/run_examples.sh b/run_examples.sh index e41c7e1f..3378d4af 100644 --- a/run_examples.sh +++ b/run_examples.sh @@ -3,7 +3,7 @@ # Define a file to keep track of successfully executed scripts SUCCESS_LOG="successful_runs.log" -for f in examples/example_*.py; do +for f in /home/v/swarms/playground/examples/example_*.py; do # Check if the script has been logged as successful if grep -Fxq "$f" "$SUCCESS_LOG"; then echo "Skipping ${f} as it ran successfully in a previous run." diff --git a/scripts/run_examples.sh b/scripts/run_examples.sh new file mode 100644 index 00000000..e41c7e1f --- /dev/null +++ b/scripts/run_examples.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Define a file to keep track of successfully executed scripts +SUCCESS_LOG="successful_runs.log" + +for f in examples/example_*.py; do + # Check if the script has been logged as successful + if grep -Fxq "$f" "$SUCCESS_LOG"; then + echo "Skipping ${f} as it ran successfully in a previous run." + else + # Run the script if not previously successful + if /home/kye/miniconda3/envs/swarms/bin/python "$f" 2>>errors.txt; then + echo "(${f}) ran successfully without errors." + # Log the successful script execution + echo "$f" >> "$SUCCESS_LOG" + else + echo "Error encountered in ${f}. Check errors.txt for details." + break + fi + fi + echo "##############################################################################" +done From fe31b5ce4ca7ce45213482e9ec9a0c0426e0886e Mon Sep 17 00:00:00 2001 From: vyomakesh09 Date: Tue, 5 Mar 2024 19:38:24 +0000 Subject: [PATCH 6/8] add cron job into workflows --- .github/workflows/run_examples.yml | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/run_examples.yml diff --git a/.github/workflows/run_examples.yml b/.github/workflows/run_examples.yml new file mode 100644 index 00000000..75988193 --- /dev/null +++ b/.github/workflows/run_examples.yml @@ -0,0 +1,34 @@ +name: Run Examples Script + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + schedule: + # Runs at 3:00 AM UTC every day + - cron: '0 3 * * *' + +jobs: + run-examples: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.9' + + - name: Install dependencies + run: | + pip install -r requirements.txt + # Assuming your script might also need pytest and swarms + pip install pytest + pip install swarms + + - name: Make Script Executable and Run + run: | + chmod +x ./swarms/scripts/run_examples.sh + ./swarms/scripts/run_examples.sh From b4c5180eb4b9d3f07ff0ccbd0cbebf621e580558 Mon Sep 17 00:00:00 2001 From: vyomakesh09 Date: Wed, 6 Mar 2024 01:05:36 +0000 Subject: [PATCH 7/8] refactor examples and workflows --- run_examples.sh | 22 ---------------------- scripts/run_examples.sh | 2 +- 2 files changed, 1 insertion(+), 23 deletions(-) delete mode 100644 run_examples.sh diff --git a/run_examples.sh b/run_examples.sh deleted file mode 100644 index 3378d4af..00000000 --- a/run_examples.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# Define a file to keep track of successfully executed scripts -SUCCESS_LOG="successful_runs.log" - -for f in /home/v/swarms/playground/examples/example_*.py; do - # Check if the script has been logged as successful - if grep -Fxq "$f" "$SUCCESS_LOG"; then - echo "Skipping ${f} as it ran successfully in a previous run." - else - # Run the script if not previously successful - if /home/kye/miniconda3/envs/swarms/bin/python "$f" 2>>errors.txt; then - echo "(${f}) ran successfully without errors." - # Log the successful script execution - echo "$f" >> "$SUCCESS_LOG" - else - echo "Error encountered in ${f}. Check errors.txt for details." - break - fi - fi - echo "##############################################################################" -done diff --git a/scripts/run_examples.sh b/scripts/run_examples.sh index e41c7e1f..f7978058 100644 --- a/scripts/run_examples.sh +++ b/scripts/run_examples.sh @@ -3,7 +3,7 @@ # Define a file to keep track of successfully executed scripts SUCCESS_LOG="successful_runs.log" -for f in examples/example_*.py; do +for f in /swarms/playground/examples/example_*.py; do # Check if the script has been logged as successful if grep -Fxq "$f" "$SUCCESS_LOG"; then echo "Skipping ${f} as it ran successfully in a previous run." From fae4eea9fef8470e2dac673d31157ddc298e5e8f Mon Sep 17 00:00:00 2001 From: Eternal Reclaimer <98760976+kyegomez@users.noreply.github.com> Date: Mon, 11 Mar 2024 18:09:14 -0700 Subject: [PATCH 8/8] Delete test_output.py --- test_output.py | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 test_output.py diff --git a/test_output.py b/test_output.py deleted file mode 100644 index f919cb98..00000000 --- a/test_output.py +++ /dev/null @@ -1,4 +0,0 @@ -import sys - -print('this is the standard output') -print('This is the standard error', file=sys.stderr) \ No newline at end of file