{"id":32165996,"url":"https://github.com/nileshtrivedi/autogen","last_synced_at":"2026-02-18T22:02:00.765Z","repository":{"id":241114682,"uuid":"803860461","full_name":"nileshtrivedi/autogen","owner":"nileshtrivedi","description":"Porting Microsoft's Autogen library into Elixir","archived":false,"fork":false,"pushed_at":"2025-01-15T11:35:06.000Z","size":70,"stargazers_count":35,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-21T15:02:39.546Z","etag":null,"topics":["agents","ai","autogen","elixir"],"latest_commit_sha":null,"homepage":"https://hex.pm/packages/autogen","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nileshtrivedi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-21T14:02:16.000Z","updated_at":"2025-10-19T12:27:30.000Z","dependencies_parsed_at":"2024-05-22T14:03:35.966Z","dependency_job_id":"934d1b21-2f19-49a6-8463-577807767995","html_url":"https://github.com/nileshtrivedi/autogen","commit_stats":null,"previous_names":["nileshtrivedi/autogen"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nileshtrivedi/autogen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nileshtrivedi%2Fautogen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nileshtrivedi%2Fautogen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nileshtrivedi%2Fautogen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nileshtrivedi%2Fautogen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nileshtrivedi","download_url":"https://codeload.github.com/nileshtrivedi/autogen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nileshtrivedi%2Fautogen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29596329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T20:59:56.587Z","status":"ssl_error","status_checked_at":"2026-02-18T20:58:41.434Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","ai","autogen","elixir"],"created_at":"2025-10-21T15:01:46.632Z","updated_at":"2026-02-18T22:02:00.742Z","avatar_url":"https://github.com/nileshtrivedi.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Autogen\n\nThis is a work-in-progress Elixir port for Microsoft's agent framework: [Autogen](https://microsoft.github.io/autogen/).\n\nAn important goal of this library is to stay as close as possible to Microsoft's Python-based implementation of Autogen (for eg: class names/field names etc). This will make it possible to support feature like [AutoBuild](https://microsoft.github.io/autogen/blog/2023/11/26/Agent-AutoBuild) where entire agent group/library can be saved to a JSON file and loaded later. There are many other tools in the Autogen ecosystem. For example, [AutoGen Studio](https://microsoft.github.io/autogen/blog/2023/12/01/AutoGenStudio) (a web app to configure and test agents), [AutoGen Bench](https://microsoft.github.io/autogen/blog/2024/01/25/AutoGenBench) (for agent evaluations).\n\nThis is highly experimental and not at all ready for use in production.\nThis makes use of [langchain](https://github.com/brainlid/langchain) to make calls to various LLMs in a generic way. [Ollama](https://ollama.com/)'s Llama3 is used as the default LLM.\n\nThe conceptual architecture of autogen is explained in [this blog post by Chi Wang](https://microsoft.github.io/autogen/blog/2024/05/24/Agent).\n\n## Near-term Goals\n\n- Make [GroupChat](https://microsoft.github.io/autogen/docs/tutorial/conversation-patterns#group-chat) and [AutoBuild](https://microsoft.github.io/autogen/blog/2023/11/26/Agent-AutoBuild/) fully working.\n- Integrate [aichat](https://github.com/nileshtrivedi/aichat) for a multi-user + multi-agent chat experience on web\n- Build demos in [LiveBook](https://livebook.dev/)\n- Leverage [instructor_ex](https://github.com/thmsmlr/instructor_ex)\n\n## Longer-term Goals\n\n- Enable streaming responses\n- Turn agents into Erlang processes\n- Build a comprehensive [library](https://microsoft.github.io/autogen/docs/Examples) of prompts, tools and [agents](https://microsoft.github.io/autogen/docs/notebooks) to make common use-cases trivial\n- Handle real-time multi-modal input (images, audio, video, files)\n- Reach capability at par with OpenAI's GPT-4o demos\n\n## Usage\n\n### Conversation between a user (on command-line) and a simple LLM assistant:\n```elixir\n    assistant = %Autogen.Agent{name: \"Assistant\", system_message: \"You are a helpful chatbot\", type: :conversable_agent}\n    user = %Autogen.Agent{name: \"user\", type: :user_proxy_agent}\n\n    Autogen.Agent.initiate_chat(from_agent: assistant, to_agent: user, message: \"How can I help you today?\")\n```\n\n### A back-and-forth conversation between two AI comedians:\n```elixir\n    alias LangChain.ChatModels.ChatOllamaAI\n    joe = %Autogen.Agent{\n      name: \"Joe\",\n      system_message: \"Your name is Joe and you are a part of a duo of comedians.\",\n      type: :conversable_agent,\n      llm: %{temperature: 0.9},\n      human_input_mode: :never,\n      max_consecutive_auto_reply: 1,\n      is_termination_msg: fn msg -\u003e String.contains?(String.downcase(msg.content), \"bye\") end,\n      chain: ChatOllamaAI.new!(%{model: \"llama3\"})\n    }\n\n    cathy = %Autogen.Agent{\n      name: \"Cathy\",\n      system_message: \"Your name is Cathy and you are a part of a duo of comedians.\",\n      type: :conversable_agent,\n      llm: %{temperature: 0.7},\n      human_input_mode: :never,\n      chain: ChatOllamaAI.new!(%{model: \"llama3\"})\n    }\n\n    Autogen.Agent.initiate_chat(\n      from_agent: joe,\n      to_agent: cathy,\n      message: \"Cathy, tell me a joke and then say the words GOOD BYE..\", max_turns: 2\n    )\n```\n\n### Code writer agent and Code executor agents collaborating to perform a task:\n\n```elixir\n    code_executor_agent = %Autogen.Agent{\n      name: \"code_executor_agent\",\n      type: :conversable_agent,\n      is_code_executor: true,\n      human_input_mode: :always,\n      is_termination_msg: fn msg -\u003e String.contains?(msg.content, \"TERMINATE\") end,\n      chain: ChatOllamaAI.new!(%{model: \"llama3\"})\n    }\n\n    code_writer_agent = %Autogen.Agent{\n      name: \"code_writer_agent\",\n      system_message: ~S\"\"\"\n      You are a helpful AI assistant.\n      Solve tasks using your coding and language skills.\n      In the following cases, suggest Elixir code (in a elixir coding block) for the user to execute.\n      The last expression in your code should compute and return the result (rather than print it).\n      Check the execution result returned by the user.\n      If the result indicates there is an error, fix the error and output the code again. Suggest the full code instead of partial code or code changes. If the error can't be fixed or if the task is not solved even after the code is executed successfully, analyze the problem, revisit your assumption, collect additional info you need, and think of a different approach to try.\n      When you find an answer, verify the answer carefully. Include verifiable evidence in your response if possible.\n      If the execution was successful and everything is done, reply with 'TERMINATE'.\n      \"\"\",\n      type: :conversable_agent,\n      chain: ChatOllamaAI.new!(%{model: \"llama3\"})\n    }\n\n    Autogen.Agent.initiate_chat(\n      from_agent: code_executor_agent,\n      to_agent: code_writer_agent,\n      message: \"Write Elixir code to calculate the 14th Fibonacci number.\"\n    )\n```\n\n\n## Installation\n\nThe package can be installed by adding it to your list of dependencies in `mix.exs`:\n\n```\ndef deps do\n  [{:autogen, \"~\u003e 0.3.0\"}]\nend\n```\n\nIf you have cloned this repo, you can try the demos by making sure that llama3 is available on your machine and then running the following:\n\n```bash\nmix run scripts/demos/basic.exs\nmix run scripts/demos/code_execution_demo.exs\nmix run scripts/demos/assistant_demo.exs\nmix run scripts/demos/comedy_show_demo.exs\n```\n\nFor a simple chat UI using [PhoenixPlayground](https://github.com/phoenix-playground/phoenix_playground) and [DeepChat](https://deepchat.dev/):\n```bash\niex scripts/demos/web_chat_ui.exs\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnileshtrivedi%2Fautogen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnileshtrivedi%2Fautogen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnileshtrivedi%2Fautogen/lists"}