[AI Embedchain] 组件 大模型LLM

大语言模型(LLMs)

概览

Embedchain 内置支持多种流行的大语言模型。我们为您处理这些模型的集成复杂性,允许您通过用户友好的界面轻松自定义您的语言模型交互。

  • OpenAI
  • Google AI
  • Azure OpenAI
  • Anthropic
  • Cohere
  • Together
  • Ollama
  • vLLM
  • Clarifai
  • GPT4All
  • JinaChat
  • Hugging Face
  • Llama2
  • Vertex AI
  • Mistral AI
  • AWS Bedrock
  • Groq
  • NVIDIA AI

OpenAI

要使用 OpenAI LLM 模型,您必须设置 OPENAI_API_KEY 环境变量。您可以从 OpenAI 平台获取 OpenAI API 密钥。

获取密钥后,您可以这样使用它:

1
2
3
4
5
6
7
8
import os
from embedchain import App

os.environ['OPENAI_API_KEY'] = 'xxx'

app = App()
app.add("https://en.wikipedia.org/wiki/OpenAI")
app.query("什么是 OpenAI?")

如果您想配置 LLM 的不同参数,可以通过加载一个 yaml 配置 文件来实现。

1
2
3
4
5
6
7
import os
from embedchain import App

os.environ['OPENAI_API_KEY'] = 'xxx'

# 从 config.yaml 文件加载 llm 配置
app = App.from_config(config_path="config.yaml")
1
2
3
4
5
6
7
8
llm:
  provider: openai
  config:
    model: 'gpt-3.5-turbo'
    temperature: 0.5
    max_tokens: 1000
    top_p: 1
    stream: false

函数调用

Embedchain 支持 OpenAI 函数调用 通过单个函数。它接受符合 Langchain 接口 的输入。

1
2
3
4
5
6
7
from pydantic import BaseModel

class multiply(BaseModel):
    """乘以两个整数。"""

    a: int = Field(..., description="第一个整数")
    b: int = Field(..., description="第二个整数")
1
2
3
4
5
6
7
8
def multiply(a: int, b: int) -> int:
    """乘以两个整数。

    参数:
        a: 第一个整数
        b: 第二个整数
    """
    return a * b
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
multiply = {
    "type": "function",
    "function": {
      "name": "multiply",
      "description": "乘以两个整数。",
      "parameters": {
        "type": "object",
        "properties": {
          "a": {
            "description": "第一个整数",
            "type": "integer"
          },
          "b": {
            "description": "第二个整数",
            "type": "integer"
          }
        },
        "required": [
          "a",
          "b"
        ]
      }
    }
  }

使用上述任何输入,可以查询 OpenAI LLM 以提供函数的适当参数。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import os
from embedchain import App
from embedchain.llm.openai import OpenAILlm

os.environ["OPENAI_API_KEY"] = "sk-xxx"

llm = OpenAILlm(tools=multiply)
app = App(llm=llm)

result = app.query("125乘以十五的结果是多少?")

Google AI

要使用 Google AI 模型,您必须设置 GOOGLE_API_KEY 环境变量。您可以从 Google Maker Suite 获取 Google API 密钥。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import os
from embedchain import App

os.environ["GOOGLE_API_KEY"] = "xxx"

app = App.from_config(config_path="config.yaml")

app.add("https://www.forbes.com/profile/elon-musk")

response = app.query("埃隆·马斯克的净资产是多少?")
if app.llm.config.stream: # 如果启用了流,响应是一个生成器
    for chunk in response:
        print(chunk)
else:
    print(response)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
llm:
  provider: google
  config:
    model: gemini-pro
    max_tokens: 1000
    temperature: 0.5
    top_p: 1
    stream: false

embedder:
  provider: google
  config:
    model: 'models/embedding-001'
    task_type: "retrieval_document"
    title: "Embeddings for Embedchain"

Azure OpenAI

要使用 Azure OpenAI 模型,您必须设置一些与 Azure OpenAI 相关的环境变量,如下代码块所示:

1
2
3
4
5
6
7
8
9
import os
from embedchain import App

