[轻松实现LLM推理:使用DeepInfra与LangChain集成的完整指南]

69 阅读2分钟
# 轻松实现LLM推理:使用DeepInfra与LangChain集成的完整指南

## 引言

现代机器学习的一个关键应用是语言模型的推理,但实施这种推理可能涉及复杂的基础设施管理。DeepInfra提供了一种无服务器推理服务,使得这一过程更加简化。本文将介绍如何通过LangChain集成DeepInfra,实现聊天模型的高效推理。

## 主要内容

### 设置环境API密钥

使用DeepInfra之前,你需要获取一个API密钥。登录DeepInfra并获取新的token,你可以通过`deepctl auth token`命令打印你的token。注意,每小时有免费的GPU计算资源以便测试模型。

```python
import os
from getpass import getpass

from langchain_community.chat_models import ChatDeepInfra
from langchain_core.messages import HumanMessage

DEEPINFRA_API_TOKEN = getpass()

# 将API token设置为环境变量
os.environ["DEEPINFRA_API_TOKEN"] = DEEPINFRA_API_TOKEN

使用LangChain调用DeepInfra模型

通过LangChain库可以轻松调用DeepInfra的语言模型。以下示例展示了如何翻译句子。

chat = ChatDeepInfra(model="meta-llama/Llama-2-7b-chat-hf")

messages = [
    HumanMessage(
        content="Translate this sentence from English to French. I love programming."
    )
]
chat.invoke(messages)

异步与流式调用

DeepInfra还支持异步和流式调用功能。

from langchain_core.callbacks import StreamingStdOutCallbackHandler

chat = ChatDeepInfra(
    streaming=True,
    verbose=True,
    callbacks=[StreamingStdOutCallbackHandler()],
)

chat.invoke(messages)

工具调用

工具调用是DeepInfra的另一个强大功能。以下是使用工具调用的示例:

import asyncio
from dotenv import find_dotenv, load_dotenv
from langchain_core.pydantic_v1 import BaseModel
from langchain_core.tools import tool

model_name = "meta-llama/Meta-Llama-3-70B-Instruct"
_ = load_dotenv(find_dotenv())

@tool
def foo(something):
    """Called when foo"""
    pass

class Bar(BaseModel):
    """Called when Bar"""
    pass

llm = ChatDeepInfra(model=model_name)
tools = [foo, Bar]
llm_with_tools = llm.bind_tools(tools)
messages = [
    HumanMessage("Foo and bar, please."),
]

response = llm_with_tools.invoke(messages)
print(response.tool_calls)

async def call_ainvoke():
    result = await llm_with_tools.ainvoke(messages)
    print(result.tool_calls)

# 异步调用
asyncio.run(call_ainvoke())

常见问题和解决方案

  • 问题:API访问不稳定

  • 问题:格式不匹配或出错

    • 解决方案:确保所使用的消息格式与LangChain和DeepInfra的要求一致,并验证API密钥是否正确配置。

总结和进一步学习资源

集成DeepInfra和LangChain可以简化LLM推理的实施,提供强大的异步和工具调用功能。通过本文的示例,开发者可以快速入门并高效利用这些工具。

进一步学习资源

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---