RAG实战6-如何在LlamaIndex中使用自己搭建的API

这篇具有很好参考价值的文章主要介绍了RAG实战6-如何在LlamaIndex中使用自己搭建的API。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RAG实战6-如何在LlamaIndex使用自己搭建的大模型API

在搭建一个大模型API服务中,我们介绍了如何使用SWIFT框架搭建一个大模型API服务。在RAG实战1-5中,我们一直使用的是本地加载大模型的方式来调用大模型,本文将介绍如何在LlamaIndex中使用自己搭建的大模型API。

LlamaIndex支持部分厂商的API配置,如OpenAI,但我们想使用的是自己在服务器上搭建的API服务,这个时候需要我们定制一个LLM类,代码如下:

from typing import Any
from llama_index.core import PromptTemplate, Settings, StorageContext, load_index_from_storage
from llama_index.core.base.llms.types import LLMMetadata, CompletionResponse, CompletionResponseGen
from llama_index.core.llms import CustomLLM
from llama_index.core.llms.callbacks import llm_completion_callback
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from swift.llm import get_model_list_client, XRequestConfig, inference_client

# API
model_list = get_model_list_client()
model_type = model_list.data[0].id
print(f'API model_type: {model_type}')
request_config = XRequestConfig(seed=42)


# 定制自己的LLM类
class BianCangLLM(CustomLLM):
    context_window: int = 4096
    num_output: int = 2048
    model_name: str = "BianCang"

    @property
    def metadata(self) -> LLMMetadata:
        """Get LLM metadata."""
        return LLMMetadata(
            context_window=self.context_window,
            num_output=self.num_output,
            model_name=self.model_name,
        )

    @llm_completion_callback()
    def complete(self, prompt: str, **kwargs: Any) -> CompletionResponse:
        resp = inference_client(model_type, prompt, [], request_config=request_config)
        return CompletionResponse(text=resp.choices[0].message.content)

    @llm_completion_callback()
    def stream_complete(
        self, prompt: str, **kwargs: Any
    ) -> CompletionResponseGen:
        resp = inference_client(model_type, prompt, [], request_config=request_config)
        response = ""
        for token in resp.choices[0].message.content:
            response += token
            yield CompletionResponse(text=response, delta=token)


# 定义system prompt
SYSTEM_PROMPT = """你是一个医疗人工智能助手。"""
query_wrapper_prompt = PromptTemplate(
    "[INST]<<SYS>>\n" + SYSTEM_PROMPT + "<</SYS>>\n\n{query_str}[/INST] "
)

# 定义qa prompt
qa_prompt_tmpl_str = (
    "上下文信息如下。\n"
    "---------------------\n"
    "{context_str}\n"
    "---------------------\n"
    "请根据上下文信息而不是先验知识来回答以下的查询。"
    "作为一个医疗人工智能助手,你的回答要尽可能严谨。\n"
    "Query: {query_str}\n"
    "Answer: "
)
qa_prompt_tmpl = PromptTemplate(qa_prompt_tmpl_str)

# 使用自定义的LLM API
Settings.llm = BianCangLLM()

# 使用llama-index-embeddings-huggingface构建本地embedding模型
Settings.embed_model = HuggingFaceEmbedding(
    model_name="E:\\LLMs\\bge-base-zh-v1.5"
)

# 从存储文件中读取embedding向量和向量索引
storage_context = StorageContext.from_defaults(persist_dir="doc_emb")
index = load_index_from_storage(storage_context)

# 构建查询引擎
query_engine = index.as_query_engine(similarity_top_k=5)

# 更新查询引擎中的prompt template
query_engine.update_prompts(
    {"response_synthesizer:text_qa_template": qa_prompt_tmpl}
)

# 查询获得答案
response = query_engine.query("不耐疲劳,口燥、咽干可能是哪些证候?")
print(response)

代码的核心是实现BianCangLLM类,该类继承自LlamaIndex的CustomLLM类。我们需要重写父类中的def metadata(self) -> LLMMetadatadef complete(self, prompt: str, **kwargs: Any) -> CompletionResponsedef stream_complete(self, prompt: str, **kwargs: Any) -> CompletionResponseGen:。其中,metadata负责定义大模型的一些参数属性;complete负责调用大模型API服务并直接返回响应;stream_complete负责调用大模型API服务并以流式输出的形式返回响应。

运行代码,同样可以得到类似于之前的效果:

根据提供的上下文信息,口燥、咽干的症状可能与以下几个中医证候相关:

1. 津液不足证(4.6.1.1):由于津液生成不足或体内燥热,可能导致口眼喉鼻干燥。

2. 津亏热结证(4.6.3.2):津液亏虚加上热邪内结,也会出现口燥咽干的表现。

3. 津液亏涸证(4.6.1.2):津液亏损严重时,口干、唇裂、鼻燥、舌燥是其特征,可能包括咽干。

4. 燥干清窍证(3.6.3.2):气候干燥导致的津液耗损,会引起口鼻咽喉干燥。

5. 津伤化燥证(6.3.1):燥热内蕴或内热化燥可能引起口干舌燥,伴有多尿、消瘦等症状。