os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://xxx.openai.azure.com/"
os.environ["AZURE_OPENAI_KEY"] = "xxx"
os.environ["OPENAI_API_VERSION"] = "xxx"

app = App.from_config(config_path="config.yaml")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
llm:
  provider: azure_openai
  config:
    model: gpt-3.5-turbo
    deployment_name: your_llm_deployment_name
    temperature: 0.5
    max_tokens: 1000
    top_p: 1
    stream: false

embedder:
  provider: azure_openai
  config:
    model: text-embedding-ada-002
    deployment_name: you_embedding_model_deployment_name

您可以在 Azure OpenAI 平台 上找到模型和部署名称的列表。

Anthropic

要使用 Anthropic 的模型,请设置 ANTHROPIC_API_KEY,您可以在他们的 账户设置页面 上找到它。

1
2
3
4
5
6
7
import os
from embedchain import App

os.environ["ANTHROPIC_API_KEY"] = "xxx"

# 从 config.yaml 文件加载 llm 配置
app = App.from_config(config_path="config.yaml")
1
2
3
4
5
6
7
8
llm:
  provider: anthropic
  config:
    model: 'claude-instant-1'
    temperature: 0.5
    max_tokens: 1000
    top_p: 1
    stream: false

Cohere

安装相关依赖项,使用以下命令:

1
pip install --upgrade 'embedchain[cohere]'

COHERE_API_KEY 设置为环境变量,您可以在他们的 账户设置页面 上找到它。

一旦有了 API 密钥,您就可以使用它与 Embedchain 一起使用。

1
2
3
4
5
6
7
import os
from embedchain import App

os.environ["COHERE_API_KEY"] = "xxx"

# 从 config.yaml 文件加载 llm 配置
app = App.from_config(config_path="config.yaml")
1
2
3
4
5
6
7
llm:
  provider: cohere
  config:
    model: large
    temperature: 0.5
    max_tokens: 1000
    top_p: 1

Together

安装相关依赖项,使用以下命令:

1
pip install --upgrade 'embedchain[together]'

TOGETHER_API_KEY 设置为环境变量,您可以在他们的 账户设置页面 上找到它。

一旦有了 API 密钥,您就可以使用它与 Embedchain 一起使用。

1
2
3
4
5
6
7
import os
from embedchain import App

os.environ["TOGETHER_API_KEY"] = "xxx"

# 从 config.yaml 文件加载 llm 配置
app = App.from_config(config_path="config.yaml")
1
2
3
4
5
6
7
llm:
  provider: together
  config:
    model: togethercomputer/RedPajama-INCITE-7B-Base
    temperature: 0.5
    max_tokens: 1000
    top_p: 1

Ollama

使用 https://github.com/jmorganca/ollama 设置 Ollama。

1
2
3
4
5
6
import os
os.environ["OLLAMA_HOST"] = "http://127.0.0.1:11434"
from embedchain import App

# 从 config.yaml 文件加载 llm 配置
app = App.from_config(config_path="config.yaml")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
llm:
  provider: ollama
  config:
    model: 'llama2'
    temperature: 0.5
    top_p: 1
    stream: true
    base_url: 'http://localhost:11434'
embedder:
  provider: ollama
  config:
    model: znbang/bge:small-en-v1.5-q8_0
    base_url: http://localhost:11434

vLLM

按照 他们的文档 中的说明设置 vLLM。

1
2
3
4
5
import os
from embedchain import App

# 从 config.yaml 文件加载 llm 配置
app = App.from_config(config_path="config.yaml")
1
2
3
4
5
6
7
8
9
llm:
  provider: vllm
  config:
    model: 'meta-llama/Llama-2-70b-hf'
    temperature: 0.5
    top_p: 1
    top_k: 10
    stream: true
    trust_remote_code: true

Clarifai

安装相关依赖项,使用以下命令:

1
pip install --upgrade 'embedchain[clarifai]'

CLARIFAI_PAT 设置为环境变量,您可以在 安全页面 上找到它。或者,您也可以在 LLM/Embedder 类中将 PAT 密钥作为参数传递。

现在,您可以开始探索 Embedchain 了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import os
from embedchain import App

os.environ["CLARIFAI_PAT"] = "XXX"

