LangChain的基本调用方式

『AI先锋杯·14天征文挑战第7期』 10w+人浏览 470人参与

0 官方对LangChain的描述

LangChain is the easiest way to start building agents and applications powered by LLMs. With under 10 lines of code, you can connect to OpenAI, Anthropic, Google, and more. LangChain provides a pre-built agent architecture and model integrations to help you get started quickly and seamlessly incorporate LLMs into your agents and applications.
LangChain是构建由大型语言模型(LLM)驱动的代理和应用程序最简便的方式。只需不到10行代码,即可连接OpenAI、Anthropic、Google等平台。LangChain提供预构建的代理架构和模型集成,帮助您快速上手,并无缝将LLM融入您的代理和应用程序中。

即LangChain的理念就是用尽可能少的代码实现大模型的连接,完成模型的代理和集成,快速构建大模型应用,以下将论述Langchain调用大模型的几种方式。

1 硬编码方式调用

此处使用的是阿里千问大模型,所谓硬编码就是直接将参数直接写在函数的参数上,这样
会导致安全问题和维护问题,例如密钥容易泄露。

from langchain_openai import ChatOpenAI

def get_api_key() -> str:
    return "sk-your-api-key"

# 获取对话模型
chat_model = ChatOpenAI(
    model="qwen-plus",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    api_key= get_api_key
)

# 调用模型
response = chat_model.invoke('你好')

print(response)

2 设置环境变量调用

即通过系统的环境变量存储密钥,避免明文暴露
首先点击run中的 Edit Configurations
请添加图片描述

接着点击 Environment variables 会弹出如下弹窗,接着编辑环境变量,但是注意,此种方式环境变量只能存在于某一文件中,即只有限定某个文件可以访问该环境变量。
请添加图片描述

import os
from langchain_openai import ChatOpenAI

# 获取对话模型
chat_model = ChatOpenAI(
    model="qwen-plus",
    base_url=os.environ.get("QWEN_BASE_URL"),
    api_key=os.environ.get("QWEN_API_KEY"),
)

# 调用模型
response = chat_model.invoke('你好')

print(response)

3 使用.env 配置文件

在项目根目录新建.env文件

#.env
QWEN_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
QWEN_API_KEY="sk-your-api-key"
import os

import dotenv
from langchain_openai import ChatOpenAI

dotenv.load_dotenv()

# 获取对话模型
chat_model = ChatOpenAI(
    model="qwen-plus",
    base_url=os.environ.get("QWEN_BASE_URL"),
    api_key=os.environ.get("QWEN_API_KEY"),
)

# 调用模型
response = chat_model.invoke('你好')

print(response)

4 使用.env 配置文件+环境变量方式

ChatOpenAI源码中将OPENAI_BASE_URL和OPENAI_API_KEY设置为默认的环境变量值,即开始会默认查找环境变量中的这两个key,所以可以从env中拿到值再赋给对应的环境变量。
这种方法的好处是不需要再函数中填写这两个参数,对api-key的隐蔽性好更便捷。

import os

import dotenv
from langchain_openai import ChatOpenAI

dotenv.load_dotenv()

os.environ["OPENAI_BASE_URL"] = os.getenv("QWEN_BASE_URL")
os.environ["OPENAI_API_KEY"] = os.getenv("QWEN_API_KEY")

# 获取对话模型
chat_model = ChatOpenAI(
    model="qwen-plus"
)

# 调用模型
response = chat_model.invoke('你好')

print(response)

5 启动效果

请添加图片描述

### 集成与调用 Ollama 和 SQLCoder 的方法 #### 在 LangChain 中集成 Ollama 为了简化大型语言模型(LLM)的部署过程,Ollama 提供了一种便捷的方式让用户能够迅速启动并运行这些模型。对于希望利用 Ollama 来增强应用程序功能的开发者来说,在终端或 PowerShell 上只需几条命令就能完成安装和初始化工作[^4]。 一旦完成了 Ollama 的基本设置之后,就可以考虑将其集成到基于 LangChain 构建的应用程序之中。这通常涉及到创建一个自定义适配器类来桥接两者之间的交互逻辑: ```python from langchain.llms import BaseLLMAdapter class OllamaAdapter(BaseLLMAdapter): def __init__(self, ollama_endpoint_url: str): self.endpoint = ollama_endpoint_url async def _call(self, prompt, stop=None, **kwargs): response = await aiohttp.post( url=self.endpoint, json={"prompt": prompt}, headers={'Content-Type': 'application/json'} ) result = await response.json() return result['text'] ``` 此代码片段展示了如何编写一个简单的 `OllamaAdapter` 类继承自 `BaseLLMAdapter` 并实现 `_call()` 方法用于向远程 API 发送请求获取响应数据。 #### 结合使用 SQLCoder 进行数据库操作 当涉及到结构化查询语言 (SQL) 数据库的操作时,LangChain 内置的支持使得这一任务变得更加直观易懂。特别是借助于 SQLCoder 工具可以更方便地执行复杂的 CRUD 操作以及数据分析任务[^2]。 下面是一个具体的例子说明怎样结合上述提到的技术栈来进行实际开发: ```python import asyncio from langchain.chains.sql_chain import SQLDatabaseChain from sqlalchemy import create_engine engine = create_engine('sqlite:///example.db') sql_chain = SQLDatabaseChain.from_llm(llm=OllamaAdapter("http://localhost:8000"), database_uri='sqlite:///example.db') async def run_query(query_string: str): results = await sql_chain.arun({"query": query_string}) print(results) # Example usage of the function defined above. if __name__ == "__main__": loop = asyncio.get_event_loop() task = loop.create_task(run_query("SELECT * FROM users LIMIT 5;")) loop.run_until_complete(task) ``` 这段脚本首先建立了与 SQLite 数据库连接,并实例化了一个带有我们之前创建好的 `OllamaAdapter` 对象作为参数传递给它的 `SQLDatabaseChain` 实例;接着定义了一个异步函数用来接收用户输入的 SQL 命令并通过链式调用发送至目标服务器端解析执行最后返回结果集[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值