2026-01-12

  1. 01月12日
    1. 一、今日完成情况
    2. 二、今日感悟
    3. 三、备注
    4. 四、openai-API支付
    5. 五、langchain快速上手
      1. 01
    6. 02
    7. 03

01月12日

一、今日完成情况

  • 完成数据至少100条的检索和检验,发到群里。 –完成
  • 完成终端快速在当前目录打开的Apple script –完成
  • openai付款问题总要解决的,琢磨一下方法,导出理论可行路径 –放弃
  • 快速上手LangChain项目,跑通一个示例代码
    • 为什么要学习这个项目:Agent工作流,大大缩短开发周期。这个框架可以让我使用各个API综合使用的时候,不需要单独编写python代码,而是使用这个框架快速设计,从宏观和结构化的角度来设计。 https://techdiylife.github.io/blog/index.html
    • SMART分解:
      • 常用的AI模型的API需要准备好,应对相关的测试。

二、今日感悟

  • 核心业务数据​:
    • 没啥数据,连续碰壁。
  • ​今日工作总结:​
  • ​明日工作计划:
    • 关于librechat数据快速导入尝试一下,达成批量导入政事堂PDF的目标
    • 关于简单的neo4j数据库的使用学习一下,跑两个示例项目看效果。
    • 关于Agent、rag、MCP可以使用自己的语言表述,基础概念导出内容或者笔记
    • 配置Obisidian本地AI访问MCP服务,简单尝试一下 https://github.com/bitbonsai/mcp-obsidian
  • ​今日学习成长:​
    • 屡次碰壁。API申请太困难啦。
    • 从学习连续性的角度来说,AI建议我明天这样子做 您明天可以围绕 LangChain 的核心概念与 LCEL 实践LibreChat 的数据导入 和 Neo4j 数据库的初步学习 这三个方向展开。其中,LangChain 的学习是您当天已经开始并有明确 SMART 计划的,建议作为重点投入时间。LibreChat 和 Neo4j 则是您为明天设定的具体项目和新知识探索。

三、备注

四、openai-API支付

看了一圈,包括虚拟卡(虚拟货币充值),还有国外的信用卡充值。

最多只能完成openai 的chatgpt plus的代充,这个花钱就可以解决,可是这不是我想要的。我想要的事openai的key。

可是看了一圈,根本没有这样花钱就可以解决的api代充服务,因此我问了薛薛。

薛薛也不行,香港相关的服务,openai公司也封掉了,因此只能是生活居住在美国的朋友才可以实现了,这就非常非常头疼了。

可以看到,其实openai就和国内的Deepseek一样,其实是卡的非常严格的,和政治方面的相关性也非常强。

下一个任务。

五、langchain快速上手

01

安装LangChain及OpenAI库

  • S (Specific): 在你的Python环境中安装langchainopenai这两个Python库。
  • M (Measurable): 成功执行pip install langchain openai命令,无报错。
  • A (Achievable): 仅需一行命令,对于有Python基础的你来说非常简单。
  • R (Relevant): 这是LangChain项目的基础,没有库无法开始。
  • T (Time-bound): 15分钟内完成。
pip install openai google-generativeai
pip install langchain_google_genai
pip install langchain

02

任务2.1:理解并实现一个简单的LLM调用 (LangChain方式)

  • S (Specific): 编写一个Python脚本,使用LangChain的ChatOpenAIOpenAI类(取决于你想用聊天模型还是文本模型),配置你的OpenAI API Key(推荐使用环境变量),然后调用模型进行一次文本生成。
  • M (Measurable): 脚本成功运行,通过LangChain接口获取到OpenAI LLM的响应文本。
  • A (Achievable): 这是LangChain与LLM交互的最基础方式,官方文档有清晰示例,你具备API调用基础,上手会很快。
  • R (Relevant): 掌握LangChain如何封装和调用LLM,是后续所有复杂应用的基础。
  • T (Time-bound): 30-60分钟。

deepseek测试API:

sk-7378135ab45f4326983d613fa5daa0ed

gemini测试API:

AIzaSyAkhD12ZjU7h2t9EfF9B_6a2hCElMXClWw

在终端先配置APIkey,因为代码当中是省略Key的配置的;