# 从 config.yaml 文件加载 llm 配置
app = App.from_config(config_path="config.yaml")

# 现在让我们添加一些数据。
app.add("https://www.forbes.com/profile/elon-musk")

# 查询应用
response = app.query("what college degrees does elon musk have?")

前往 Clarifai 平台 浏览各种适用于您的用例的最先进的 LLM 模型。

为了传递模型推理参数,请在配置文件中使用 model_kwargs 参数。您也可以在配置中使用 api_key 参数来传递 CLARIFAI_PAT

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
llm:
 provider: clarifai
 config:
   model: "https://clarifai.com/mistralai/completion/models/mistral-7B-Instruct"
   model_kwargs:
     temperature: 0.5
     max_tokens: 1000  
embedder:
 provider: clarifai
 config:
   model: "https://clarifai.com/clarifai/main/models/BAAI-bge-base-en-v15"

GPT4ALL

安装相关依赖项,使用以下命令:

1
pip install --upgrade 'embedchain[opensource]'

GPT4all 是一个免费使用、本地运行、注重隐私的聊天机器人。不需要 GPU 或互联网。您可以使用以下代码与 Embedchain 一起使用:

1
2
3
4
from embedchain import App

# 从 config.yaml 文件加载 llm 配置
app = App.from_config(config_path="config.yaml")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
llm:
  provider: gpt4all
  config:
    model: 'orca-mini-3b-gguf2-q4_0.gguf'
    temperature: 0.5
    max_tokens: 1000
    top_p: 1
    stream: false

embedder:
  provider: gpt4all

JinaChat

首先,在环境变量中设置 JINACHAT_API_KEY,您可以从 他们的平台 获取它。

一旦有了密钥,使用配置 yaml 文件加载应用:

1
2
3
4
5
6
import os
from embedchain import App

os.environ["JINACHAT_API_KEY"] = "xxx"
# 从 config.yaml 文件加载 llm 配置
app = App.from_config(config_path="config.yaml")
1
2
3
4
5
6
7
llm:
  provider: jina
  config:
    temperature: 0.5
    max_tokens: 1000
    top_p: 1
    stream: false

Hugging Face

使用以下命令安装相关依赖项:

1
pip install --upgrade 'embedchain[huggingface-hub]'

首先,在环境变量中设置HUGGINGFACE_ACCESS_TOKEN,您可以从他们的平台获取。

您可以使用以下三种方式从Hugging Face加载LLMs:

Hugging Face Hub

从Hugging Face Hub加载模型,请使用以下代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import os
from embedchain import App

os.environ["HUGGINGFACE_ACCESS_TOKEN"] = "xxx"

config = {
  "app": {"config": {"id": "my-app"}},
  "llm": {
      "provider": "huggingface",
      "config": {
          "model": "bigscience/bloom-1b7",
          "top_p": 0.5,
          "max_length": 200,
          "temperature": 0.1,
      },
  },
}

app = App.from_config(config=config)

Hugging Face 本地 Pipelines

如果你想加载从Hugging Face下载的本地模型,你可以通过以下代码实现:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from embedchain import App

config = {
  "app": {"config": {"id": "my-app"}},
  "llm": {
      "provider": "huggingface",
      "config": {
          "model": "Trendyol/Trendyol-LLM-7b-chat-v0.1",
          "local": True,  # 如果你想在本地运行模型,这是必需的
          "top_p": 0.5,
          "max_tokens": 1000,
          "temperature": 0.1,
      },
  }
}
app = App.from_config(config=config)

Hugging Face 推理端点

你也可以使用Hugging Face 推理端点来访问自定义端点。首先,如上所述设置HUGGINGFACE_ACCESS_TOKEN

然后,使用config yaml文件加载应用程序:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from embedchain import App

config = {
  "app": {"config": {"id": "my-app"}},
  "llm": {
      "provider": "huggingface",
      "config": {
        "endpoint": "https://api-inference.huggingface.co/models/gpt2", 
        "model_params": {"temprature": 0.1, "max_new_tokens": 100}
      },
  },
}
app = App.from_config(config=config)

