diff --git a/aider/analytics.py b/aider/analytics.py index ffb823d77..523a56710 100644 --- a/aider/analytics.py +++ b/aider/analytics.py @@ -7,6 +7,7 @@ from pathlib import Path from mixpanel import Mixpanel from aider import __version__ +from aider.dump import dump # noqa: F401 class Analytics: @@ -46,6 +47,13 @@ class Analytics: return properties = {} + + if main_model: + if main_model.info: + properties["main_model"] = main_model.name + elif "/" in main_model.name: + properties["main_model"] = main_model.name.split("/")[0] + "/REDACTED" + properties.update(kwargs) properties.update(self.get_system_info()) # Add system info to all events diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index b08c37a79..23e6ef438 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -1412,13 +1412,13 @@ class Coder: ) self.event( - "token_usage", + "message_send", + main_model=self.main_model, prompt_tokens=prompt_tokens, completion_tokens=completion_tokens, total_tokens=prompt_tokens + completion_tokens, cost=cost, total_cost=self.total_cost, - model=self.main_model.name, ) def get_multi_response_content(self, final=False): diff --git a/aider/main.py b/aider/main.py index 34af70ec3..a4ded9f7f 100644 --- a/aider/main.py +++ b/aider/main.py @@ -373,9 +373,13 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F editingmode=editing_mode, ) + analytics = Analytics(args.analytics) + analytics.event("launched") + if args.gui and not return_coder: if not check_streamlit_install(io): return + analytics.event("gui session") launch_gui(argv) return @@ -497,8 +501,6 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F args.max_chat_history_tokens or main_model.max_chat_history_tokens, ) - analytics = Analytics(args.analytics) - try: coder = Coder.create( main_model=main_model, @@ -615,6 +617,8 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F if args.exit: return + analytics.event("cli session", main_model=main_model) + thread = threading.Thread(target=load_slow_imports) thread.daemon = True thread.start()