个人随笔
目录
初学Agent:对编程与大模型交互的简单理解
2025-12-27 12:54:45

我问AI:
下面是我对通过编程与大模型交互的方式的了解
1、我们通过编写提示词模板,在提示词模板中插入变量
2、将用户输入的内容,替换提示词模板中的变量获得最终要使用的提示词
3、将提示词传给大模型,并且提示词中要明确要求大模型按什么格式返回,比如json格式,且要求不要有任何多余的东西,这样模型就不会乱生成,可以直接获取我们要的格式
4、对模型返回的结果进行解析,生成我们要的对象,比如数组或者json
所以关键的总结可能就是三个点,提示词、模型调用、返回结果解析对不对,只有提示词编写的足够好,模型才能够返回我们想要的结果,若我理解不对,请纠正我的理解,并且用langchain给我一个简单的例子,最后总结成一篇markdown格式的笔记,谢谢
AI给我的回答:

一、核心理解确认与补充

你将编程交互大模型的核心总结为 提示词、模型调用、返回结果解析 三个关键点,完全正确!这三个环节构成交互流程的“铁三角”,补充落地关键细节如下:

  1. 提示词:核心是“结构化”(模板+变量),同时必须明确返回格式(如JSON),避免模型乱生成,是结果可控的基础;

  2. 模型调用:除传递提示词外,需配置参数(如 temperature=0.1 降低随机性),进一步提升结果稳定性;

  3. 返回结果解析:必须包含异常处理(如格式解析失败、API调用失败),避免程序崩溃,是实际开发的必要边界处理。

核心逻辑概括:提示词(输入规则)→ 模型调用(传输桥梁)→ 结果解析(输出落地),三者缺一不可。

二、LangChain实战示例(极简可运行)

1. 前置准备:安装依赖

  1. pip install openai langchain langchain-openai python-dotenv

2. 完整代码示例

  1. # 导入核心依赖
  2. from langchain.prompts import PromptTemplate
  3. from langchain_openai import ChatOpenAI
  4. from langchain.output_parsers import JSONOutputParser
  5. from langchain.schema import HumanMessage
  6. import os
  7. from dotenv import load_dotenv
  8. # 加载环境变量(API Key放在.env文件,避免硬编码)
  9. load_dotenv() # 直接加载.env文件中的变量到环境变量,无需手动赋值
  10. # 1. 提示词:结构化模板 + 自动格式说明
  11. parser = JSONOutputParser() # 定义JSON解析器
  12. prompt_template = """
  13. 请严格按照指定格式解析以下文本,仅返回JSON内容,不要添加任何多余解释:
  14. {format_instructions}
  15. 需要解析的文本:{user_input}
  16. """
  17. # 构建提示词模板对象
  18. prompt = PromptTemplate(
  19. template=prompt_template,
  20. input_variables=["user_input"],
  21. partial_variables={"format_instructions": parser.get_format_instructions()}
  22. )
  23. # 2. 模型调用:加载模型 + 封装调用逻辑
  24. llm = ChatOpenAI(
  25. model="gpt-3.5-turbo",
  26. temperature=0.1, # 降低随机性,保证格式稳定
  27. max_tokens=200
  28. )
  29. # 3. 结果解析:解析+异常处理
  30. def extract_text_info(user_input: str):
  31. """提取用户文本的核心信息(主题+情感+关键词)"""
  32. try:
  33. formatted_prompt = prompt.format(user_input=user_input) # 渲染提示词
  34. response = llm.invoke([HumanMessage(content=formatted_prompt)]) # 调用模型
  35. parsed_result = parser.parse(response.content) # 解析结果
  36. return parsed_result
  37. except Exception as e:
  38. print(f"处理失败:{str(e)}")
  39. return {"主题": "未知", "情感倾向": "未知", "关键词": []}
  40. # 测试示例
  41. if __name__ == "__main__":
  42. user_text = "我今天吃了海底捞,番茄锅底超好吃,服务也特别棒!"
  43. result = extract_text_info(user_text)
  44. print("解析后的结果:")
  45. print(f"主题:{result['主题']}")
  46. print(f"情感倾向:{result['情感倾向']}")
  47. print(f"关键词:{result['关键词']}")

3. 代码关键环节对应表

核心环节 LangChain实现 核心作用
提示词 PromptTemplate + JSONOutputParser 结构化模板绑定变量,自动生成格式说明,减少手动编写成本
模型调用 ChatOpenAI + invoke 封装原生API逻辑,无需关注参数拼接,直接传入提示词即可调用
结果解析 parser.parse() + 异常捕获 专门解析JSON格式,覆盖格式错误、API失败等常见问题

4. 测试输出示例

输入:我今天吃了海底捞,番茄锅底超好吃,服务也特别棒!

输出

  1. 解析后的结果:
  2. 主题:吃海底捞的体验
  3. 情感倾向:积极
  4. 关键词:['海底捞', '番茄锅底', '好吃', '服务', '棒']

三、关键总结

  1. 核心三环节:结构化提示词、参数化模型调用、带异常处理的结果解析,其中结构化提示词是结果可控的核心;

  2. LangChain价值:封装通用逻辑,用 PromptTemplateChatOpenAIOutputParser 分别对应三环节,大幅简化开发;

  3. 落地注意事项:① 降低 temperature 提升稳定性;② 异常处理不可少;③ 用 .env 文件管理API Key,避免硬编码;

  4. 通用性:核心逻辑适配所有大模型(OpenAI/文心一言/通义千问等),仅需替换LangChain的模型加载类(如 ChatBaiduWenxin)即可。

    (注:文档部分内容可能由 AI 生成)

 35

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2