砍材农夫砍材农夫
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • 环境配置
    • 微信生态
    • 正则
    • 全栈技能
  • java圈

    • java基础
    • jdk体系
    • jvm
    • spring框架
    • 分库分表
    • zookeeper
  • python技能

    • python编程
    • python数据
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • AIoT
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • devops
  • 元宇宙
  • 区块链
  • 物联网
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • 环境配置
    • 微信生态
    • 正则
    • 全栈技能
  • java圈

    • java基础
    • jdk体系
    • jvm
    • spring框架
    • 分库分表
    • zookeeper
  • python技能

    • python编程
    • python数据
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • AIoT
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • devops
  • 元宇宙
  • 区块链
  • 物联网
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • 入门

    • 学习路径

      • AI入门实战路径
    • 相关名词概念

      • 专有名词概念
      • loopengineering
    • 开放平台

      • 专有名词概念
      • loopengineering
  • AI入门实战

    • Agent骨架

      • 环境搭建
      • 吃透核心概念
      • 基础LLM调用
      • Tools工具调用
      • Memory记忆模块
      • Planning规划能力
      • LangGraph流程编排
      • 极简演示Agent
      • ReAct模式
      • ReAct模式
      • LangGraph基础
      • LangGraph基础
    • RGA架构

      • 学习环境准备
    • Skills开发和封装

      • 学习环境准备
    • 多Agent协作

      • 学习环境准备
    • 部署

      • 学习环境准备
  • agent智能体

    • Harness

      • Harness 部署
      • 常用工具列表
    • Hermes

      • Hermes 部署
      • Hermes 新手操作集成飞书
      • Hermes 搭建可视化web-dashboard界面
    • OpenClaw

      • OpenClaw 部署
      • 常用工具列表
    • OpenClaude

      • OpenClaude 部署
      • 常用工具列表
    • zcode

      • zcode 部署
    • MateClaw

      • MateClaw 部署
  • 工具

    • 工具
    • 常用工具列表
  • 向量数据库

    • 介绍
    • Neo4j
    • milvus

      • milvus部署
      • milvus 是什么
    • Chroma

      • Chroma部署
      • Chroma是什么
  • AI入门实战|Agent骨架与工具调用|基础LLM调用
    • 简述
    • 源码(sample-02-demo)
    • LangChain 1.x 核心组件
      • hatOpenAI
      • 消息组件(langchain_core.messages)
      • ChatPromptTemplate
      • Runnable 管道
      • 调用方式
    • 代码演示
      • 基础单轮调用
      • 提示词+模板
      • 管道流式
      • 演示结果

AI入门实战|Agent骨架与工具调用|基础LLM调用

简述

基于框架调用大模型(OpenAI/国内模型)

源码(sample-02-demo)

https://gitee.com/kcnf-python/ai-in-action

LangChain 1.x 核心组件

hatOpenAI

来自 langchain-openai,因为 DeepSeek 完全兼容 OpenAI 接口协议,
直接使用该类作为模型客户端

消息组件(langchain_core.messages)

SystemMessage:系统角色设定(人设、规则、背景)
HumanMessage:用户输入消息
AIMessage:模型返回消息

ChatPromptTemplate

结构化构建提示词,支持消息占位符,解耦文案与逻辑

Runnable 管道

LangChain 1.x 标准写法:提示词 | 模型,链式调用,简洁易维护

调用方式

invoke():同步一次性返回结果
stream():流式逐块输出(打字机效果)

代码演示

基础单轮调用

import tkinter as tk
from tkinter import simpledialog, messagebox
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage
from config import DEEPSEEK_API_KEY, DEEPSEEK_BASE_URL

def main():
    # 初始化窗口(隐藏主窗口,只弹输入框/弹窗)
    root = tk.Tk()
    root.withdraw()

    # 1. 初始化模型
    llm = ChatOpenAI(
        api_key=DEEPSEEK_API_KEY,
        base_url=DEEPSEEK_BASE_URL,
        model="deepseek-chat",
        temperature=0.3,
        max_tokens=1024,
        tiktoken_model_name=None  # 规避 tiktoken 报错
    )

    # 2. 窗口录入问题
    user_question = simpledialog.askstring("请输入问题", "向 DeepSeek 提问:")
    if not user_question:
        messagebox.showinfo("提示", "未输入内容,程序退出")
        return

    # 3. 组装消息并调用
    messages = [
        SystemMessage(content="你是专业技术助手,回答简洁明了。"),
        HumanMessage(content=user_question)
    ]
    response = llm.invoke(messages)

    # 4. 弹窗展示结果
    messagebox.showinfo("模型回复", response.content)

if __name__ == "__main__":
    main()

提示词+模板

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from config import DEEPSEEK_API_KEY, DEEPSEEK_BASE_URL

def main():
    llm = ChatOpenAI(
        api_key=DEEPSEEK_API_KEY,
        base_url=DEEPSEEK_BASE_URL,
        model="deepseek-chat",
        temperature=0.3,
        tiktoken_model_name=None
    )

    # 构建提示词模板
    prompt = ChatPromptTemplate.from_messages([
        ("system", "你是翻译助手,将用户内容翻译成英文。"),
        ("human", "{user_text}")
    ])

    # 管道组合链路
    chain = prompt | llm

    print("===== 文本翻译 =====")
    user_text = input("请输入中文内容:").strip()
    if not user_text:
        print("未输入内容,程序退出")
        return

    res = chain.invoke({"user_text": user_text})
    print(f"\n翻译结果:\n{res.content}")

if __name__ == "__main__":
    main()
    input("\n按回车键关闭窗口...")

管道流式

from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage
from config import DEEPSEEK_API_KEY, DEEPSEEK_BASE_URL

def main():
    llm = ChatOpenAI(
        api_key=DEEPSEEK_API_KEY,
        base_url=DEEPSEEK_BASE_URL,
        model="deepseek-chat",
        temperature=0.3,
        tiktoken_model_name=None
    )

    print("===== 流式输出 =====")
    user_input = input("请输入问题:").strip()
    if not user_input:
        print("未输入内容,程序退出")
        return

    messages = [
        SystemMessage(content="你是编程助手,讲解通俗易懂。"),
        HumanMessage(content=user_input)
    ]

    print("\n模型回复:", end="", flush=True)
    for chunk in llm.stream(messages):
        print(chunk.content, end="", flush=True)

if __name__ == "__main__":
    main()
    input("\n\n按回车键关闭窗口...")

演示结果

Image text

最近更新: 2026/6/14 21:48
Contributors: kcnf
Prev
吃透核心概念
Next
Tools工具调用