当前位置: 首页 > news >正文

langchain入门基础

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

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

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

基础入门
新建配置文件
# 在根目录新建一个配置文件.env KEY=sk-******** URL=https://api.deepseek.com/v1
新建智能体文件
# 在根目录中新建一个智能体文件,我们先以 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)
在需要显示的页面上书写
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

小进阶
提示词模板
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"

使用工具
#此文件在根目录的 toos/testTool.py from langchain_core.tools import tool @tool def add(a:int , b:int ) -> int: """需要执行两个数相加时使用""" return a + b
#主文件中上面的一样,这儿就不多写了 from tools.testTool import add as add_test #引入刚才的工具文件 llm = create_agent( model=llm_agent, tools=[add_test], #注入工具,多个工具就在数组里面相应添加 )
http://www.cnnetsun.cn/news/4322705.html

相关文章:

  • RAG Refresher Notebook:Jupyter 中从零跑通 RAG 实战全链路
  • Minecraft Overlay机制与末地通关测试全解析
  • 基于MATLAB的AGV视觉导航与二维码控制系统解析
  • Spring Security 实战指南:认证授权与过滤器链解析
  • Java开发者LLM应用实战:Spring AI、LangChain4j与RAG Agent路线
  • 基于TVA-World架构的具身智能协同机制研究
  • PicoPro Glitch演示与IDM一键下载集成实战指南
  • java复习笔记
  • HarmonyOS 鸿蒙负一屏场景入口与服务推荐
  • 网约车租车还是买车?用成本模型和计算器算出盈亏平衡点
  • 基于SpringBoot的龙云优选便利店销售管理系统毕业设计项目源码文档
  • 途虎养车数据分析笔试解析:SQL、Python与业务案例全攻略
  • 300W国产DC-DC升压方案:从拓扑选型到PCB布局的完整实践指南
  • 018-参考资料
  • 工业检测机器人软件中间层:打破数据孤岛的统一平台
  • 非常棒的推理项目FreeToken,据说非常快!
  • STM32H757驱动MIPI DSI竖屏:LVGL V9移植与动画实战
  • Claude Code Token不够用?六个实用技巧省下近一半成本
  • 智能体轨迹压缩成自动机:行为分析的新思路
  • Arduino IDE板级包路径配置与ESP32/ESP8266环境搭建实战
  • conda环境管理实战:从创建环境到Jupyter运行NumPy
  • 原生影视APP源码拆解:播放器内核与运营功能全解析
  • 多Agent协作实战:Hermes与DeepSeek Harness从配置到排错
  • TensorFlow vs PyTorch:深度学习框架选型与实战指南
  • 绿联DH4300 Plus评测:四盘位8G内存+NFC一碰连接的家庭私有云
  • 真人跑团综艺制作全流程:从TRPG规则到角色卡与发音统一
  • MATLAB极限学习机ELM多特征分类预测完整实战代码
  • 2025款马自达EZ-6澳洲全面测试:传统车企的电动化答卷
  • linux之域套接字
  • 市场温度如何判断?从估值、资金到交易结构的实用分析框架