export OPENAI_API_KEY="sk-7378135ab45f4326983d613fa5daa0ed"
# 你可能还需要设置一个 API base URL,如果 Deepseek 的不是默认的 OpenAI URL
export OPENAI_API_BASE="https://api.deepseek.com/v1"
export GOOGLE_API_KEY="AIzaSyAkhD12ZjU7h2t9EfF9B_6a2hCElMXClWw"

跑通两个代码如下:

# gemini_test.py

import os
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import HumanMessage, SystemMessage
# 确保你的 GOOGLE_API_KEY 已经设置为环境变量

try:

# 初始化 ChatGoogleGenerativeAI
# 常用模型名称有 "gemini-pro"
llm = ChatGoogleGenerativeAI(
model="gemini-2.5-flash", # 替换为 Gemini 的模型名称
temperature=0.7 # 控制生成文本的随机性 (0.0-1.0)
# 如果你设置了 GOOGLE_API_KEY 环境变量,这里不需要额外配置 google_api_key
# google_api_key=os.environ.get("GOOGLE_API_KEY"),
)

# 构造聊天消息
messages = [
SystemMessage(content="你是一个有帮助的AI助手。"),
HumanMessage(content="请用中文简要介绍一下Gemini模型。")
]
# 调用模型进行文本生成

print("正在调用 Gemini LLM...")
response = llm.invoke(messages)

# 打印模型的响应
print("\nGemini LLM 响应:")
print(response.content)

except Exception as e:
print(f"发生错误: {e}")
print("请确保已正确设置 GOOGLE_API_KEY 环境变量。")
python gemini_test.py
# deepseek_test.py

import os
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage

# 确保你的 OPENAI_API_KEY 已经设置为环境变量
# 如果 Deepseek 的 API Base URL 不同于 OpenAI 的默认,请设置 OPENAI_API_BASE 环境变量
# 例如: export OPENAI_API_BASE="https://api.deepseek.com/v1"

try:
# 初始化 ChatOpenAI
# Deepseek 的模型名称可能不同,请根据 Deepseek 官方文档选择合适的模型名称
# 例如:deepseek-chat, deepseek-coder
llm = ChatOpenAI(
model_name="deepseek-chat", # 替换为 Deepseek 的模型名称
temperature=0.7, # 控制生成文本的随机性 (0.0-1.0)
# 如果你设置了 OPENAI_API_BASE 环境变量,这里不需要额外配置 api_key 和 openai_api_base
# 否则,你可以在这里显式传递 api_key 和 base_url
# openai_api_key=os.environ.get("OPENAI_API_KEY"),
# openai_api_base=os.environ.get("OPENAI_API_BASE", "https://api.openai.com/v1"),
)

# 构造聊天消息
messages = [
SystemMessage(content="你是一个有帮助的AI助手。"),
HumanMessage(content="请简要介绍一下LangChain框架。")
]

# 调用模型进行文本生成
print("正在调用 Deepseek LLM...")
response = llm.invoke(messages)
# 打印模型的响应
print("\nDeepseek LLM 响应:")
print(response.content)

except Exception as e:
print(f"发生错误: {e}")
print("请确保已正确设置 OPENAI_API_KEY (和 OPENAI_API_BASE, 如果需要) 环境变量。")
python deepseek_test.py

03

SMART 学习任务:LangChain 核心概念与 LCEL 基础实践

S (Specific - 明确的): 在接下来的学习中,你将专注于 LangChain 官方文档中的 核心概念 (Key Concepts)LangChain Expression Language (LCEL) 基础。具体目标是:

  1. 理解 LangChain 的 5 大核心组件:Models (ChatModels/LLMs)、Prompts (PromptTemplates/ChatPromptTemplates)、Output Parsers、Chains (尤其是 LCEL) 和 Agents/Tools 的基本作用。
  2. 能够使用 LCEL 语法 搭建一个基础的 LangChain 链,该链将包含:
    • 一个 ChatPromptTemplate
    • 一个 ChatModel (Deepseek 或 Gemini)。
    • 一个 StrOutputParser
  3. 成功运行 至少 3 个不同的 LCEL 链示例,每个示例完成不同的文本生成任务。

