langchain入门基础

一天半的时间,把 langchain 的入门理了一次。打铁趁熟。现在,我就把入门写一下吧。

langchain,我们可以理解为对 ai 的边界划分。因为我们在生活和工作中,一天天的都在说ai。那么,如果只是说让ai在你干嘛。他是没有边界感的。你想他查你们公司的销量。他返回给你的可能是某个上市公司的公开数据也有可能。所以,这个时候,就需要有 langchain 来为你做边界感。

这儿,我是以 fastApi 和 lanchain 两个框架结合起来使用。在实际工作中,也常常使用这两个框架结合起来。因为 langchain 它就是 python 来写的。安装的,在这儿我就不多说了。基本上大家都会,实在不行,让ai 帮你安装也行。

基础入门
新建配置文件
bash 复制代码
# 在根目录新建一个配置文件.env

KEY=sk-********
URL=https://api.deepseek.com/v1
新建智能体文件
python 复制代码
# 在根目录中新建一个智能体文件,我们先以 agent.py 为命命

import os

from dotenv import load_dotenv #配置文件的导入类
from langchain_openai import ChatOpenAI

load_dotenv()
model = "deepseek-chat"
api_key = os.getenv("KEY")
base_url = os.getenv("URL")

agent = ChatOpenAI(model=model, api_key=api_key, base_url=base_url)
在需要显示的页面上书写
python 复制代码
from fastapi import FastAPI
from langchain.agents import create_agent

from agent import  agent as llm_agent #这儿是引入刚新建的智能体。之所有这样搞是把通用的提取出来。这个不多说

fastAPI = FastAPI()

@fastAPI.get("/")
async def index(query:str):
    llm = create_agent(
        model=llm_agent,
    )
    invokeInput = {
        "messages":[
            ("user", query)
        ]
    }

    #这儿我说明一下
    # llm_agent,是原始封装,是 ChatOpenAI 实例。所以 在 invoke 中传的是 【消息列表】
    # llm 创建的是一个 AgentExecutor,它传的是字典,也就是 json 对象或元组对象
    
    # 消息列表
    # 这几个是需要引入的
    # systemMessage = SystemMessage("你是一名英文翻译家")
    # humanMessage = HumanMessage(query)
    # messages = [systemMessage, humanMessage]
    

    result = llm.invoke(invokeInput)
    print(result)
    # result["messages"][-1].content
    return result["messages"][-1].content
小进阶
提示词模板
python 复制代码
from fastapi import FastAPI
from langchain.agents import create_agent
from langchain_core.prompts import ChatPromptTemplate

from agent import  agent as llm_agent

fastAPI = FastAPI()

@fastAPI.get("/")
async def index(query:str):
    #定义提示启边界
    #写法一
    prompt = ChatPromptTemplate.from_messages([
        ("system" , "你一名优秀的搞笑怪师"), #给ai 一个角色
        ("human" , "{question}") #简单理解为角色的名字对应下面的  result = chain.invoke({"question": query})
    ])

    #写法二
    prompt2 = ChatPromptTemplate.from_messages([
        {"role":"system" , "content":"你是一名数学家"}, #给 ai 一个角色
        {"role":"human" , "content":"{question}"}
    ])
    #注意,使用 ChatPromptTemplate.from_messages() ,里面的参数是json 数组 或者是 元组数组。别搞错了。最后结果我以方法二来展示

    llm = create_agent(
        model=llm_agent,
        tools=[],
    )
    chain = prompt2 | llm #这儿是把提示词模板丢给智能体后处理

    result = chain.invoke({"question": query})
    print(result)
    return "hello"
使用工具
python 复制代码
#此文件在根目录的 toos/testTool.py
from langchain_core.tools import tool
@tool
def add(a:int , b:int ) -> int:
    """需要执行两个数相加时使用"""
    return a + b
python 复制代码
#主文件中上面的一样,这儿就不多写了
from tools.testTool import add as add_test #引入刚才的工具文件

llm = create_agent(
    model=llm_agent,
    tools=[add_test], #注入工具,多个工具就在数组里面相应添加
)
相关推荐
何以解忧,唯有..11 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
落魄大学生之流水线上谋生计13 小时前
LangGraph 基本用法指南
java·windows·python·langchain
运维@小兵14 小时前
LangChain概述
langchain
YsyaaabB18 小时前
Deep Agents 实战课程
python·langchain
ITresearchGuest21 小时前
LangChain JS 入门:快速搭建前端 AI 开发环境
前端·javascript·langchain
未若君雅裁1 天前
Agent 的结构化输出,ProviderStrategy、ToolStrategy 与错误重试
python·langchain
l1258652 天前
# LangGraph 核心架构入门:State、Node、Edge 与 Reducer 的工程理解
大数据·人工智能·python·架构·langchain·edge
LFly_ice2 天前
Langchain-06 什么是Agent
langchain
水管在开花.2 天前
Agent范式与LangGraph-②零基础保姆级教程
人工智能·面试·langchain·agent