因此,这些证候都可能与不耐疲劳和口燥咽干的临床表现相关,但具体诊断需要结合其他症状和中医辨证原则。建议患者就诊中医师以获取专业诊断。

好处是,我们不需要每次启动RAG应用时都加载一遍大模型权重了。文章来源地址https://www.toymoban.com/news/detail-839858.html

到了这里,关于RAG实战6-如何在LlamaIndex中使用自己搭建的API的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实战教程:如何自己搭建一个小程序商城?

    如今,随着移动互联网的发展,电子商务已经成为人们购物的主要方式之一。而商城小程序的出现,更是方便了商家进行线上销售和推广。本文将为大家详细介绍如何搭建一个商城小程序,让你从小白变为专家。 首先,我们需要登录乔拓云平台进入商城后台管理页面。乔拓云

    2024年02月11日
    浏览(52)
  • LLM之RAG实战(二十七)| 如何评估RAG系统

           有没有想过今天的一些应用程序是如何看起来几乎神奇地智能的?这种魔力很大一部分来自于一种叫做RAG和LLM的东西。把RAG(Retrieval Augmented Generation)想象成人工智能世界里聪明的书呆子,它会挖掘大量信息,准确地找到你的问题所需要的信息。然后,还有LLM(大型

    2024年02月22日
    浏览(34)
  • 如何使用API数据接口给自己创造收益

    使用API数据接口创造收益的方法有很多,以下是一些常见的方法,并附有代码示例: 一、数据分析与预测 通过获取API数据接口中的大量数据,我们可以进行深入的数据分析,并利用这些数据来预测未来的趋势和行为。例如,我们可以使用Python中的pandas库来处理API返回的数据

    2024年02月09日
    浏览(39)
  • RAG实战3-如何追踪哪些文档片段被用于检索增强生成

    本文是RAG实战2-如何使用LlamaIndex存储和读取embedding向量的续集,在阅读本文之前请先阅读前篇。 在前篇中,我们介绍了如何使用LlamaIndex存储和读取embedding向量。在本文中,我们将介绍在LlamaIndex中如何获得被用于检索增强生成的文档片段。 下面的代码展示了如何使用LlamaInd

    2024年03月09日
    浏览(49)
  • Linux下如何使用git?如何搭建自己的库?

    前言: 本文主要介绍如何在 Linux 中使用 git 、 gitee 账号注册、如何新建远程仓库与本地仓库 以及 git 的常用指令。 切换至 ·root· 用户身份,输入指令: 使用 ·sudo· 指令; 进入码云,单击右上角加号 ,选择新建仓库 配置仓库信息 点击 克隆/下载 选择 HTTPS 选择复制链接 在

    2024年02月09日
    浏览(33)
  • RAG实战 7 - 使用llama_index实现多模态RAG

    转载自:LLM之RAG实战(七)| 使用llama_index实现多模态RAG https://mp.weixin.qq.com/s/FVF09cEO5nUipcL9R8ydXQ OpenAI开发日上最令人兴奋的发布之一是GPT-4V API(https://platform.openai.com/docs/guides/vision)的发布。GPT-4V是一个多模态模型,可以接收文本/图像,并可以输出文本响应。最近还有一些其他

    2024年01月17日
    浏览(36)
  • 如何使用OpenAI API和Python SDK构建自己的聊天机器人

    近日,OpenAI公司的ChatGPT模型走红网络。同时,OpenAI也推出了Chat API和gpt-3.5-turbo模型,让开发者能够更轻松地使用与ChatGPT类似的自然语言处理模型。 通过OpenAI API,我们可以使用gpt-3.5-turbo模型,实现多种任务,包括:撰写电子邮件或其他文本内容,编写Python代码,创建对话代

    2024年02月01日
    浏览(45)
  • 如何搭建一个属于自己的网站(使用宝塔面板)

    1.域名 简单的解释一下,我们购买的域名会给我们一个公网ip,通常这个公网ip是很难记.所以我们可以将域名与ip进行\\\"绑定\\\". 域名的话建议购买一个有意义,不要太贵的.注意次年续费的价格!! 阿里云 或者 腾讯云 下面这个是我的域名(和我名字差不多的意思) 2.服务器 服务器的话

    2024年02月05日
    浏览(53)
  • LLM本地知识库问答系统(二):如何正确使用LlamaIndex索引

    LLM本地知识库问答系统(一):使用LangChain和LlamaIndex从零构建PDF聊天机器人指南        上一篇文章我们介绍了使用LlamaIndex构建PDF聊天机器人,本文将介绍一下LlamaIndex的基本概念和原理。        LlamaIndex(也称为GPT Index)是一个用户友好的界面,可将外部数据连接到大型语

    2024年02月10日
    浏览(46)
  • 实战教程:如何使用触手AI来设计自己的产品图

    在这个充满创新和科技的时代,人工智能(AI)已经成为我们生活中不可或缺的一部分。它不仅改变了我们的生活方式,也正在改变我们的创作方式。今天,我将向你介绍如何使用AI进行产品设计。 首先,让我们来理解一下什么是AI绘画。简单来说,AI绘画是一种使用人工智能

    2024年01月17日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包