from langchain.llms.base import LLM
from langchain.callbacks.manager import CallbackManagerForLLMRun
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
from functools import partial
from typing import List, Optional, Mapping, Any
import openai
# 基于vllm推理
class LL:
def __init__(self, model, api_base=None, api_key=None):
self.model = model
self.api_base = 'http://192.168.204.120:7000/v1'
self.api_key = 'EMPTY'
def stream_chat(
self,
prompt,
history=[],
max_length=3096,
top_p=0.7,
temperature=0.1
):
openai.api_key = self.api_key
openai.api_base = self.api_base
completion = openai.Completion.create(
model=self.model,
prompt=prompt,
stream=False,
stop=["</s>", '<|im_end|>', '<|endoftext|>'],
temperature=temperature,
use_beam_search=False, n=1, frequency_penalty=1.0, best_of=1,
presence_penalty=1.0, top_p=top_p, top_k=1, max_tokens=max_length
)
response = completion['choices'][0]['text']
history.append([prompt, response])
yield response, history
def chat(self, prompt,
history=[],
max_length=3096,
top_p=0.7,
temperature=0.1
):
openai.api_key = self.api_key
openai.api_base = self.api_base
completion = openai.Completion.create(
model=self.model,
prompt=prompt,
stream=False,
stop=["</s>", '<|im_end|>', '<|endoftext|>'],
temperature=temperature,
use_beam_search=False, n=1, frequency_penalty=1.0, best_of=1,
presence_penalty=1.0, top_p=top_p, top_k=1, max_tokens=max_length
)
respose = completion['choices'][0]['text']
history.append([prompt, respose])
return respose, history
class LLMs(LLM):
model_path: str
max_length: int = 2048
temperature: float = 0.1
top_p: float = 0.7
history: List = []
streaming: bool = True
model: object = None
@property
def _llm_type(self) -> str:
return "llm"
@property
def _identifying_params(self) -> Mapping[str, Any]:
"""Get the identifying parameters."""
return {
"model_path": self.model_path,
"max_length": self.max_length,
"temperature": self.temperature,
"top_p": self.top_p,
"history": [],
"streaming": self.streaming
}
def _call(
self,
prompt: str,
stop: Optional[List[str]] = None,
run_manager: Optional[CallbackManagerForLLMRun] = None,
add_history: bool = False
) -> str:
if self.model is None:
raise RuntimeError("Must call `load_model()` to load model and tokenizer!")
if self.streaming:
text_callback = partial(StreamingStdOutCallbackHandler().on_llm_new_token, verbose=True)
resp = self.generate_resp(prompt, text_callback, add_history=add_history)
else:
resp = self.generate_resp(self, prompt, add_history=add_history)
return resp
def generate_resp(self, prompt, text_callback=None, add_history=True):
resp = ""
index = 0
if text_callback:
for i, (resp, _) in enumerate(self.model.stream_chat(
prompt,
self.history,
max_length=self.max_length,
top_p=self.top_p,
temperature=self.temperature
)):
if add_history:
if i == 0:
self.history += [[prompt, resp]]
else:
self.history[-1] = [prompt, resp]
text_callback(resp[index:])
index = len(resp)
else:
resp, _ = self.model.chat(
prompt,
self.history,
max_length=self.max_length,
top_p=self.top_p,
temperature=self.temperature
)
if add_history:
self.history += [[prompt, resp]]
return resp
def load_model(self):
if self.model is not None:
return
self.model = LL(self.model_path)
def set_params(self, **kwargs):
for k, v in kwargs.items():
if k in self._identifying_params:
self.k = v
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 基于langchain大模型编写智能体python源码+运行说明.zip 启动命令 ```shell python3 demo.py \ --model 你的模型路径 \ --max_length 1024 \ --temperature 0.1 ``` ### 运行结果 ![](pig/run.png) ### agent与vllm融合的启动命令 ```shell python3 demo2.py \ --model 你的模型路径 \ --max_length 1024 \ --temperature 0.1 ``` 注:model2.py对应的self.api_base = 'http://192.168.204.120:7000/v1',修改成自己的vllm服务地址 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于langchain大模型编写智能体python源码+运行说明.zip (16个子文件)
parse_out.py 1KB
demo2.py 1KB
agent.py 3KB
model.py 3KB
.idea
llm_agent.iml 320B
vcs.xml 167B
misc.xml 188B
inspectionProfiles
profiles_settings.xml 174B
modules.xml 270B
.gitignore 47B
model2.py 4KB
pig
run.png 113KB
run2.png 82KB
运行说明.md 484B
tools.py 3KB
demo.py 1KB
共 16 条
- 1
资源评论
onnx
- 粉丝: 9664
- 资源: 5598
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功