langchain 0.3.x 版本如何初始化本地模型

langchain 0.3.25

本地模型使用Xinference 搭建,地址为http://127.0.0.1:9997/v1

langchain 0.3.25 创建本地模型

from langchain.chat_models import init_chat_model

model = init_chat_model(model="qwen2.5-instruct", model_provider="openai")

其中"qwen2.5-instruct" 是本地模型的名称

这么创建,没有错,但是在调用的时候

model.invoke([HumanMessage(content="hi!,who are you ?")])

会报 connection error,是本地模型的url 和api_key 没有传进来,还是会调openai公开的接口

查看init_chat_model 源码

在***/site-packages/langchain/chat_models/base_client.py 函数里

def _init_chat_model_helper(
    model: str, *, model_provider: Optional[str] = None, **kwargs: Any
) -> BaseChatModel:
    model, model_provider = _parse_model(model, model_provider)
    if model_provider == "openai":
        _check_pkg("langchain_openai")
        from langchain_openai import ChatOpenAI
        return ChatO

### 构建本地知识库进行问答 为了使用 LangChain 0.3 版本构建本地知识库并实现问答功能,可以遵循以下方法: #### 安装依赖项 确保安装了必要的 Python 库来支持 LangChain 的运行环境。可以通过 pip 来完成这些包的安装。 ```bash pip install langchain==0.3 ``` #### 初始化项目结构 创建一个新的工作目录用于存放所有的配置文件、数据集以及模型权重等资源,并设置合理的文件夹架构以便于管理和维护[^1]。 #### 加载预训练模型 利用 Hugging Face 或其他平台上的预训练语言模型作为基础框架,加载适合特定领域应用的语言理解能力较强的模型实例。 ```python from transformers import AutoModelForQuestionAnswering, AutoTokenizer model_name = "distilbert-base-cased-distilled-squad" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForQuestionAnswering.from_pretrained(model_name) ``` #### 准备语料库 收集整理目标领域的文档资料形成一个高质量的小型语料库,这将是后续向量化处理的基础素材。对于静态文本内容可以直接读取存储;而对于动态更新的内容则建议通过 API 接口定期抓取最新信息补充到现有数据库中去。 #### 文档嵌入表示 采用合适的算法将上述准备好的原始文本转换成能够被机器学习算法有效使用的特征向量形式。这里推荐使用 Sentence-BERT 这样的双塔编码器来进行高效的相似度计算操作。 ```python from sentence_transformers import SentenceTransformer embedder = SentenceTransformer('all-MiniLM-L6-v2') corpus_embeddings = embedder.encode(corpus_texts, convert_to_tensor=True) ``` #### 配置索引服务 为了让检索过程更加高效快捷,在线部署时通常会引入专门设计过的搜索引擎组件比如 Elasticsearch 或者 Faiss 等工具帮助加速最近邻查询的速度性能表现。 #### 实现问答逻辑 最后一步就是编写具体的业务流程代码片段,接收用户的自然语言输入请求之后调用之前定义好的各个模块依次执行相应的任务直到返回最终答案给前端展示出来为止。 ```python def get_answer(question_text): question_embedding = embedder.encode([question_text], convert_to_tensor=True) hits = util.semantic_search(question_embedding, corpus_embeddings)[0] top_k_results = sorted(hits, key=lambda x: x['score'], reverse=True)[:5] answers = [] for hit in top_k_results: document_id = hit['corpus_id'] score = hit['score'] answer = { 'document': documents[document_id], 'relevance_score': score, } answers.append(answer) return answers ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值