diff options
Diffstat (limited to 'src/agents/03-logs')
| -rw-r--r-- | src/agents/03-logs/agent.py | 42 | ||||
| -rw-r--r-- | src/agents/03-logs/config.py | 1 | ||||
| -rw-r--r-- | src/agents/03-logs/main.py | 3 |
3 files changed, 41 insertions, 5 deletions
diff --git a/src/agents/03-logs/agent.py b/src/agents/03-logs/agent.py index f7e6538..1f19431 100644 --- a/src/agents/03-logs/agent.py +++ b/src/agents/03-logs/agent.py @@ -1,32 +1,57 @@ # agent.py from openai import OpenAI import json -from config import MODEL, BASE_URL, API_KEY +import datetime +from config import MODEL, BASE_URL, API_KEY, TEMPERATURE from tools import tools, available_functions class Agent: - def __init__(self, model=MODEL, base_url=BASE_URL, api_key=API_KEY): + def __init__(self, model=MODEL, base_url=BASE_URL, api_key=API_KEY, temperature=TEMPERATURE): self.client = OpenAI(base_url=base_url, api_key=api_key) self.model = model + self.temperature = temperature self.tools = tools self.available_functions = available_functions + self.logs = [] def run(self, initial_prompt): messages = [{'role': 'user', 'content': initial_prompt}] + self.logs.append(messages[0]) while True: response = self.client.chat.completions.create( model=self.model, messages=messages, tools=self.tools, + temperature=self.temperature, ) response_message = response.choices[0].message messages.append(response_message) + + log_entry = { + "role": "assistant", + "content": response_message.content, + "tool_calls": [{ + 'id': tc.id, + 'type': tc.type, + 'function': { + 'name': tc.function.name, + 'arguments': tc.function.arguments + } + } for tc in response_message.tool_calls] if response_message.tool_calls else None, + "response_metadata": { + "model": response.model, + "usage": dict(response.usage), + } + } model_reasoning = getattr(response_message, 'reasoning', None) if model_reasoning: print(f"--- MODEL REASONING ---\n{model_reasoning}") + log_entry["reasoning"] = model_reasoning + + self.logs.append(log_entry) if response_message.tool_calls: print(f"--- LLM requested tool execution ---") @@ -39,11 +64,20 @@ class Agent: print(f"Executing: {function_name}({function_args}) -> {function_output}") - messages.append({ + tool_message = { "tool_call_id": tool_call.id, "role": "tool", "content": str(function_output), - }) + } + messages.append(tool_message) + self.logs.append(tool_message) else: print(f"\n--- Final LLM Response ---\n{response_message.content}") break + + def save_logs(self): + timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") + log_file = f"output/log_{timestamp}.json" + with open(log_file, "w") as f: + json.dump(self.logs, f, indent=4) + print(f"\nLogs saved to {log_file}") diff --git a/src/agents/03-logs/config.py b/src/agents/03-logs/config.py index 682e5bf..5620126 100644 --- a/src/agents/03-logs/config.py +++ b/src/agents/03-logs/config.py @@ -2,3 +2,4 @@ MODEL = 'qwen3:0.6b' BASE_URL = "http://127.0.0.1:11434/v1" API_KEY = "ollama" +TEMPERATURE = 0.7 diff --git a/src/agents/03-logs/main.py b/src/agents/03-logs/main.py index 6b85b95..d224048 100644 --- a/src/agents/03-logs/main.py +++ b/src/agents/03-logs/main.py @@ -4,4 +4,5 @@ from agent import Agent if __name__ == "__main__": user_prompt = "check if this username is valid 'jack'." agent = Agent() - agent.run(user_prompt)
\ No newline at end of file + agent.run(user_prompt) + agent.save_logs()
\ No newline at end of file |
