Python调用DeepSeek的两种方式

  1. 方式一

import requests
import json
import sys


class DeepseekChat:
    def __init__(self, base_url="http://127.0.0.1:11434"):
        self.base_url = base_url
        self.api_endpoint = f"{base_url}/api/chat"

    def chat(self, message, model="deepseek-r1:14b"):
        payload = {
            "model": model,
            "messages": [
                {
                    "role": "user",
                    "content": message
                }
            ],
            "options": {
                "temperature": 0.7,
                "top_p": 0.9
            }
        }

        try:
            response = requests.post(self.api_endpoint, json=payload, stream=True)
            response.raise_for_status()

            # 处理流式响应
            full_response = ""
            print("\nDeepseek: ", end='', flush=True)  # 在开始时打印模型名

            # 用于跟踪是否已经打印了内容
            has_content = False

            for line in response.iter_lines():
                if line:
                    json_response = json.loads(line)
                    if 'message' in json_response:
                        content = json_response['message'].get('content', '')
                        # 跳过思考标记和空行
                        if content and not ('<think>' in content or '</think>' in content):
                            # 去除开头的空行
                            if not has_content:
                                content = content.lstrip('\n')
                            full_response += content
                            print(content, end='', flush=True)
                            has_content = True

            print()  # 打印最后的换行
            return full_response

        except requests.exceptions.RequestException as e:
            return f"发生错误: {str(e)}"
        except json.JSONDecodeError as e:
            return f"JSON解析错误: {str(e)}"
        except KeyboardInterrupt:
            print("\n\n对话被中断")
            return ""


def main():
    chat = DeepseekChat()

    print("欢迎使用Deepseek聊天机器人! (输入'退出'结束对话)")

    try:
        while True:
            try:
                user_input = input("\n你: ")
                if user_input.lower() in ['退出', 'quit', 'exit']:
                    print("再见!")
                    break

                response = chat.chat(user_input)
            except KeyboardInterrupt:
                print("\n\n再见!")
                break

    except Exception as e:
        print(f"\n发生错误: {str(e)}")
        sys.exit(1)


if __name__ == "__main__":
    main()

  1. 方式二
import ollama

if __name__ == '__main__':     
     res = ollama.chat(model='deepseek-r1:14b', stream=False, messages=[{'role': 'user', 'content': '今天是多少号,星期几?'}])
     print(res['message']['content'])
posted @   星空28  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示