看完你将理解:

看官方文档的重要性

选择教程的重要性

理解c++处理大模型文件的格式

浅浅理解,在不同的环境下运行文件的逻辑

官方模型调用与部署

下载

1第一步下载ollama.exe

www.ollama.com/download

然后到ollama的指令那里,找想要使用的对应模型

www.ollama.com/library

没有魔法的需要去镜像(需自行探索

2先调到你要下载的模型,要根据自己电脑性能选择

然后cmd进入命令行输入指令

小心每天别输入不一样的指令,不然会重新下载

Error: max retries exceeded: unexpected EOF

怎么还报错了

部署

可以docker部署

用ollama官方的 docs.openwebui.com

也可以直接下载一个exechatboxai.app/zh

调用

Ollama的地址,默认是http://localhost:11434,Ollama不需要Api Key随便写或者不用写

我好像一个小丑,它通过本地调用的方式是直接本地接口,而不是API

我一直以为是和openai一样的,还是要好好看官方的文档,ollama可以去github看readme

让ai写一个通过接口调用的代码就行

import requests

class SimpleChatLLM:
    def __init__(self, key, endpoint, model):
        self.key = key
        self.endpoint = endpoint
        self.model = model

    def chat(self, prompt):
        headers = {
            "Authorization": f"Bearer {self.key}",
            "Content-Type": "application/json"
        }
        data = {
            "model": self.model,
            "prompt": prompt,
            "max_tokens": 50  # 限制回答的 token 长度
        }
        
        response = requests.post(f"{self.endpoint}/v1/completions", headers=headers, json=data)
        
        if response.status_code == 200:
            return response.json().get("choices", [])[0].get("text", "").strip()
        else:
            print("Error:", response.status_code, response.text)
            return None

# 配置参数
key = "sk-..."  # 替换为你的实际 API 密钥
endpoint = "https://api.siliconflow.cn"
model = "Qwen/Qwen2-7B-Instruct"

# 创建聊天实例
chat_llm = SimpleChatLLM(key, endpoint, model)

# 测试简单对话
response = chat_llm.chat("how are you?")
print("AI Response:", response)
import requests

class SimpleChatLLM:
    def __init__(self, key, endpoint, model):
        self.key = key
        self.endpoint = endpoint
        self.model = model

    def chat(self, prompt):
        headers = {
            "Authorization": f"Bearer {self.key}",
            "Content-Type": "application/json"
        }
        data = {
            "model": self.model,
            "prompt": prompt,
            "max_tokens": 50  # 限制回答的 token 长度
        }
        
        response = requests.post(f"{self.endpoint}/v1/completions", headers=headers, json=data)
        
        if response.status_code == 200:
            return response.json().get("choices", [])[0].get("text", "").strip()
        else:
            print("Error:", response.status_code, response.text)
            return None

# 配置参数
key = "sk-..."  # 替换为你的实际 API 密钥
endpoint = "https://api.siliconflow.cn"
model = "Qwen/Qwen2-7B-Instruct"

# 创建聊天实例
chat_llm = SimpleChatLLM(key, endpoint, model)

# 测试简单对话
response = chat_llm.chat("how are you?")
print("AI Response:", response)

问答

问答的时候记得用英文,因为ollama没有中文能力

如果有自己的需求的话可以向下继续看,学会调用微调的大模型让他具备中文能力(自己微调还有一定距离)

huggingface调用微调ollama大模型

进入huggingface找一个自己中意的大模型

正确省流

有一个方案是我已经成功过的-这个方案不需要本地,全部api实现

用huggingface自带的transformers库和huggingface的api实现,直接把参考文档代码和要求甩给gpt,把该下载的包都下载,就能实现了,不过多赘述,我还试了一下用别人的flux,直接实现无限白嫖

可以后续单独出一篇huggingface食用指南

接下来是第二种方案,下载下来本地调用

有两种格式GGUF和Safetensor

Safetensor是用来微调和其他操作的,官方给的就是这个

GGUF是用来交流学习的,这个就可以下载别人的了,我们选一个中文微调过的

https://huggingface.co/hfl/llama-3-chinese-8b-instruct-v3-gguf/tree/main

1直接在你下载ollama的地方新建一个文本文件,命名为Modelfile

2输入下面代码,然后保存


FROM D:/AI/ollama/Llama3-FP16.gguf

3然后在命令行执行ollama的指令(这个是用来命名你这个模型叫llama3的)


ollama create llama3 -f Modelfile

4然后运行这个你命名的大模型


ollama run llama3

5结束

不想看错误示范到这里可以结束了

错误省流

需要安装 pip install llama-cpp-python 这个包。

我搞了半天单独下载llama-cpp-python,最后还是算了,直接全下得了

这是它的readmehttps://github.com/ggerganov/llama.cpp/blob/master/README.md#prepare-and-quantize

为什么一定要cpp这是gpt的回答(我从这里开始,就在正确的道路上越走越远,这句话是错的,GGUF文件是不需要cpp的,cpp就是用来把别的文件形式转化为GGUF的)

就是要用它去解析GGUF文件,实现调用

预想路径

1 下载

visualstudio build tools+cmake

https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/

https://cmake.org/download/

2 打开visualstudio build tools的命令行执行命令(点启动

3克隆官方仓库


git clone https://github.com/ggerganov/llama.cpp cd llama.cpp

4然后再cd到你路径下载的路径,再执行


cmake -B build -DCMAKE_BUILD_TYPE=Debug cmake --build build

5结束

艰辛历程(详细遇到的所有问题

希望你遇不到这些问题,希望你遇到的问题也被我遇到过了

注意vs的build tools(不是正常的visualstudio!!!!

直接pip install llama-cpp-python会报错

下载失败,gpt和github官方文档都要我安装visual studio(电脑真没多少地方了)

下载的时候记得选择有cmake的c++选项(不建议选太多,太多了电脑内存真的要爆炸,我关于ai和编程的东西已经快200g了

我——???  这两个还不是同一个,好好好

成了成了

这回我们再来pip install llama-cpp-python

怎么卡在这不动了

难道一定要在 tools运行

网不好?防火墙没关?

应该是网不好,至少他还在转圈,我gpt也卡了

没内存?好好好,c盘要炸了

你别急,我还没急,今天必须把你给下下来

https://github.com/ggerganov/llama.cpp/blob/master/docs/build.md

我再看一眼官方文档

四种方法是吧,我用第二种

先从这里启动(不然一堆报错我替你们试过了,不好看看文档的惩罚)

官方文档里有说

然后再cd路径

cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build

别急,胜利就在眼前

我这回是构建成功了吧

还是要下载llama-cpp-python吗

https://github.com/abetlen/llama-cpp-python我不信了

我等了快半个小时,他终于安装完了

下载到本地

我的4060,12g显存应该能支持q8

根据自己需求来,文件越小需要配置越少

最终代码
# 导入需要的库
from llama_cpp import Llama
from typing import Optional, List, Mapping, Any
from langchain.llms.base import LLM

# 模型的名称和路径常量
MODEL_NAME = 'llama-2-7b-chat.ggmlv3.q4_K_S.bin'
MODEL_PATH = '/home/huangj/03_Llama/'

# 自定义的LLM类,继承自基础LLM类
class CustomLLM(LLM):
    model_name = MODEL_NAME

    # 该方法使用Llama库调用模型生成回复
    def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str:
        prompt_length = len(prompt) + 5
        # 初始化Llama模型,指定模型路径和线程数
        llm = Llama(model_path=MODEL_PATH+MODEL_NAME, n_threads=4)
        # 使用Llama模型生成回复
        response = llm(f"Q: {prompt} A: ", max_tokens=256)
        
        # 从返回的回复中提取文本部分
        output = response['choices'][0]['text'].replace('A: ', '').strip()

        # 返回生成的回复,同时剔除了问题部分和额外字符
        return output[prompt_length:]

    # 返回模型的标识参数,这里只是返回模型的名称
    @property
    def _identifying_params(self) -> Mapping[str, Any]:
        return {"name_of_model": self.model_name}

    # 返回模型的类型,这里是"custom"
    @property
    def _llm_type(self) -> str:
        return "custom"
    

# 初始化自定义LLM类
llm = CustomLLM()

# 使用自定义LLM生成一个回复
result = llm("昨天有一个客户抱怨他买了花给女朋友之后,两天花就枯了,你说作为客服我应该怎么解释?")

# 打印生成的回复
print(result)
换个思路,我再搜一搜

原来还有一种方法

无敌了。。。。。。。。。。。。。。。。。。。。。。。。。。。

tmd,langchain手册里的文件格式是ggml,我下载的是gguf,根本就不需要ollama.cpp

你等我下一个小一点的别的格式模型,我真的不想我一下午在做无用功

https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/tree/main

还是有问题,说我版本位数不匹配,一个64一个32

按照gpt说的,试了一下重新加载所有文件和版本

然后上指定位置更改制定的ollama.dll

还重新又去看了几遍llama.cpp的readme,还是没解决

先放在这吧

最后回顾一下

最关键的点就是

GGUF格式根本不需要llama.cpp,而手册里是bin格式,是需要的,现在已经过时了

这个锅,我必须甩给gpt,他这一本正经的胡说八道,害我走了太多弯路了,我下次再也不这么肯定的问他了

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