first commit
This commit is contained in:
47
aicodes/llm_streaming.py
Normal file
47
aicodes/llm_streaming.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import os
|
||||
from langchain_openai import ChatOpenAI
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# 加载环境变量
|
||||
load_dotenv()
|
||||
|
||||
|
||||
def get_llm():
|
||||
"""
|
||||
初始化并返回 DeepSeek LLM 实例
|
||||
"""
|
||||
# 注意:这里的 ChatOpenAI 实际上是兼容 OpenAI 接口的类,用于连接 DeepSeek API
|
||||
llm = ChatOpenAI(
|
||||
base_url=os.getenv("base_url1"),
|
||||
api_key=os.getenv("DEEPSEEK_API_KEY1"),
|
||||
model="deepseek-chat",
|
||||
temperature=0, # 设置为0,确保结果稳定
|
||||
)
|
||||
return llm
|
||||
|
||||
|
||||
# 1. 初始化 LLM
|
||||
llm = get_llm()
|
||||
|
||||
# 2. 用户级 prompt
|
||||
user_prompt = "你是谁?请详细介绍一下你自己。"
|
||||
|
||||
print(f"--- 用户提问:{user_prompt} ---")
|
||||
print("--- LLM 流式回复开始 ---")
|
||||
|
||||
# 3. **核心修改:使用 .stream() 方法进行流式调用**
|
||||
# .stream() 返回一个迭代器,我们可以遍历它来获取分块的输出。
|
||||
response_stream = llm.stream(user_prompt)
|
||||
|
||||
# 4. 遍历并打印流式输出
|
||||
full_response = ""
|
||||
for chunk in response_stream:
|
||||
# chunk.content 包含当前流片段的内容
|
||||
# end="" 确保打印时不换行,模拟流式输出效果
|
||||
print(chunk.content, end="", flush=True)
|
||||
full_response += chunk.content
|
||||
|
||||
print("\n--- LLM 流式回复结束 ---")
|
||||
|
||||
# 5. 可选:打印完整的回复内容
|
||||
# print(f"\n完整的回复内容:{full_response}")
|
||||
Reference in New Issue
Block a user