M (Measurable - 可衡量的): 你将通过以下指标衡量任务完成度:

  1. 概念理解验证: 能够用自己的话概括 LangChain 5 大核心组件的作用,并解释 LCEL 的优势(口头描述或简短笔记)。
  2. 代码实现与功能验证:
    • 创建一个 Python 文件 (langchain_lcel_practice.py)。
    • 在该文件中,成功编写并运行至少 3 个独立的 LCEL 链示例
    • 每个链示例都必须包含 ChatPromptTemplate | ChatModel | StrOutputParser 的基本结构。
    • 每个链的输出文本都应与你的提示意图一致,表明模型已成功响应并经过解析。
    • 确保所有示例在运行时均无错误,且能清晰地打印出最终的生成结果。
  3. 文档查阅记录: 在学习过程中,至少查阅和引用 5 个不同的 LangChain 官方文档页面 的关键信息(例如,记录下页面标题或URL,说明它们如何帮助你理解概念或解决代码问题)。

A (Achievable - 可实现的): 鉴于你已经成功运行了基础的 LangChain 代码,并具备 Python 编程经验,此任务是完全可实现的。官方文档提供了丰富的 LCEL 示例,你可以参考并进行修改。任务的重点在于理解和实践核心的组合逻辑,而不是构建复杂的应用。

R (Relevant - 相关的): 掌握 LangChain 的核心概念和 LCEL 是构建任何 LangChain 应用的基础。这是你深入学习 RAG、Agent 等高级功能的必备前置技能,与你快速了解 LangChain 架构和语法的目标高度相关。

T (Time-bound - 有时限的): 建议在 2-3 天内 完成此任务。你可以每天投入 1-2 小时进行文档阅读和代码实践。


参考资料

关键概念

  • Schema (模式):LangChain 与 LLM 交互的数据结构,包括 MessagePromptOutputParser 等。
  • Models (模型):
    • LLMs: 文本补全模型 (例如 OpenAI 的 text-davinci-003),主要处理字符串输入输出。
    • ChatModels: 聊天模型 (例如 OpenAI 的 gpt-3.5-turbo, Gemini gemini-pro),处理 Message 列表作为输入,返回 Message。你现在使用的就是这一类。
    • Embeddings: 将文本转换为向量的工具,用于相似性搜索等。
  • Prompts (提示):
    • PromptTemplate: 用于构建可复用的、动态的提示字符串。
    • ChatPromptTemplate: 专门用于聊天模型的提示,可以包含 SystemMessage, HumanMessage, AIMessage 等。
    • Message: 聊天模型的单个对话单元。
  • Chains (链):将多个 LLM 调用、工具使用、数据处理步骤组合起来的工作流。这是 LangChain 的核心优势之一。
    • LCEL (LangChain Expression Language):现在构建链的推荐方式。 它是一种声明式的、可组合的方式来创建复杂的链,更强大、更灵活。
  • Retrievers (检索器):用于从外部知识源 (如文档、数据库) 中获取相关信息,通常与 RAG (Retrieval Augmented Generation) 模式结合使用。
  • Agents (代理):赋予 LLM 选择和使用工具 (如搜索、计算器、代码解释器) 的能力,使其能够执行更复杂的任务。
  • Tools (工具):Agent 可以调用的外部功能。

学习顺序:

  1. Models (模型):
    • LLMs: 文本生成 (如果你想使用文本补全模型)。
    • Chat Models: 聊天模型 (你现在正在使用的)。
    • Embeddings: 了解如何生成向量嵌入。
  2. Prompts (提示):
    • Prompt Templates: 如何构建和管理提示。
    • Chat Prompts: 专门针对聊天模型的提示。
  3. Output Parsers (输出解析器): 如何将 LLM 的原始文本输出解析成结构化的数据 (如 JSON)。
  4. LCEL (LangChain Expression Language): 这一部分非常重要! 它会教你如何使用 | 运算符来连接不同的组件,构建强大的链。
    • 了解如何组合 Prompt -> Model -> OutputParser
    • 了解如何并行运行组件。
  5. Chains (链): 虽然 LCEL 是构建链的推荐方式,但了解传统的 Chain 类也是有益的,尤其是在看一些旧代码或特定用例时。
  6. Retrieval (检索):
    • Document loaders: 如何从各种源加载文档。
    • Text splitters: 如何将长文档分割成小块。
    • Vectorstores: 如何存储和检索文档嵌入。
    • Retrievers: 如何结合 Vectorstore 进行信息检索。
  7. Agents (代理):
    • Tools: 了解可用的工具以及如何创建自定义工具。
    • Agents: 了解不同类型的 Agent 和它们的工作原理。

rags的工作流程:

Pasted image 20260112203522
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com
Obsidian