目录
- 数据链接
- API 调用
- 文档处理
- 多轮对话
- 任务调度
1. 数据链接
在使用 LangChain 进行数据链接时,我们可以通过多种方法将不同的数据源连接起来。以下是一个示例,展示如何使用 LangChain 连接到 SQLite 数据库并获取数据。
1 2 3 4 5 6 7 8 9 10 11 12 13
| from langchain import chains from langchain.sql_database import SQLDatabase from langchain.sql_database import SQLDatabaseChain
db = SQLDatabase.from_uri("sqlite:///my_database.db")
db_chain = SQLDatabaseChain(llm, database=db)
result = db_chain.run("SELECT * FROM users WHERE age > 30") print(result)
|
注意事项
- 确保您已安装 SQLite 数据库并且数据库文件路径有效。
llm
是您选择的语言模型实例,可以是 OpenAI 等模型。
2. API 调用
LangChain 允许您轻松调用外部 API。以下是一个示例,展示如何使用 LangChain 调用天气 API 获取天气信息。
1 2 3 4 5 6 7 8 9 10 11 12 13
| import requests
def get_weather(city): api_key = 'YOUR_API_KEY' url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric" response = requests.get(url) data = response.json() return f"{data['name']} 的天气为 {data['main']['temp']}°C"
weather = get_weather("Beijing") print(weather)
|
注意事项
- 确保您已将
YOUR_API_KEY
替换为实际的 API 密钥。
- 调用外部 API 时,请注意处理网络错误和异常。
3. 文档处理
使用 LangChain 进行文档处理时,可以提取文本、分析结构或将数据转换为其他格式。以下是一个提取 PDF 文档文本的示例:
1 2 3 4 5 6 7 8 9
| from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("example.pdf") documents = loader.load()
for doc in documents: print(doc.page_content)
|
注意事项
- 安装所需的库,例如
PyPDF2
或 pdfplumber
。
- 确保 PDF 文件路径有效。
4. 多轮对话
LangChain 支持多轮对话,允许在用户与系统之间进行深入的交流。以下是创建一个简单多轮对话的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| from langchain import LLMChain from langchain.chat_models import ChatOpenAI from langchain.prompts import ChatPromptTemplate
llm = ChatOpenAI(model_name="gpt-3.5-turbo")
prompt_template = ChatPromptTemplate( messages=[ {"role": "system", "content": "你是一位友好的助手。"}, {"role": "user", "content": "我想了解机器学习。"} ] )
chain = LLMChain(llm=llm, prompt=prompt_template)
response = chain.run() print(response)
|
注意事项
- 使用聊天模型,如
gpt-3.5-turbo
,需要有效的 API 密钥。
- 建议根据需求自定义提示模板,以引导对话方向。
5. 任务调度
LangChain 还可以实现任务调度,自动执行某些操作。以下是一个使用定时任务调度发送电子邮件的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13
| import schedule import time
def send_email(): print("发送电子邮件...")
schedule.every().day.at("12:00").do(send_email)
while True: schedule.run_pending() time.sleep(1)
|
注意事项
- 使用
schedule
库进行简单的定时任务调度。
- 请确保邮件发送逻辑实现正确,例如使用
smtplib
发送电子邮件。
以上示例展示了 LangChain 可以执行的一些常见任务自动化操作。您可以根据自己的需求,进一步扩展和自定义这些示例。