【人工智能】langchain + qwen2.5 使用示例

1. qwen2.5 + langchain + text2vec-large-chinese

实现本地知识库向量化后保存,然后langchain进行qa数据流

from transformers import AutoModelForCausalLM, AutoTokenizer
from abc import ABC
from langchain.llms.base import LLM
from typing import Any, List, Mapping, Optional
from langchain.callbacks.manager import CallbackManagerForLLMRun
import os
import re
import torch
import numpy as np
from langchain.vectorstores import FAISS
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.docstore.document import Document
from langchain.prompts import PromptTemplate
from langchain.chains import RetrievalQA

model_name = "/home/sky/model_data/Qwen/Qwen2.5-7B-Instruct"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

class Qwen(LLM, ABC):
    max_token: int = 10000
    temperature: float = 0.01
    top_p = 0.9
    history_len: int = 3

    def __init__(self):
        super().__init__()

    @property
    def _llm_type(self) -> str:
        return "Qwe
### 实现LangChain中的异步调用 在LangChain中,为了有效利用资源并提高性能,可以采用`AsyncCallbackHandler`来处理异步操作。这允许应用程序在等待长时间运行的任务完成的同时继续执行其他任务[^1]。 对于大型模型而言,由于其计算密集性和潜在的高延迟响应时间,使用异步方法尤为重要。通过这种方式可以在不影响用户体验的情况下加载或查询这些复杂的AI组件。当涉及到具体实现时,则需依赖于所选平台支持的相关库函数来进行非阻塞式的请求发送与接收。 下面给出一段Python代码作为示例展示如何创建一个简单的异步处理器: ```python from langchain.callbacks.base import AsyncCallbackHandler import asyncio class MyCustomAsyncHandler(AsyncCallbackHandler): async def on_llm_start(self, serialized, prompts, **kwargs): print("LLM started.") async def on_llm_end(self, response, **kwargs): print(f"LLM finished with result {response}.") async def main(): handler = MyCustomAsyncHandler() await handler.on_llm_start({}, ["prompt"]) await asyncio.sleep(2) # Simulate LLM processing time. await handler.on_llm_end("example_result") if __name__ == "__main__": asyncio.run(main()) ``` 此脚本定义了一个继承自`AsyncCallbackHandler`类的新类,并重写了两个关键的方法:`on_llm_start()` 和 `on_llm_end()`. 这些方法将在相应的生命周期事件发生时被自动触发。最后,在主程序里实例化该对象并通过模拟的方式展示了整个流程的工作原理。 值得注意的是,除了上述基础结构外,还可以进一步扩展此类以适应特定需求或者集成更多特性如错误处理机制等。此外,如果要删除不再使用的模型版本,可按照如下方式操作: ```bash ollama rm qwen2.5-3bnsfw:latest ``` 这条命令会移除名为`qwen2.5-3bnsfw:latest`的大规模预训练语言模型文件及其关联数据[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值