From d71d6cca5bd938efeeca367a4e4d9903baa94030 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Thu, 8 May 2025 00:44:07 +0800 Subject: [PATCH] update --- .../__pycache__/binance_api.cpython-313.pyc | Bin 7875 -> 9092 bytes cryptoai/api/binance_api.py | 35 +++++++++++++++ cryptoai/routes/agent.py | 42 ++++++++++++++++-- cryptoai/task_endpoint.py | 2 +- docker-compose.yml | 2 +- test.py | 8 ++++ 6 files changed, 83 insertions(+), 6 deletions(-) create mode 100644 test.py diff --git a/cryptoai/api/__pycache__/binance_api.cpython-313.pyc b/cryptoai/api/__pycache__/binance_api.cpython-313.pyc index 01b0d34723e84bbbc8a29a3abdb9ac7730c7e5c2..68d63667a21443e7542b01126a5d3183133e1750 100644 GIT binary patch delta 1715 zcma)5Urbw77{8~tw~YRye`qf&r4$Cn4w;$2bWAo23x&)v;LbTm9qGyi3gcdKTJ&Kt zon}!?78g8ZsL8SiNfsW=G&Nns7%{%=$#lt*EjPsYFi?^iQPdcH(C=$IC=9cm_!P@I%-Nco&=e0JeGOKlj?Ku|rvAKb# zGp}|?{sOf#EQCuNb(k46rFo4j?_Lxxib~lMfK3 za#}WI2~?%Zbl(XUS_yudVO*v$b%5=2ba@s2CBBBM;`;OtHeSR<$~aEZ_Z6{jepicL z;uU>RKS&0-7QT`jBy+;VC!jU{^xlo7OPBA>&n|z!mac!XG<$7%^2YMTH}8GPmS#Wt zac+M3`ZP=04p?(;&Hm+?^vcZVEMhEA8hho$1XbeAMnAM|LyZAlcDM8iFq?Q9;BgGW zW9gmwmFW+g{asWCK>Vlc(ACeQ<-2azat80xZ5hW@IyE~J6 z9;JQ;E!qLjbE|Hl*mYMdpE);m?v5C`C5CRkmJvf4QJ(C$>nxu<_Sa%b^%|!ub}gFi znbNj};6g*j5xQ;eSag>Dvnl}b_ZrsVEl&k^#dwInW)+(GdEpRiavXc)`6nMbfBGck zdQjF~g=O9N^++_TPAG}3MWws(x3*NS^5I$(gePOFwtJ&;+Z3)q98(XY!FF|Pza_Tc z9L$LA8FAq8>qhtBv*=3QFRJ5B4KSsR2u-Zo^ci`U-8Owg;_R}ylC-e2xwWPP$xehL z0C574yB_o?e(VBBFt4Sy<~dyMM`%VkfbcxRL4+3&f=sqt+T{7KrJi)NdTT8?k&>)m z=|~^5+k>q=sP08rzr2CM%i9N(W=PP;fE?fM>eAC}+FnJ@r_%N`A+NGAXAfll+9{GV z?2gk%-cSAMd|O98PQBqC<4?uVXar#t;VdQ>UhF*Dd0gW|$J+vi+>2S4X{JPMOzu?L zRT`ByV&MK{U)H*gj+m7sOk0&2S`_d#D0g$2FS_)NCG=q zt@oAI6R3U)VK0IKVWTkJu+;dNlAx!Nz%!+I3+WkzA%xdi+S^3-v-{qLrfQqu`ZT`E z!LZPl9Wv6%KXCbL4N}n@)sUllU(Qm@SMf9HVP;>HTwvqAGIEi<>#Hj{#S`~$93rg+ GpZ@@^W!Y)~ delta 813 zcmZ{i&ubG=5XX0t>{j!8^JDYFA4zPgt})e+CN|My>RlGRiHPU+56D4sR1gLA;L({Tq(<<;e0alrzx!r}eKPy;g8Qe-WtZ^G zg|#~`B3te*B)7h65D^NbA4QqnkeLI+iQzIZlTph?49E2_xrR^9&fHO{VQT<)u>-qa zkKz8WT4CP4+QSb1rS=-Kq2?^IbX$^g3RC+cAM3RxayF%Z{uRc?_p9YtEF_aTIU-7~!~h<#_`q#5L~+SP-fjgVQ3T zP9@J#@jPJ?u>puU4^n=SkVllnOLZ)nqVyyoO&BMfB4h|zLQZtm=RDHrFb*Z*(Gsv?X0*3}jeic6CW=%I zAU14>IG$d^H!$l&rs~a`%}O=DP#CXO+vOHttMc-#R_kudycd3Ifyd_W=(=^;ppUE& zRtaVD%JYS*g~g6_c5zx)dQA*u9Y?#qUM(~)w|J$x=h1Ed==iF5e|XM2@b#r48k+=R zF2&A*TGXNb3m2`!mop^g9m diff --git a/cryptoai/api/binance_api.py b/cryptoai/api/binance_api.py index 77d26ea..ba40749 100644 --- a/cryptoai/api/binance_api.py +++ b/cryptoai/api/binance_api.py @@ -47,6 +47,41 @@ class BinanceAPI: return result + def get_top_longshort_position_ratio(self, symbol: str, period: str = '1h') -> float: + """ + 获取交易对大户持仓多空比 + + Args: + symbol: 交易对符号,例如 'BTCUSDT' + period: 时间间隔,例如 '1h', '1d' + + Returns: + 大户持仓多空比 + """ + try: + response = self.client.futures_top_longshort_position_ratio(symbol=symbol, period=period) + return response + except BinanceAPIException as e: + print(f"获取交易对大户持仓多空比时出错: {e}") + return 0 + + def get_top_longshort_account_ratio(self, symbol: str, period: str = '1h') -> float: + """ + 获取交易对大户持仓多空比 + + Args: + symbol: 交易对符号,例如 'BTCUSDT' + period: 时间间隔,例如 '1h', '1d' + + Returns: + 大户持仓多空比 + """ + try: + response = self.client.futures_top_longshort_account_ratio(symbol=symbol, period=period) + return response + except BinanceAPIException as e: + print(f"获取交易对大户持仓多空比时出错: {e}") + return 0 def get_historical_klines(self, symbol: str, interval: str, start_str: str, end_str: Optional[str] = None) -> pd.DataFrame: """ diff --git a/cryptoai/routes/agent.py b/cryptoai/routes/agent.py index 3caeead..3ca6586 100644 --- a/cryptoai/routes/agent.py +++ b/cryptoai/routes/agent.py @@ -15,6 +15,8 @@ import logging from cryptoai.api.deepseek_api import DeepSeekAPI from cryptoai.utils.config_loader import ConfigLoader from fastapi.responses import StreamingResponse +from cryptoai.routes.user import get_current_user +import requests # 创建路由 router = APIRouter() @@ -22,13 +24,45 @@ class ChatRequest(BaseModel): user_prompt: str +@router.get("/list") +async def get_agents(current_user: Dict[str, Any] = Depends(get_current_user)): + """ + 获取所有代理 + """ + return [ + { + "id": "1", + "name": "二级市场助手", + "hello_prompt": "您好,我是二级市场助手,为您提供专业的二级市场分析和建议", + "description": "为您提供专业的二级市场分析和建议", + } + ] + + @router.post("/chat") -async def chat(request: ChatRequest): +async def chat(request: ChatRequest,current_user: Dict[str, Any] = Depends(get_current_user)): """ 聊天接口 """ + + token = "app-vhJecqbcLukf72g0uxAb9tcz" + url = "https://mate.aimateplus.com/v1/chat-messages" + headers = { + "Authorization": f"Bearer {token}", + "Content-Type": "application/json" + } + data = { + "inputs" : {}, + "query" : request.user_prompt, + "response_mode" : "streaming", + "user" : current_user["mail"] + } + response = requests.post(url, headers=headers, json=data, stream=True) - deepseek_api = DeepSeekAPI() - response = deepseek_api.streaming_call(request.user_prompt) + #获取response 的 stream + def stream_response(): + for chunk in response.iter_content(chunk_size=1024): + if chunk: + yield chunk - return StreamingResponse(response, media_type="text/plain") + return StreamingResponse(stream_response(), media_type="text/plain") diff --git a/cryptoai/task_endpoint.py b/cryptoai/task_endpoint.py index 445e37b..85ff471 100644 --- a/cryptoai/task_endpoint.py +++ b/cryptoai/task_endpoint.py @@ -25,7 +25,7 @@ def task_start(): try: # GoldAgent().start_agent() - # CryptoAgent().start_agent() + # CryptoAgent().start_agent("WLDUSDT") # return logger.info("🚀 加密货币Agent程序已启动") diff --git a/docker-compose.yml b/docker-compose.yml index b313220..d1eae38 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,7 +29,7 @@ services: cryptoai-api: build: . container_name: cryptoai-api - image: cryptoai-api:0.0.4 + image: cryptoai-api:0.0.5 restart: always ports: - "8000:8000" diff --git a/test.py b/test.py new file mode 100644 index 0000000..80c57dc --- /dev/null +++ b/test.py @@ -0,0 +1,8 @@ +from cryptoai.api.binance_api import BinanceAPI +from cryptoai.utils.config_loader import ConfigLoader + +config = ConfigLoader().get_binance_config() + +binance_api = BinanceAPI(config['api_key'], config['api_secret']) + +print(binance_api.get_top_longshort_position_ratio("BTCUSDT", "1h")) \ No newline at end of file