anhkhoiphan commited on
Commit
faa20df
·
1 Parent(s): 39a1738

resolve conflict: take incoming notebook

Browse files
Files changed (2) hide show
  1. config.py +11 -6
  2. tools/base.py +9 -70
config.py CHANGED
@@ -3,10 +3,15 @@ from dotenv import load_dotenv
3
 
4
  load_dotenv()
5
 
6
- # ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY", "")
7
- # OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "")
8
- # DEFAULT_MODEL = os.getenv("DEFAULT_MODEL", "claude-sonnet-4-20250514")
9
- # LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
10
-
11
  GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "")
12
- DEFAULT_MODEL = "gemini-2.5-flash"
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  load_dotenv()
5
 
 
 
 
 
 
6
  GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "")
7
+ DEFAULT_MODEL = "gemini-2.5-flash"
8
+
9
+ # Redis
10
+ REDIS_HOST = os.getenv("REDIS_HOST", "localhost")
11
+ REDIS_PORT = int(os.getenv("REDIS_PORT", "6379"))
12
+ REDIS_DB = int(os.getenv("REDIS_DB", "0"))
13
+ REDIS_PASSWORD = os.getenv("REDIS_PASSWORD", None)
14
+ REDIS_KEY_PREFIX = os.getenv("REDIS_KEY_PREFIX", "ai_agent")
15
+
16
+ # Logging
17
+ LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
tools/base.py CHANGED
@@ -4,24 +4,12 @@ Base components for the tools package: LLM dispatcher and central registry.
4
 
5
  import logging
6
  import json
7
- import torch
8
- from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
9
  from langchain_core.tools import Tool, StructuredTool
10
- from langchain_openai import ChatOpenAI
11
- from langchain_huggingface import HuggingFacePipeline
12
  from langchain_google_genai import ChatGoogleGenerativeAI
13
  try:
14
- from ..config import (
15
- QWEN_API_KEY, QWEN_BASE_URL, QWEN_MODEL,
16
- LOG_LEVEL, USE_LOCAL_LLM, LOCAL_MODEL_ID,
17
- GEMINI_API_KEY, OPENROUTER_API_KEY, OPENROUTER_BASE_URL, OPENROUTER_MODEL
18
- )
19
  except (ImportError, ValueError):
20
- from config import (
21
- QWEN_API_KEY, QWEN_BASE_URL, QWEN_MODEL,
22
- LOG_LEVEL, USE_LOCAL_LLM, LOCAL_MODEL_ID,
23
- GEMINI_API_KEY, OPENROUTER_API_KEY, OPENROUTER_BASE_URL, OPENROUTER_MODEL
24
- )
25
 
26
  logger = logging.getLogger(__name__)
27
 
@@ -43,63 +31,14 @@ def register_tool(name: str, description: str, parameters: list):
43
  return decorator
44
 
45
  def get_llm():
46
- """
47
- Initialize and return the LLM based on configuration (Gemini > Local > Cloud Qwen).
48
- """
49
- # 1. Prioritize OpenRouter
50
- if OPENROUTER_API_KEY and not OPENROUTER_API_KEY.startswith("your-"):
51
- logger.info(f"Initializing OpenRouter LLM ({OPENROUTER_MODEL})...")
52
- return ChatOpenAI(
53
- model=OPENROUTER_MODEL,
54
- api_key=OPENROUTER_API_KEY,
55
- base_url=OPENROUTER_BASE_URL,
56
- temperature=0.1,
57
- max_tokens=4096,
58
- )
59
-
60
- # 2. Fallback to Gemini
61
- if GEMINI_API_KEY and not GEMINI_API_KEY.startswith("your-"):
62
- logger.info("Initializing Google Gemini LLM...")
63
- return ChatGoogleGenerativeAI(
64
- model="gemini-2.0-flash",
65
- google_api_key=GEMINI_API_KEY,
66
- temperature=0.1,
67
- )
68
-
69
- # 2. Local LLM
70
- if USE_LOCAL_LLM:
71
- logger.info(f"Loading Local LLM: {LOCAL_MODEL_ID}...")
72
- try:
73
- tokenizer = AutoTokenizer.from_pretrained(LOCAL_MODEL_ID)
74
- model = AutoModelForCausalLM.from_pretrained(
75
- LOCAL_MODEL_ID,
76
- torch_dtype="auto",
77
- device_map="auto"
78
- )
79
-
80
- pipe = pipeline(
81
- "text-generation",
82
- model=model,
83
- tokenizer=tokenizer,
84
- max_new_tokens=512, # Reduce for speed
85
- temperature=0.1,
86
- do_sample=True,
87
- repetition_penalty=1.1,
88
- return_full_text=False, # Important: only return new tokens
89
- )
90
-
91
- return HuggingFacePipeline(pipeline=pipe)
92
- except Exception as e:
93
- logger.error(f"Failed to load local model: {e}. Falling back to Cloud Qwen...")
94
-
95
- if not QWEN_API_KEY:
96
- raise ValueError("QWEN_API_KEY is not configured. Check your .env file.")
97
-
98
- return ChatOpenAI(
99
- model=QWEN_MODEL or "qwen-plus",
100
  temperature=0.1,
101
- api_key=QWEN_API_KEY,
102
- base_url=QWEN_BASE_URL,
103
  )
104
 
105
  def get_tool_schemas() -> list[dict]:
 
4
 
5
  import logging
6
  import json
 
 
7
  from langchain_core.tools import Tool, StructuredTool
 
 
8
  from langchain_google_genai import ChatGoogleGenerativeAI
9
  try:
10
+ from ..config import LOG_LEVEL, GEMINI_API_KEY
 
 
 
 
11
  except (ImportError, ValueError):
12
+ from config import LOG_LEVEL, GEMINI_API_KEY
 
 
 
 
13
 
14
  logger = logging.getLogger(__name__)
15
 
 
31
  return decorator
32
 
33
  def get_llm():
34
+ """Initialize and return Gemini LLM."""
35
+ if not GEMINI_API_KEY:
36
+ raise ValueError("GEMINI_API_KEY is not configured. Check your .env file.")
37
+ logger.info("Initializing Google Gemini LLM...")
38
+ return ChatGoogleGenerativeAI(
39
+ model="gemini-2.5-flash",
40
+ google_api_key=GEMINI_API_KEY,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  temperature=0.1,
 
 
42
  )
43
 
44
  def get_tool_schemas() -> list[dict]: