########################
# 流式输出
########################
# 导入操作系统模块,用于操作环境变量
import os
# 从 httpcore 导入 stream(但在此代码中未使用)
from httpcore import stream
# 从 langchain_core.messages 导入 HumanMessage,用于创建用户消息对象
from langchain_core.messages import HumanMessage
# 从 openai 导入 base_url(但在此代码中未使用)
from openai import base_url
# 从自定义的 config.load_key 模块导入 load_key 函数,用于加载API密钥
from config.load_key import load_key
# 设置 LangSmith 追踪功能为开启状态
os.environ["LANGSMITH_TRACING"] = "true"
# 设置 LangSmith 项目名称
os.environ["LANGSMITH_PROJECT"] = "firstLangChainDemo"
# 从配置文件加载 LangSmith API 密钥并设置到环境变量中
os.environ["LANGSMITH_API_KEY"] = load_key("LANGSMITH_API_KEY")
# 从 langchain_openai 模块导入 ChatOpenAI 类,用于与OpenAI模型交互
from langchain_openai import ChatOpenAI
# 检查环境变量中是否已存在 OPENAI_API_KEY,如果不存在则从配置文件加载
if not os.environ.get("OPENAI_API_KEY"):
os.environ["OPENAI_API_KEY"] = load_key("OPENAI_API_KEY")
# 初始化 ChatOpenAI 实例,指定模型名称、API基础URL和API密钥
llm = ChatOpenAI(model="gpt-4o-mini", base_url="https://api.****", api_key=os.environ["OPENAI_API_KEY"])
# 调用模型的 stream 方法,传入包含用户问题的 HumanMessage 列表,获取流式响应
result = llm.stream([HumanMessage("你是谁?你能帮我解决什么问题?")])
# 遍历流式响应的每个数据块
for chunk in result:
# 打印每个数据块的内容,end="" 表示不换行,flush=True 表示立即输出
print(chunk.content, end="", flush=True)
# 我是一个人工智能助手,可以帮助你解答各种问题,包括但不限于:
#
# 1. 提供信息:如科学、文化、历史等领域的知识。
# 2. 学习辅助:帮助你理解学习内容、提供学习资源和建议。
# 3. 技术支持:解答编程、软件使用等技术问题。
# 4. 生活建议:提供关于健康、饮食、旅行等方面的建议。
# 5. 语言翻译:进行简短的翻译和语言学习辅助。
#
# 如果你有具体的问题或需求,尽管告诉我,我会尽力帮助你!