paper_generate / llm.py
weiwei1392
init
182d290
raw
history blame
4.38 kB
from langchain.llms.base import LLM
from typing import Optional, List
from langchain.llms.utils import enforce_stop_tokens
import requests
FORWARD_KEY = 'fk198719-Pmvv22OqZiovaxRq6YxCzkTcd6UVVX5O'
class ChatGLM(LLM):
max_length: int = 10000
temperature: float = 0
top_p = 0.9
tokenizer: object = None
model: object = None
history_len: int = 10
history = []
URL = 'http://183.131.3.48:9200'
HEADERS = {'Content-Type': 'application/json'}
@property
def _llm_type(self) -> str:
return "ChatGLM"
def _call(self,
prompt: str,
history: Optional[List[List[str]]] = None,
stop: Optional[List[str]] = None) -> str:
if history:
history = [i for i in history if i[0] is not None] # clear out the system message
history = history[-self.history_len:]
params = {'tokenizers': self.tokenizer, 'prompt': prompt, 'history': history, 'top_p': self.top_p,
'max_length': self.max_length, 'temperature': self.temperature}
response = requests.post(self.URL, headers=self.HEADERS, json=params).json()
answer = response['response']
if stop is not None:
answer = enforce_stop_tokens(answer, stop)
# question = prompt.split('question:\n')[-1]
# self.history = self.history+[[prompt, response]]
return answer
class OpenAI3(LLM):
max_length: int = 10000
temperature: float = 0.2
top_p = 0.9
tokenizer: object = None
model: object = None
history_len: int = 10
history = []
HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer fk198719-Pmvv22OqZiovaxRq6YxCzkTcd6UVVX5O'}
URL ='https://openai.api2d.net/v1/chat/completions'
MODEL_NAME = "gpt-3.5-turbo"
@property
def _llm_type(self) -> str:
return "ChatGLM"
def _call(self,
prompt: str,
history: Optional[List[List[str]]] = None,
stop: Optional[List[str]] = None) -> str:
if history:
history = [i for i in history if i[0] is not None]
history = history[-self.history_len:]
message = [[{"role": "user", "content": i[0]}, {"role": "assistant", "content": i[1]}] for i in history]
message = sum(message, [])
else:
message = []
message.append({"role": "user", "content": prompt})
params = {"model": self.MODEL_NAME, "messages": message, 'temperature': self.temperature}
response = requests.post(self.URL, headers=self.HEADERS, json=params).json()
answer = response['choices'][0]['message']['content']
if stop is not None:
answer = enforce_stop_tokens(answer, stop)
# question = prompt.split('question:\n')[-1]
# self.history = self.history+[[question, response]]
return answer
class OpenAI4(LLM):
max_length: int = 10000
temperature: float = 0.2
top_p = 0.9
tokenizer: object = None
model: object = None
history_len: int = 10
history = []
HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer fk198719-Pmvv22OqZiovaxRq6YxCzkTcd6UVVX5O'}
URL ='https://openai.api2d.net/v1/chat/completions'
MODEL_NAME = "gpt-4"
@property
def _llm_type(self) -> str:
return "ChatGLM"
def _call(self,
prompt: str,
history: Optional[List[List[str]]] = None,
stop: Optional[List[str]] = None) -> str:
if history:
history = [i for i in history if i[0] is not None]
history = history[-self.history_len:]
message = [[{"role": "user", "content": i[0]}, {"role": "assistant", "content": i[1]}] for i in history]
message = sum(message, [])
else:
message = []
message.append({"role": "user", "content": prompt})
params = {"model": self.MODEL_NAME, "messages": message, 'temperature': self.temperature}
response = requests.post(self.URL, headers=self.HEADERS, json=params).json()
answer = response['choices'][0]['message']['content']
if stop is not None:
answer = enforce_stop_tokens(answer, stop)
# question = prompt.split('question:\n')[-1]
# self.history = self.history+[[question, response]]
return answer