소스 검색

Feat: support vision llm for gpustack (#6636)

### What problem does this PR solve?
https://github.com/infiniflow/ragflow/issues/6138

This PR is going to support vision llm for gpustack, modify url path
from `/v1-openai` to `/v1`

### Type of change

- [x] New Feature (non-breaking change which adds functionality)
tags/v0.18.0
Alex Chen 7 달 전
부모
커밋
46b5e32cd7
No account linked to committer's email address
6개의 변경된 파일22개의 추가작업 그리고 11개의 파일을 삭제
  1. 4
    2
      rag/llm/__init__.py
  2. 2
    2
      rag/llm/chat_model.py
  3. 11
    1
      rag/llm/cv_model.py
  4. 2
    3
      rag/llm/embedding_model.py
  5. 2
    2
      rag/llm/sequence2txt_model.py
  6. 1
    1
      rag/llm/tts_model.py

+ 4
- 2
rag/llm/__init__.py 파일 보기

YiCV, YiCV,
HunyuanCV, HunyuanCV,
AnthropicCV, AnthropicCV,
SILICONFLOWCV
SILICONFLOWCV,
GPUStackCV,
) )


from .rerank_model import ( from .rerank_model import (
SparkTTS, SparkTTS,
XinferenceTTS, XinferenceTTS,
GPUStackTTS, GPUStackTTS,
SILICONFLOWTTS
SILICONFLOWTTS,
) )


EmbeddingModel = { EmbeddingModel = {
"Tencent Hunyuan": HunyuanCV, "Tencent Hunyuan": HunyuanCV,
"Anthropic": AnthropicCV, "Anthropic": AnthropicCV,
"SILICONFLOW": SILICONFLOWCV, "SILICONFLOW": SILICONFLOWCV,
"GPUStack": GPUStackCV,
} }


ChatModel = { ChatModel = {

+ 2
- 2
rag/llm/chat_model.py 파일 보기

def __init__(self, key=None, model_name="", base_url=""): def __init__(self, key=None, model_name="", base_url=""):
if not base_url: if not base_url:
raise ValueError("Local llm url cannot be None") raise ValueError("Local llm url cannot be None")
if base_url.split("/")[-1] != "v1-openai":
base_url = os.path.join(base_url, "v1-openai")
if base_url.split("/")[-1] != "v1":
base_url = os.path.join(base_url, "v1")
super().__init__(key, model_name, base_url) super().__init__(key, model_name, base_url)

+ 11
- 1
rag/llm/cv_model.py 파일 보기

except Exception as e: except Exception as e:
yield ans + "\n**ERROR**: " + str(e) yield ans + "\n**ERROR**: " + str(e)


yield total_tokens
yield total_tokens

class GPUStackCV(GptV4):
def __init__(self, key, model_name, lang="Chinese", base_url=""):
if not base_url:
raise ValueError("Local llm url cannot be None")
if base_url.split("/")[-1] != "v1":
base_url = os.path.join(base_url, "v1")
self.client = OpenAI(api_key=key, base_url=base_url)
self.model_name = model_name
self.lang = lang

+ 2
- 3
rag/llm/embedding_model.py 파일 보기

def __init__(self, key, model_name, base_url): def __init__(self, key, model_name, base_url):
if not base_url: if not base_url:
raise ValueError("url cannot be None") raise ValueError("url cannot be None")
if base_url.split("/")[-1] != "v1-openai":
base_url = os.path.join(base_url, "v1-openai")
if base_url.split("/")[-1] != "v1":
base_url = os.path.join(base_url, "v1")


print(key,base_url)
self.client = OpenAI(api_key=key, base_url=base_url) self.client = OpenAI(api_key=key, base_url=base_url)
self.model_name = model_name self.model_name = model_name

+ 2
- 2
rag/llm/sequence2txt_model.py 파일 보기

def __init__(self, key, model_name, base_url): def __init__(self, key, model_name, base_url):
if not base_url: if not base_url:
raise ValueError("url cannot be None") raise ValueError("url cannot be None")
if base_url.split("/")[-1] != "v1-openai":
base_url = os.path.join(base_url, "v1-openai")
if base_url.split("/")[-1] != "v1":
base_url = os.path.join(base_url, "v1")
self.base_url = base_url self.base_url = base_url
self.model_name = model_name self.model_name = model_name
self.key = key self.key = key

+ 1
- 1
rag/llm/tts_model.py 파일 보기

} }


response = requests.post( response = requests.post(
f"{self.base_url}/v1-openai/audio/speech",
f"{self.base_url}/v1/audio/speech",
headers=self.headers, headers=self.headers,
json=payload, json=payload,
stream=stream stream=stream

Loading…
취소
저장