From c6d6959fc42ea050ac5b32d26c4b1941faad9fdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=91=E6=9E=97=5FCyril=20Pilgrim?= Date: Fri, 31 Jan 2025 23:52:31 +0800 Subject: [PATCH] push --- __pycache__/llm_loader.cpython-312.pyc | Bin 3328 -> 3635 bytes .../openai_compatible_loader.cpython-312.pyc | Bin 4359 -> 4537 bytes llm_loader.py | 12 +++++++++- openai_compatible_loader.py | 21 ++++++++++-------- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/__pycache__/llm_loader.cpython-312.pyc b/__pycache__/llm_loader.cpython-312.pyc index 0d6b2398c201429b00cf6f829fb4079a59a8a578..10c85e68e7bce8c2be21130a5d08363fb01b03ce 100644 GIT binary patch delta 574 zcmZpW+APC&nwOW00SLaopOenWy^(JQV|_Y93ezISOolY36y_9`6xI~B6!tmHKpw{& zrcB0Q22D=CTO38Hg{7HAsVSPARThEesd);z3K=CO1;tkS`YDOU8O6!@1*v+8IhmEE zdCA3k$@#hZKwOYml9`l~s+*gilB!>3Sf%WenpzN?nwpKIJF&hXQ!fQ5UJMimX{?fW z$uD(E%tuxOQj%Yql$Z}zARAneScGB*P`(%>29}m|_why3oSu^lmQwc3&(AB)$S*;X zuTKQ(&V`CYR5>MPCTEl;B6|{~C@@&Pzr}Mg>PUwBUd_#yP^DXw2)U?FXoRY~B zOzZ7!feIQJKCm(Hihp9_k`wwM!XP5{L6l2Y{DT;SwDJvk#T&BPHZa*HiEB*@dx{T6#lYFc7xPDzz`MoCFQv6a4lVnL=}YDHph zK~Ab(a(?bDhEg7&MbB0&d^)fD>4e_r%Qu8*G8chtzr~u9n3S4xiz_iFCx3D<^CBB7 zplAcb2Q~&?@f)(LD>yG0`&>}>y&&UvLrUp}yy6X6?HfvJAK6({g+4H_NC|&rWtZgp zz|1MY^?`wNvk6NbGo#|>&Fnjv84Wk*aQidzbFp%LW@ca${J;cceUR9Eibs%<(RcD4 UUU@ECM)QvhK;nbLWOhCs01p*aQ~&?~ diff --git a/__pycache__/openai_compatible_loader.cpython-312.pyc b/__pycache__/openai_compatible_loader.cpython-312.pyc index c93f2da0926559c769f977b7bb3925782fd3bdb3..d4597e6b1902aee2fc03f8097f71d4ed08f32a5b 100644 GIT binary patch delta 1154 zcmZ`%O>7%Q6rSDn+H3ER9Xp9@CstgW#NGV1O=+5_NYsV4hd^5zf@mcoCo`#>ZtSqT zCJl1hNJOOqDyXK1g3=@iAuJFyRWE_6qKY^mRYIDLt93- z3xsnHsEznEd-!TWBDFS3U)L5tt$lH0^ShNHmD6RCvv@5tiZsiY(X{;Z2!dI&&_}t~ zZ*JVaTV0*2u6|$p{BHHZx7CNgZr&;l4!*ImIA444OYNsc64pLhdiK%7&9CN%@_Fr2 z)>PT&r+Oy~nwizIIi%N-)9@YkWKi{3!f3`oBL!Wv_{ls(ILZy+3*0x%XLyH;9E~O_ zEqg1mj!L3!%j0Sd+Q1bJ***|!U7lGa>PJ34w%Vna=Ccf=z4O#xom|4hZBfHnpBlmxEo#&Vi z+#+-}rwCuC!?8RDGK_3KX9+qort&!h;W1%?N#j3+l&`Jam@21^lMZ1A1unSzpmx6pDP&O}>L` zR`ddsZggZqz)!>mMkE;G#G()XBZgD7Pe)!N)n_G>&esv>HT}DOQNla!NJ6?IO*7Nr zGWRZ+W>nvsmfM&yOf;#omP^lTNbklUNCy)ia`CSCUpqupm(!LdOp+(bTtvo;2Js^) zd{waAnW-t1gZcqd$Ks7CEo)kyj4_iN%jPXkFXZ$AvZ5cP&`Us-^+VKm9*uVUzb~i1 zN>(k!KpGk|5gef(N7J1dwb6b30C<2wdyV5W@=@k7z9GLCY)US5f7xAXSdaFsuur1B z*ZugJ+$o*@{hjrex7S0%Woa14mCnXkYnlUVoHxCXTa&`+B)692)BEtKQgqX6>I1l{ z^f5Pavp;pId2X=ckIbE_`1j78vRy&`mC|cAAm&l8W6EcTwrOa0f;4l2+2Z4T-*U(X z#FPxjtR8nvWlxjMk!+>C$FWaiahsB#9_U|9-i!Us$MKK;Ywiwuf#bM8(C&VVy612< Y@G^4&F9o`#GYr$W1t{9%_|HK1eCQ{3 zg=g(S^dLfE5HCS09xQlK3ept>^(2T8@e9Kya==OPwhbGc7#7cb+PM~YgLkA9(|%!;Bh*r@6-EME6x6qW@2>XoGuEv zZeAkAp@%~+2j1}+jlqtn%n+G=9;P>qYgcqn^JGs!N<+FF(m`F`$*U+k)_3+mMgQ*Y zSYF73p74MdW%2-S^I4Dq^KGBJu;P z?yDttsX9}x`65}Ul5rLyBOFE<*kSS`xBqK1`M>^=qb$#lxY)rnb&RHi86bQ4<~#$J z&r^RO^dEB!KBji$ciM>9;fZInZ~G?S#*58xk-mux?bZj6=fLxvUPy?~$2$v__`;G4 z2^zONg6X>CGSRXIRwmj~hkSJXWE(KrJQ2{#%xCVkhd=@T z1h?droL`H#0i$&{AfCs(R+Ivu^HWcm5W=%;8_ endD}X_QVdtU+7e9ID7`e{1)KY{)66#4Sxk%KKLO3 diff --git a/llm_loader.py b/llm_loader.py index f671777..a899976 100644 --- a/llm_loader.py +++ b/llm_loader.py @@ -16,7 +16,17 @@ class LLM_Loader: def INPUT_TYPES(cls): return { "required": { - "base_url": ("STRING", {"default": "https://api.example.com"}), + "base_url": ([ + "Qwen - https://dashscope.aliyuncs.com/compatible-mode/v1", + "DeepSeek - https://api.deepseek.com", + "DouBao - https://api.doubao.com", + "Spark - https://api.spark.com", + "GLM - https://api.glm.com", + "Moonshot - https://api.moonshot.com", + "Baichuan - https://api.baichuan.com", + "MiniMax - https://api.minimax.com", + "StepFun - https://api.stepfun.com" + ], {}), "model": ("STRING", { "default": "", "label": "模型名称", diff --git a/openai_compatible_loader.py b/openai_compatible_loader.py index 79f4266..9f5c398 100644 --- a/openai_compatible_loader.py +++ b/openai_compatible_loader.py @@ -18,29 +18,29 @@ class OpenAICompatibleLoader: return { "required": { "base_url": ("STRING", {"default": "https://api.openai.com"}), - "api_key": ("STRING", {"default": ""}), - "system_prompt": ("STRING", {"default": "", "multiline": True}), - "prompt": ("STRING", {"multiline": True}), - "temperature": ("FLOAT", {"default": 0.7, "min": 0.0, "max": 2.0}), - "max_tokens": ("INT", {"default": 512, "min": 1, "max": 4096}), "model": ("STRING", { "default": "", "label": "模型名称", "allow_edit": True }), + "api_key": ("STRING", {"default": ""}), + "system_prompt": ("STRING", {"default": "我是一个可以使用LLM构建实用功能的Toolkit", "multiline": True}), + "prompt": ("STRING", {"multiline": True}), + "temperature": ("FLOAT", {"default": 0.7, "min": 0.0, "max": 2.0}), + "max_tokens": ("INT", {"default": 512, "min": 1, "max": 4096}), } } RETURN_TYPES = ("STRING",) - RETURN_NAMES = ("response",) + RETURN_NAMES = ("text",) FUNCTION = "generate" CATEGORY = "DeepSeek_Toolkit" - async def async_generate(self, payload: dict, base_url: str, api_key: str): + async def async_generate(self, payload: dict, actual_base_url: str, api_key: str): try: async with ClientSession() as session: async with session.post( - f"{base_url}/chat/completions", + f"{actual_base_url}/chat/completions", headers={ "Content-Type": "application/json", "Authorization": f"Bearer {api_key}" @@ -75,6 +75,9 @@ class OpenAICompatibleLoader: selected_model = model if model else "default-model" print(f"[INFO] 使用模型: {selected_model}") + # 提取实际的 base_url 部分 + actual_base_url = base_url.split(" - ")[-1] + payload = { "model": selected_model, "messages": messages, @@ -83,7 +86,7 @@ class OpenAICompatibleLoader: } try: - return asyncio.run(self.async_generate(payload, base_url, api_key)) + return asyncio.run(self.async_generate(payload, actual_base_url, api_key)) except Exception as e: raise Exception(f"请求失败: {str(e)}")