mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-12 16:15:33 +00:00
Update agno API to the newest version, switch to AgentOS (#702)
This commit is contained in:
1 parent
4bf2cbe818
commit
45407f7a2a
3 files changed
+28
-21
No files matched your search
+2
-2
@@ -65,7 +65,7 @@ dev = [
|
||||
"syrupy>=4.9.1",
|
||||
"types-requests>=2.32.4.20241230",
|
||||
]
|
||||
agno = ["agno>=1.2.6", "sqlalchemy>=2.0.40"]
|
||||
agno = ["agno>=2.2.1", "sqlalchemy>=2.0.40"]
|
||||
google = ["google-genai>=1.8.0"]
|
||||
|
||||
[project.urls]
|
||||
@@ -289,4 +289,4 @@ markers = [
|
||||
skip = '.git*,*.svg,*.lock,*.min.*'
|
||||
check-hidden = true
|
||||
# ignore-regex = ''
|
||||
# ignore-words-list = ''
|
||||
# ignore-words-list = ''
|
||||
+16
-7
@@ -1,7 +1,6 @@
|
||||
from agno.models.anthropic.claude import Claude
|
||||
from agno.models.google.gemini import Gemini
|
||||
from agno.playground.playground import Playground
|
||||
from agno.playground.serve import serve_playground_app
|
||||
from agno.os import AgentOS
|
||||
from sensai.util import logging
|
||||
from sensai.util.helper import mark_used
|
||||
|
||||
@@ -9,16 +8,26 @@ from serena.agno import SerenaAgnoAgentProvider
|
||||
|
||||
mark_used(Gemini, Claude)
|
||||
|
||||
# initialize logging (Note: since this module is reimported by serve_playground_app and the logging configuration
|
||||
# is extended by SerenaAgentProvider, we must handle this here conditionally)
|
||||
# initialize logging
|
||||
if __name__ == "__main__":
|
||||
logging.configure(level=logging.INFO)
|
||||
|
||||
# Define the model to use (see Agno documentation for supported models; these are just examples)
|
||||
# model = Claude(id="claude-3-7-sonnet-20250219")
|
||||
model = Gemini(id="gemini-2.5-pro-exp-03-25")
|
||||
model = Gemini(id="gemini-2.5-pro")
|
||||
|
||||
app = Playground(agents=[SerenaAgnoAgentProvider.get_agent(model)]).get_app()
|
||||
# Create the Serena agent using the existing provider
|
||||
serena_agent = SerenaAgnoAgentProvider.get_agent(model)
|
||||
|
||||
# Create AgentOS app with the Serena agent
|
||||
agent_os = AgentOS(
|
||||
description="Serena coding assistant powered by AgentOS",
|
||||
id="serena-agentos",
|
||||
agents=[serena_agent],
|
||||
)
|
||||
|
||||
app = agent_os.get_app()
|
||||
|
||||
if __name__ == "__main__":
|
||||
serve_playground_app("agno_agent:app", reload=False, log_config=None)
|
||||
# Start the AgentOS server
|
||||
agent_os.serve(app="agno_agent:app", reload=False)
|
||||
+10
-12
@@ -6,9 +6,9 @@ from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from agno.agent import Agent
|
||||
from agno.memory import AgentMemory
|
||||
from agno.db.sqlite import SqliteDb
|
||||
from agno.memory import MemoryManager
|
||||
from agno.models.base import Model
|
||||
from agno.storage.sqlite import SqliteStorage
|
||||
from agno.tools.function import Function
|
||||
from agno.tools.toolkit import Toolkit
|
||||
from dotenv import load_dotenv
|
||||
@@ -111,10 +111,9 @@ class SerenaAgnoAgentProvider:
|
||||
raise
|
||||
|
||||
# Even though we don't want to keep history between sessions,
|
||||
# for agno-ui to work as a conversation, we use a persistent storage on disk.
|
||||
# This storage should be deleted between sessions.
|
||||
# for agno-ui to work as a conversation, we use a persistent database on disk.
|
||||
# This database should be deleted between sessions.
|
||||
# Note that this might collide with custom options for the agent, like adding vector-search based tools.
|
||||
# See here for an explanation: https://www.reddit.com/r/agno/comments/1jk6qea/regarding_the_built_in_memory/
|
||||
sql_db_path = (Path("temp") / "agno_agent_storage.db").absolute()
|
||||
sql_db_path.parent.mkdir(exist_ok=True)
|
||||
# delete the db file if it exists
|
||||
@@ -125,19 +124,18 @@ class SerenaAgnoAgentProvider:
|
||||
agno_agent = Agent(
|
||||
name="Serena",
|
||||
model=model,
|
||||
# See explanation above on why storage is needed
|
||||
storage=SqliteStorage(table_name="serena_agent_sessions", db_file=str(sql_db_path)),
|
||||
# See explanation above on why database is needed
|
||||
db=SqliteDb(db_file=str(sql_db_path)),
|
||||
description="A fully-featured coding assistant",
|
||||
tools=[SerenaAgnoToolkit(serena_agent)],
|
||||
# The tool calls will be shown in the UI anyway since whether to show them is configurable per tool
|
||||
# Tool calls will be shown in the UI since that's configurable per tool
|
||||
# To see detailed logs, you should use the serena logger (configure it in the project file path)
|
||||
show_tool_calls=False,
|
||||
markdown=True,
|
||||
system_message=serena_agent.create_system_prompt(),
|
||||
telemetry=False,
|
||||
memory=AgentMemory(),
|
||||
add_history_to_messages=True,
|
||||
num_history_responses=100, # you might want to adjust this (expense vs. history awareness)
|
||||
memory_manager=MemoryManager(),
|
||||
add_history_to_context=True,
|
||||
num_history_runs=100, # you might want to adjust this (expense vs. history awareness)
|
||||
)
|
||||
cls._agent = agno_agent
|
||||
log.info(f"Agent instantiated: {agno_agent}")
|
||||
|
||||
Reference in new issue
Block a user