|
1 | 1 | """MoviePilot AI智能体实现""" |
2 | 2 |
|
3 | 3 | import asyncio |
4 | | -import threading |
5 | 4 | from typing import Dict, List, Any |
6 | 5 |
|
7 | 6 | from langchain.agents import AgentExecutor, create_openai_tools_agent |
|
21 | 20 | from app.log import logger |
22 | 21 | from app.schemas import Notification |
23 | 22 |
|
24 | | -# 用于保护环境变量修改的线程锁 |
25 | | -_env_lock = threading.Lock() |
26 | | - |
27 | 23 |
|
28 | 24 | class AgentChain(ChainBase): |
29 | 25 | pass |
@@ -77,36 +73,21 @@ def _initialize_llm(self): |
77 | 73 | raise ValueError("未配置 LLM_API_KEY") |
78 | 74 |
|
79 | 75 | if provider == "google": |
80 | | - import os |
81 | | - from contextlib import contextmanager |
82 | | - from langchain_google_genai import ChatGoogleGenerativeAI |
83 | | - |
84 | | - # 使用线程锁保护的临时环境变量配置 |
85 | | - @contextmanager |
86 | | - def _temp_proxy_env(): |
87 | | - """线程安全的临时设置代理环境变量的上下文管理器""" |
88 | | - with _env_lock: |
89 | | - old_http = os.environ.get("HTTP_PROXY") |
90 | | - old_https = os.environ.get("HTTPS_PROXY") |
91 | | - try: |
92 | | - if settings.PROXY_HOST: |
93 | | - os.environ["HTTP_PROXY"] = settings.PROXY_HOST |
94 | | - os.environ["HTTPS_PROXY"] = settings.PROXY_HOST |
95 | | - yield |
96 | | - finally: |
97 | | - # 恢复原始环境变量 |
98 | | - if old_http is not None: |
99 | | - os.environ["HTTP_PROXY"] = old_http |
100 | | - elif "HTTP_PROXY" in os.environ: |
101 | | - del os.environ["HTTP_PROXY"] |
102 | | - |
103 | | - if old_https is not None: |
104 | | - os.environ["HTTPS_PROXY"] = old_https |
105 | | - elif "HTTPS_PROXY" in os.environ: |
106 | | - del os.environ["HTTPS_PROXY"] |
107 | | - |
108 | | - # 在临时环境变量中初始化 ChatGoogleGenerativeAI |
109 | | - with _temp_proxy_env(): |
| 76 | + if settings.PROXY_HOST: |
| 77 | + from langchain_openai import ChatOpenAI |
| 78 | + return ChatOpenAI( |
| 79 | + model=settings.LLM_MODEL, |
| 80 | + api_key=api_key, |
| 81 | + max_retries=3, |
| 82 | + base_url="https://generativelanguage.googleapis.com/v1beta/openai", |
| 83 | + temperature=settings.LLM_TEMPERATURE, |
| 84 | + streaming=True, |
| 85 | + callbacks=[self.callback_handler], |
| 86 | + stream_usage=True, |
| 87 | + openai_proxy=settings.PROXY_HOST |
| 88 | + ) |
| 89 | + else: |
| 90 | + from langchain_google_genai import ChatGoogleGenerativeAI |
110 | 91 | return ChatGoogleGenerativeAI( |
111 | 92 | model=settings.LLM_MODEL, |
112 | 93 | google_api_key=api_key, |
|
0 commit comments