【大模型入门】ollama + lobechat打造个人专属大模型助手
这是一系列教小白怎么使用大模型的文章,不讲原理和公式,就讲小白都听得懂的怎么安装使用。
01
—
简介
昨天介绍了在本地运行大模型的工具LM studio,他上手简单,但想要远程调用或者在手机上使用就不是很方便,今天介绍一下ollama,他可以提供一个服务,然后就可以远程使用了。当然ollama还可以提供AIP让我们的程序去调用,这样大模型就可以赋能我们正在开发的应用了,例如可以通过构建智能体来实现自动漏洞复现,自动写POC。
02
—
安装ollama
ollama的安装很简单,先上官网下载安装包
https://ollama.com/
然后选择适合自己操作系统的安装包即可,下载完了直接双击运行就行了。等待安装完成,打开cmd界面,输入ollama -h
说明ollama已经安装完成
03
—
模型下载
上官网查看大模型
然后选择一个自己喜欢的模型打开,右侧能看到运行命令,复制到本地cmd命令行进行粘贴,ollama会自动帮我们下载并运行模型
然后就等待漫长的下载,下载完成就可以使用了
04
—
使用本地模型
ollama目前官网提供的模型中支持中文的只有一个llama2微调的大模型,那怎么使用国产的中文大模型呢?
首先去哪里找这些大模型,最全的肯定是huggingface,注意一定要下载gguf文件,别的文件格式使用不了。
https://huggingface.co/
也可以上国内的大模型社区找自己喜欢的模型
https://modelscope.cn/home
首先找到昨天下载的大模型gguf文件的目录,在这个目录下面新建一个文件Modelfile.txt,在文件中写入
FROM D:\LargeModel\GGUF-LIST\TheBloke\Qwen-1_7B-Chat-q5-GGUF\qwen1_5-7b-chat-q5_k_m.gguf
后面这个路径就是gguf文件的全路径
然后在cmd命令行运行命令创建模型,命令中 qwen1-7b 是模型的名称,-f指定上面创建的Modelfile.txt文件,这个文件的作用是告诉ollama去哪里找大模型的gguf文件
ollama create qwen1-7b -f D:\LargeModel\GGUF-LIST\TheBloke\Qwen-1_7B-Chat-q5-GGUF\Modelfile.txt
模型创建完成
使用ollama list命令查看本地模型
ollama list
运行这个模型来回答问题
ollama run qwen1-7b
05
—
安装lobe-chat
lobe-chat是一个开源的、现代设计的LLM/AI聊天框架,支持多家厂商的大模型,可以一键部署个人专用GPT聊天应用程序。
lobe-chat支持docker安装,简单方便一条命令搞定,其中sk-xxxx是你自己chatGPT账号的key,如果使用本地模型的话可以不管
$ docker run -d -p 3210:3210 \` `-e OPENAI_API_KEY=sk-xxxx \` `-e ACCESS_CODE=lobe66 \` `--name lobe-chat \` `lobehub/lobe-chat
安装完成后IP+3210访问
到此lobechat安装完成
05
—
lobe-chat配置本地大模型
首先启动ollama服务
ollama serve
然后运行大模型
ollama run qwen1-7b
然后找到设置 ->语言模型,修改接口代理地址http://localhost:11434和模型,模型选择qwen1-7b
然后再修改下默认助手中的模型即可
06
—
python调用ollama
运行下面这段程序需要安装python3的环境,做人工智能建议直接安装anaconda,anaconda可以帮我们管理一些包,也可以通过conda管理虚拟环境,使用起来非常方便。通常我喜欢在jupyter中调试代码,anaconda也集成了这个环境。
`# -*- coding = utf-8 -*-``import json``import sys``import traceback``import logging` `#######################日志配置#######################``import requests``from requests.adapters import HTTPAdapter` `logging.basicConfig(` `level=logging.INFO,` `format='%(asctime)s [%(levelname)s]: %(message)s', # 指定日志输出格式` `datefmt='%Y-%m-%d %H:%M:%S' # 指定日期时间格式``)` `# 创建一个日志记录器``formatter = logging.Formatter('%(asctime)s [%(levelname)s]: %(message)s') # 指定日志输出格式``logger = logging.getLogger(__name__)``logger.setLevel(logging.INFO)` `if sys.platform == "linux":` `# 创建一个文件处理器,将日志写入到文件中` `file_handler = logging.FileHandler('/data/logs/app.log')``else:` `# 创建一个文件处理器,将日志写入到文件中` `file_handler = logging.FileHandler('E:\\logs\\app.log')` `file_handler.setFormatter(formatter)``# 创建一个控制台处理器,将日志输出到控制台``# console_handler = logging.StreamHandler()``# console_handler.setFormatter(formatter)` `# 将处理器添加到日志记录器中``logger.addHandler(file_handler)``# logger.addHandler(console_handler)` `DEFAULT_MODEL = "qwen1-7b"``DEFAULT_IP='127.0.0.1'``DEFAULT_PORT=11434``DEFAULT_MAX_TOKENS = 32768``DEFAULT_CONNECT_TIMEOUT=3``DEFAULT_REQUEST_TIMEOUT=60``DEFAULT_MAX_RETRIES=0``DEFAULT_POOLSIZE=100` `class Model:` `def __init__(self):` `self.headers = {"User-Agent": "Test Client"}` `self.s = requests.Session()` `self.s.mount('http://', HTTPAdapter(pool_connections=DEFAULT_POOLSIZE, pool_maxsize=DEFAULT_POOLSIZE, max_retries=DEFAULT_MAX_RETRIES))` `self.s.mount('https://', HTTPAdapter(pool_connections=DEFAULT_POOLSIZE, pool_maxsize=DEFAULT_POOLSIZE, max_retries=DEFAULT_MAX_RETRIES))` ` def chat(self, message, history=None, system=None, config=None, stream=True):` `if config is None:` `config = {'temperature': 0.45, 'top_p': 0.9, 'repetition_penalty': 1.2, 'max_tokens': DEFAULT_MAX_TOKENS,'n':1}` `logger.info(f'config: {config}')` ` messages = []` `if system is not None:` `messages.append({"role": "system", "content": system})` ` if history is not None:` `if len(history) > 0 and len(history) % 2 == 0:` `for his in history:` `user,assistant = his` ` user_obj = {"role": "user", "content": user}` `assistant_obj = {"role": "assistant", "content": assistant}` ` messages.append(user_obj)` `messages.append(assistant_obj)` ` if message is None:` `raise RuntimeError("prompt不能为空!")` `else:` `messages.append({"role": "user", "content": message})` `logger.info(messages)` `try:` `merge_pload = {"model": DEFAULT_MODEL, "messages": messages, **config}` `logger.info(merge_pload)` ` response = self.s.post(f"http://{DEFAULT_IP}:{DEFAULT_PORT}/api/chat", headers=self.headers,` `json=merge_pload, stream=stream, timeout=(DEFAULT_CONNECT_TIMEOUT, DEFAULT_REQUEST_TIMEOUT))` `str = ''` `for msg in response:` `# logger.info(msg)` `if msg and len(msg) > 0:` `decode_msg = msg.decode('UTF-8')` `if '\n' in decode_msg :` `if len(str) == 0:` `obj = json.loads(decode_msg)` `if 'message' in obj:` `content = obj['message']['content']` `if content is not None:` `yield content` `else:` `str = str + decode_msg` `obj = json.loads(str)` `if 'message' in obj:` `content = obj['message']['content']` `if content is not None:` `str=''` `yield content` `else:` `str = str + decode_msg` `except Exception as e:` `traceback.print_exc()` `if __name__ == '__main__':` `model = Model()` `message = '我家有什么特产?'` `system = 'You are a helpful assistant.'` `history = [('hi,你好','你好!有什么我可以帮助你的吗?'),('我家在天水,很好玩哦','天水是一个美丽的城市,有很多有趣的地方可以去。'),]` `config = {'temperature': 0.45, 'top_p': 0.9, 'repetition_penalty': 1.2, 'max_tokens': 8192}` `gen = model.chat(message=message, history=history, system=system, config=config, stream=True)` `results = []` `for value in gen:` `results.append(value)` `str = ''.join(results)` `logger.info(str)`
运行结果如下
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
更多推荐
所有评论(0)