目前仅支持text-generationtext2text-generation [ref]。

有关更多信息,请查看langchain的hugging face endpoint

Llama2

Llama2通过Replicate集成。在环境变量中设置REPLICATE_API_TOKEN,您可以从他们的平台获取。

一旦您获得了令牌,使用config yaml文件加载应用程序:

1
2
3
4
5
6
7
import os
from embedchain import App

os.environ["REPLICATE_API_TOKEN"] = "xxx"

# 从config.yaml文件加载llm配置
app = App.from_config(config_path="config.yaml")
1
2
3
4
5
6
7
8
llm:
  provider: llama2
  config:
    model: 'a16z-infra/llama13b-v2-chat:df7690f1994d94e96ad9d568eac121aecf50684a0b0963b25a41cc40061269e5'
    temperature: 0.5
    max_tokens: 1000
    top_p: 0.5
    stream: false

Vertex AI

按照GCP上的说明设置Google Cloud Platform应用程序凭据。设置完成后,使用以下代码使用VertexAI作为提供商创建应用程序:

1
2
3
4
from embedchain import App

# 从config.yaml文件加载llm配置
app = App.from_config(config_path="config.yaml")
1
2
3
4
5
6
llm:
  provider: vertexai
  config:
    model: 'chat-bison'
    temperature: 0.5
    top_p: 0.5

Mistral AI

从他们的控制台获取Mistral AI的api密钥。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
os.environ["MISTRAL_API_KEY"] = "xxx"

app = App.from_config(config_path="config.yaml")

app.add("https://www.forbes.com/profile/elon-musk") 

response = app.query("what is the net worth of Elon Musk?")
# 截至2024年1月16日,Elon Musk的净资产为2254亿美元。

response = app.chat("which companies does elon own?")
# Elon Musk拥有的公司包括Tesla、SpaceX、Boring Company、Twitter和X。

response = app.chat("what question did I ask you already?")
# 您已经多次问过我Elon Musk拥有哪些公司,具体包括Tesla、SpaceX、Boring Company、Twitter和X。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
llm:
  provider: mistralai
  config:
    model: mistral-tiny
    temperature: 0.5
    max_tokens: 1000
    top_p: 1
embedder:
  provider: mistralai
  config:
    model: mistral-embed

AWS Bedrock

设置

  • 在使用AWS Bedrock LLM之前,请确保您已经从Bedrock Console获得了适当的模型访问权限。
  • 您还需要使用AWS文档中的方法对boto3客户端进行身份验证。
  • 您可以选择导出AWS_REGION

使用方法

1
2
3
4
5
6
7
8
import os
from embedchain import App

os.environ["AWS_ACCESS_KEY_ID"] = "xxx"
os.environ["AWS_SECRET_ACCESS_KEY"] = "xxx"
os.environ["AWS_REGION"] = "us-west-2"

app = App.from_config(config_path="config.yaml")
1
2
3
4
5
6
7
8
9
llm:
  provider: aws_bedrock
  config:
    model: amazon.titan-text-express-v1
    # 请参考下面的注释以获取model_kwargs
    model_kwargs:
      temperature: 0.5
      topP: 1
      maxTokenCount: 1000

每个提供商的模型参数是不同的。请参阅AWS Bedrock文档 以找到适合您模型的适当参数。

Groq

Groq 是世界上第一个语言处理单元(LPU)的创造者,为其 LPU 推理引擎运行的人工智能工作负载提供卓越的速度性能。

使用方法

为了使用 Groq 的大型语言模型(LLMs),请访问他们的 平台 并获取 API 密钥。

将 API 密钥设置为 GROQ_API_KEY 环境变量或在应用配置中传入,如下面的示例所示。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import os
from embedchain import App

# 在这里设置你的 API 密钥或作为环境变量传入
groq_api_key = "gsk_xxxx"

config = {
    "llm": {
        "provider": "groq",
        "config": {
            "model": "mixtral-8x7b-32768",
            "api_key": groq_api_key,
            "stream": True
        }
    }
}

app = App.from_config(config=config)
# 在这里添加你的数据源
app.add("https://docs.embedchain.ai/sitemap.xml", data_type="sitemap")
app.query("Write a poem about Embedchain")

