青训营X豆包MarsCode技术训练营LangChain工具 | 豆包MarsCode AI刷题

86 阅读3分钟

LangChain 是一个旨在帮助开发者构建基于语言模型的应用程序的框架,其核心功能之一是提供多种强大的工具(Tools),这些工具可以与语言模型结合使用,以增强其功能。这些工具覆盖了信息检索、数据处理、api调用等多个领域。下面详细介绍一些 LangChain 中的常用工具及其使用方法。

1. API 请求工具

API 请求工具允许用户通过调用外部 API 来获取数据或服务。在许多应用中,直接从外部服务获取信息是非常有用的。

示例:调用 OpenWeatherMap API 获取天气信息。

from langchain.tools import Tool
import requests

class WeatherTool(Tool):
    def __init__(self, api_key):
        self.api_key = api_key
        self.base_url = "http://api.openweathermap.org/data/2.5/weather"

    def get_weather(self, city_name):
        params = {
            'q': city_name,
            'appid': self.api_key,
            'units': 'metric'
        }
        response = requests.get(self.base_url, params=params)
        if response.status_code == 200:
            return response.json()
        else:
            return {"error": "City not found"}

# 使用示例
weather_tool = WeatherTool(api_key="YOUR_API_KEY")
weather_info = weather_tool.get_weather("Shanghai")
print(weather_info)

2. 搜索工具

搜索工具使得用户能够在大规模数据集合中进行信息检索。LangChain 提供了与各种搜索引擎的集成,以便快速查找信息。

示例:使用 SerpAPI 进行网络搜索。

from langchain.tools import Tool
from serpapi import GoogleSearch

class SearchTool(Tool):
    def __init__(self, api_key):
        self.api_key = api_key

    def search(self, query):
        params = {
            "engine": "google",
            "q": query,
            "api_key": self.api_key
        }
        search = GoogleSearch(params)
        results = search.get_dict()
        return results

# 使用示例
search_tool = SearchTool(api_key="YOUR_SERPAPI_KEY")
search_results = search_tool.search("LangChain tutorial")
print(search_results)

3. 文档加载工具

文档加载工具用于从多种文档格式(如 PDF、文本文件等)中提取信息。这对于处理和分析文档数据非常重要。

示例:从 PDF 文件中提取文本。

from langchain.document_loaders import PyPDFLoader

# 加载 PDF 文件
pdf_loader = PyPDFLoader("sample.pdf")
documents = pdf_loader.load()

# 输出提取的文本
for doc in documents:
    print(doc.page_content)

4. 计算工具

计算工具允许用户执行数学计算和逻辑推理操作,这在某些应用中非常重要。

示例:使用 Python 的 eval 函数进行简单计算。

from langchain.tools import Tool

class CalculationTool(Tool):
    def calculate(self, expression):
        try:
            result = eval(expression)
            return result
        except Exception as e:
            return {"error": str(e)}

# 使用示例
calc_tool = CalculationTool()
result = calc_tool.calculate("2 * (3 + 5)")
print(result)  # 输出: 16

5. 信息摘要工具

信息摘要工具用于从长文本中提取关键信息或生成摘要。这在处理大量信息时非常有用。

示例:使用 Hugging Face Transformers 进行文本摘要。

from langchain.tools import Tool
from transformers import pipeline

class SummarizationTool(Tool):
    def __init__(self):
        self.summarizer = pipeline("summarization")

    def summarize(self, text):
        summary = self.summarizer(text, max_length=50, min_length=25, do_sample=False)
        return summary[0]['summary_text']

# 使用示例
summarize_tool = SummarizationTool()
text = "LangChain is a framework for developing applications powered by language models. It provides a set of tools and components that simplify the process of building and deploying language model applications."
summary = summarize_tool.summarize(text)
print(summary)

6. 向量数据库工具

向量数据库工具用于处理和查询向量数据,常用于信息检索和推荐系统。

示例:使用 FAISS 向量数据库进行相似度搜索。

from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings

# 创建向量存储
embeddings = OpenAIEmbeddings(api_key="YOUR_OPENAI_API_KEY")
faiss_store = FAISS(embedding_function=embeddings.embed_query)

# 添加文档
faiss_store.add_documents(["Document 1 content", "Document 2 content"])

# 查询相似文档
query = "Find similar documents to this query."
similar_docs = faiss_store.similarity_search(query)
print(similar_docs)

7. 图像处理工具

图像处理工具可以用于处理和分析图像数据,例如图像分类或对象检测。

示例:使用预训练模型进行图像分类。

from langchain.tools import Tool
from transformers import pipeline

class ImageClassificationTool(Tool):
    def __init__(self):
        self.classifier = pipeline("image-classification")

    def classify_image(self, image_path):
        return self.classifier(image_path)

# 使用示例
image_tool = ImageClassificationTool()
classification_results = image_tool.classify_image("image.jpg")
print(classification_results)

总结

LangChain 提供的工具(Tools)极大地拓展了语言模型的应用范围,使得开发者能够结合不同的功能来构建复杂的应用。在上述示例中,演示了如何使用 API 请求、搜索、文档加载、计算、信息摘要、向量数据库和图像处理等工具。通过组合这些工具,我们可以创建更加丰富和智能的应用,提升用户体验。无论是在聊天机器人、信息检索、数据分析,还是内容生成等场景中,这些工具都发挥着不可或缺的作用。