不同网站相似的页面百度不收录吗,备案网站电子照幕布,做电商网站用什么软件,百度销售系统登录最近在做大模型agent构建#xff0c;看了许多不错的开源项目#xff0c;但是clone下来就是一整个不能用#xff0c;因为github上开源的项目基本都是基于openai做的。而如果想要转成国内大模型backbone#xff0c;需要修改的地方挺多的。
现在以一个简单的pdf reader agent…最近在做大模型agent构建看了许多不错的开源项目但是clone下来就是一整个不能用因为github上开源的项目基本都是基于openai做的。而如果想要转成国内大模型backbone需要修改的地方挺多的。
现在以一个简单的pdf reader agent为例来做一下相关的解读
原始项目地址GitHub - gabacode/chatPDF: Load a PDF file and ask questions via llama_index and GPT
代码写的非常简单
import logginglogging.basicConfig(levellogging.CRITICAL)import os
from pathlib import Pathimport openai
from dotenv import load_dotenv
from langchain.chat_models import ChatOpenAI
from llama_index import GPTVectorStoreIndex, LLMPredictor, ServiceContext, StorageContext, download_loader, load_index_from_storage
from utils import CACHE, FILES, models, cls, handle_save, handle_exit, initialize, select_fileload_dotenv()
#openai.api_key os.environ[OPENAI_API_KEY]
history []llm_predictor LLMPredictor(llmChatOpenAI(temperature0.618, model_namemodels[gpt-3], max_tokens256))service_context ServiceContext.from_defaults(llm_predictorllm_predictor, chunk_size_limit1024)def make_index(file):cls()print( Loading...)PDFReader download_loader(PDFReader)loader PDFReader()documents loader.load_data(filePath(FILES) / file)if os.path.exists(Path(CACHE) / file):print( Index found in cache)returnelse:print( Index not found in cache, creating it...)index GPTVectorStoreIndex.from_documents(documents, service_contextservice_context)index.storage_context.persist(persist_dirPath(CACHE) / file)def chat(file_name, index):while True:prompt input(\n Prompt: )if prompt exit:handle_exit()elif prompt save:handle_save(str(file_name), history)query_engine index.as_query_engine(response_modecompact)response query_engine.query(prompt)print(\n Response: str(response))history.append({user: prompt, response: str(response)})def ask(file_name):try:print( Loading...)storage_context StorageContext.from_defaults(persist_dirPath(CACHE) / file_name)index load_index_from_storage(storage_context, service_contextservice_context)cls()print(✅ Ready! Lets start the conversation)print(ℹ️ Press CtrlC to exit)chat(file_name, index)except KeyboardInterrupt:handle_exit()if __name__ __main__:initialize()file select_file()if file:file_name Path(file).namemake_index(file_name)ask(file_name)else:print(No files found)handle_exit()假设你的环境已经配置好了即通过以下代码进入
python main.py
现在进行更改首先是llm predictor这个构建直接是chatopenai的配置我们可以做如下更改
#原始代码
#llm_predictor LLMPredictor(llmChatOpenAI(temperature0.618, model_namemodels[gpt-3], max_tokens256))#替换为如下
llm ChatOpenAI(temperature0.95,modelglm-4,openai_api_key你的key,#这个是glm的调用地址openai_api_basehttps://open.bigmodel.cn/api/paas/v4/
)llm_predictor LLMPredictor(llm)
运行后可以继续运行但是到选择pdf后会报错大致错误意思是try超过范围调试后发现应该是调用的向量模型网络不通。安装的是llama_index内置的embedding模型是调用openai进行更改
#需要修改的包文件路径如下假设你是anaconda
#/opt/anaconda3/envs/chatpdf/lib/python3.9/site-packages/llama_index/embeddings/openai.py#需要修改的是get_embeddings()和get_embedding()
#get_embeddings()是批量查询返回向量
#get_embedding()是单独的查询返回向量# def get_embeddings():
# ...
# data openai.Embedding.create(inputlist_of_text, modelengine, **kwargs).data 这是原始调用是openai的
# ...#更改为如下当然你需要注意你的缩紧
#!pip install zhipuaifrom zhipuai import ZhipuAIclient ZhipuAI(api_key你的glm key)
data client.embeddings.create(inputlist_of_text, model embedding-2).data#get_embeddings()也需要做同样的修改
现在测试一下可能会跳出因为禁用词不能进行正常对话但是后面通过更改pdf后可以完成项目拉通