# 在数据的广阔领域中,
# Embedchain 以知识为向导。
# 一个开放的平台,供所有人尝试,
# 构建的机器人能够真正飞翔。

# 通过 REST API,数据触手可及,
# 部署轻松,如同一次演讲。
# 更新数据源,随时随地,
# Embedchain 的力量,永不消退。

# 一个知识库,一个如此宏伟的助手,
# 连接到平台,无论远近。
# Discord、WhatsApp、Slack 等等,
# Embedchain 的潜力,永不枯燥。

NVIDIA AI

NVIDIA AI Foundation Endpoints 让您能够快速使用 NVIDIA 的 AI 模型,如 Mixtral 8x7B、Llama 2 等,通过我们的 API。这些模型在 NVIDIA NGC 目录 中可用,完全优化,可在 NVIDIA 的 AI 平台上即时使用。它们专为高速和易于定制而设计,确保在任何加速设置上都能顺畅运行。

使用方法

为了使用 NVIDIA AI 的大型语言模型(LLMs),请在 NVIDIA NGC 服务 上创建账户。

从他们的仪表板生成 API 密钥。将 API 密钥设置为 NVIDIA_API_KEY 环境变量。注意 NVIDIA_API_KEY 将以 nvapi- 开头。

以下是如何使用 NVIDIA AI 的 LLM 模型和嵌入模型的示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import os
from embedchain import App

os.environ['NVIDIA_API_KEY'] = 'nvapi-xxxx'

config = {
    "app": {
        "config": {
            "id": "my-app",
        },
    },
    "llm": {
        "provider": "nvidia",
        "config": {
            "model": "nemotron_steerlm_8b",
        },
    },
    "embedder": {
        "provider": "nvidia",
        "config": {
            "model": "nvolveqa_40k",
            "vector_dimension": 1024,
        },
    },
}

app = App.from_config(config=config)

app.add("https://www.forbes.com/profile/elon-musk")
answer = app.query("What is the net worth of Elon Musk today?")
# 答案:Elon Musk 的净资产会根据他持有的各种公司的市场价值波动。
# 截至 2024 年 3 月 1 日,他的净资产估计约为 2100 亿美元。然而,这个数字可能会因股市波动和其他因素而迅速变化。
# 此外,他的净资产可能包括其他资产,如房地产和艺术品,这些在他的股票投资组合中没有反映。

令牌使用

通过在配置文件中将 token_usage 设置为 True,可以获取查询的成本。这将返回令牌详情:prompt_tokenscompletion_tokenstotal_tokenstotal_costcost_currency。 支持令牌使用付费的 LLM 列表包括:

  • OpenAI
  • Vertex AI
  • Anthropic
  • Cohere
  • Together
  • Groq
  • Mistral AI
  • NVIDIA AI

以下是如何使用令牌使用的示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
os.environ["OPENAI_API_KEY"] = "xxx"

app = App.from_config(config_path="config.yaml")

app.add("https://www.forbes.com/profile/elon-musk")

response = app.query("what is the net worth of Elon Musk?")
# {'answer': 'Elon Musk's net worth is $209.9 billion as of 6/9/24.',
#   'usage': {'prompt_tokens': 1228,
#   'completion_tokens': 21, 
#   'total_tokens': 1249, 
#   'total_cost': 0.001884, 
#   'cost_currency': 'USD'}
# }

response = app.chat("Which companies did Elon Musk found?")
# {'answer': 'Elon Musk founded six companies, including Tesla, which is an electric car maker, SpaceX, a rocket producer, and the Boring Company, a tunneling startup.',
#   'usage': {'prompt_tokens': 1616,
#   'completion_tokens': 34,
#   'total_tokens': 1650,
#   'total_cost': 0.002492,
#   'cost_currency': 'USD'}
# }
1
2
3
4
5
6
7
llm:
  provider: openai
  config:
    model: gpt-3.5-turbo
    temperature: 0.5
    max_tokens: 1000
    token_usage: true

如果缺少模型并且您想将其添加到 model_prices_and_context_window.json,请随时打开一个 PR。

引用