Code Monkey home page Code Monkey logo

baichat-py's Introduction

BAIChat API Python

Installation

Pypi

pip install baichat-py

Codeberg

pip install --index-url https://codeberg.org/api/packages/Bavarder/pypi/simple/ baichat-py

Usage

from baichat_py import Completion

prompt = "Hello, world!"
for token in Completion.create(prompt):
    print(token, end="", flush=True)
    print("")

baichat-py's People

Contributors

0xmrtt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

baichat-py's Issues

UnicodeDecodeError

image

prompt = "用中文回答:请帮我写一个判断字符串是否为空的方法"

Full Response

/Users/ga666666/PycharmProjects/baichat/venv/bin/python /Users/ga666666/PycharmProjects/baichat/baichat.py 
当
字符串
为空
时
,
通
常
指
字符串
的
长度
为
零
或
者
字符串
只
包
含
空
格
字符
。
以下
是
一个
于
判断
字符串
为空
的
方法
的
示
例
代码
:


Exception ignored from cffi callback <function write_callback at 0x10d522ac0>:
Traceback (most recent call last):
  File "/Users/ga666666/PycharmProjects/baichat/venv/lib/python3.11/site-packages/curl_cffi/curl.py", line 53, in write_callback
    callback(ffi.buffer(ptr, nmemb)[:])
  File "/Users/ga666666/PycharmProjects/baichat/venv/lib/python3.11/site-packages/baichat_py/__init__.py", line 80, in handle_stream_response
    Completion.message_queue.put(response.decode("utf-8"))
                                 ^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 1359: unexpected end of data
Exception in thread Thread-1 (request):
Traceback (most recent call last):
  File "/Users/ga666666/PycharmProjects/baichat/venv/lib/python3.11/site-packages/curl_cffi/requests/session.py", line 428, in request
    c.perform()
  File "/Users/ga666666/PycharmProjects/baichat/venv/lib/python3.11/site-packages/curl_cffi/curl.py", line 191, in perform
    self._check_error(ret, action="perform")
  File "/Users/ga666666/PycharmProjects/baichat/venv/lib/python3.11/site-packages/curl_cffi/curl.py", line 84, in _check_error
    raise error
curl_cffi.curl.CurlError: Failed to perform, ErrCode: 23, Reason: 'Failure writing output to destination'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/Cellar/[email protected]/3.11.3/Frameworks/Python.framework/Versions/3.11/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
    self.run()
  File "/usr/local/Cellar/[email protected]/3.11.3/Frameworks/Python.framework/Versions/3.11/lib/python3.11/threading.py", line 975, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/ga666666/PycharmProjects/baichat/venv/lib/python3.11/site-packages/baichat_py/__init__.py", line 55, in request
    response = requests.post("https://chatbot.theb.ai/api/chat-process", headers=headers, data=payload, impersonate="chrome101", content_callback=Completion.handle_stream_response, proxies=proxies)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ga666666/PycharmProjects/baichat/venv/lib/python3.11/site-packages/curl_cffi/requests/__init__.py", line 46, in request
    return s.request(
           ^^^^^^^^^^
  File "/Users/ga666666/PycharmProjects/baichat/venv/lib/python3.11/site-packages/curl_cffi/requests/session.py", line 430, in request
    raise RequestsError(e)
curl_cffi.requests.errors.RequestsError: Failed to perform, ErrCode: 23, Reason: 'Failure writing output to destination'

Cannot use a network proxy to request

The Baichat API is not yet available in my city, so I have to use a web proxy to request, I use a web proxy to access it on the browser without any problem, but modified the web request part in the source code to add a proxy, which raises new problems

Added proxy

    def sync_ask(self, prompt: str) -> BAIChatResponse:
        headers = {
            "Accept": "application/json, text/plain, */*",
            "Accept-Language": "en-US,en;q=0.5",
            "Host": "chatbot.theb.ai",
            "Origin": "https://chatbot.theb.ai",
            "Referer": "https://chatbot.theb.ai",
            "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/112.0",
            "Content-Type": "application/json",
        }
        proxy_host = '127.0.0.1'
        proxy_port = 7890

        conn = http.client.HTTPConnection(proxy_host, proxy_port)
        prompt = prompt.replace('"', "\n")

        if self.chat_id == "":
            self.chat_id = f"chatcmpl-{self.get_random_string()}"

        payload = json.dumps(
            {"prompt": prompt, "options": {"parentMessageId": self.chat_id}}
        )
        conn.request('POST', 'https://chatbot.theb.ai/api/chat-process', payload, headers=headers)

Connection Response

/Users/ga666666/PycharmProjects/baichat/venv/bin/python /Users/ga666666/PycharmProjects/baichat/test.py 
/Users/ga666666/PycharmProjects/baichat/venv/lib/python3.11/site-packages/urllib3/connectionpool.py:1095: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings
  warnings.warn(
data <!DOCTYPE html>
<html lang="en-US">
<head>
    <title>Just a moment...</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <meta name="robots" content="noindex,nofollow">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <link href="/cdn-cgi/styles/challenges.css" rel="stylesheet">
    

</head>
<body class="no-js">
    <div class="main-wrapper" role="main">
    <div class="main-content">
        <noscript>
            <div id="challenge-error-title">
                <div class="h2">
                    <span class="icon-wrapper">
                        <div class="heading-icon warning-icon"></div>
                    </span>
                    <span id="challenge-error-text">
                        Enable JavaScript and cookies to continue
                    </span>
                </div>
            </div>
        </noscript>
        <div id="trk_jschal_js" style="display:none;background-image:url('/cdn-cgi/images/trace/managed/nojs/transparent.gif?ray=7ce7dd0e0b690eae')"></div>
        <form id="challenge-form" action="/api/chat-process?__cf_chl_f_tk=_9SdjtnJfIz1AjI0bU7VPJ9CK_6eDd2DPLrnvc4F00Y-1685291230-0-gaNycGzNDaU" method="POST" enctype="application/x-www-form-urlencoded">
            <input type="hidden" name="md" value="vScla_ONUtpNt27Z1Unn2QGbsKGG.Iv87ZvjkRPN0Go-1685291230-0-ARhACaM6aJ_-FNe_R-hOlWHS0z4sFAaLtbhvgNBOtukpc3LFFg48U3qvv9HrawPq24o9pkBzvon5DUmItOqXj7LAOyAowodwmFioExcgTqPs5wbRbeneINGwYX_brLZP6MzrHEw4SXid3TO879EYOuu6qPt-mmV-fCtwsjJb2UrObut0ZRB8w3gxGICkWL8xUHW_J9Grdrd2LOBTIQFOpu5Y9k4ldjaR1m7qzxlTZRl85_sKglG5nnOJ1ooHXkeUnzhv_podlWzuRluossraOkM13jr_QN8RQ0Z_PdECXSJ3qBZsjff52AyrdILwHN8dBj1nfC6r2prF1r3B2FUtmzIyn4aQ2w9Z-5MAg5pUA-MJAibMTja6jF8h-fC6GFDidAWLocW_-Hn91YU2dnDmeAE0DB_W3LKGKLhmzNO3APTCMJEHNLiyabHQLQYJMXU7NjTILJucZc3WwEPDaM3KVATcTAZhtymvHPAgJ7_YuP0hTGnsJGvGS6cvQ2ZdjOywLIogkSC07smtrjB3-b_G5SPQK8GQJQ4jr1O9B2ZXUHqVbaxbAthXbpZAG41wv9nL0Zjdmbyokl7GbttYGube_GUrwtLzq_EjIJlwJLbHCiWqiiIW8gBAPoYPBdZp30TUqd09DkLcoeBkiuLzRxPbqRUiuRZswc4U9084888BIPXIS19EMXN8-OdZBZJP9NYD3UWfUwderWhoSl8zo9SBIDUmrSULv6xNJID6g3tObs3pH8OKH_b9O2t0JgHFmXYzvHuL8wFT0JSaHiur773fEhViFL5p8auunUSzsJLGEgUD3JMyVvM_lUJ1v8q4tQEqXXa_t5OuQRtOcvHPh6_2x9Ul34_kwlYD-5N0HRrdiDrJy2ic_os0xlt2y8HXoCqTdVWl8d7FFIerNWhUlIZLz8zZNVPCy_2ezGUoBz0dHpnAKsYBAadAwY83EHsuaYv1yx3zIpwSRiUz13S6pl475qSEpUHOvpLiFyPCepSTH593ziQFCYUMiyHw_Y6OTyxcI_Ohz8WdXILARxWg21V4ZuRPQ_kQefIDUrtz8h_1STphxOvy78H9IOzGxCYu0zTCny_MMdemHOu36beHQaztLxUmRzPeX7WVZSNACg2l2OphA4J77ImU7rAZ-i7q_BAiiUFP3C6Ru2SErQtOgOVubEVixEP9ZP_3b8Q62w5XfEzi75FlFm9GzZ6fVGScpunTNk3Gvf123iV9UN16cNMMiiwITqUtJtDg5TteRtqx-kHdHal7WN7UuWztijbyq8pvjSdVDJn8LNR6-M5wAa6D97z7ExqYeBWhMA0BmVpKq_a6l5GwuS9-c0-nLOYS0kFag6JsLqtwvK9ZE-DxfS5UN3F5wUytpzsEOYk4WxM7KspsX0O7rw9yHVsQTSppLQOQUPOvDnVHL3shgiewA_HlvrFi4s9bqHhu_FhzDxOvxLMjdLuge1efYk9WE6aYtgADy6ceNyqRFyDf19nzPr98S7oJaJK2WB1u9zZHQRFA-4VYfY3TnsWt3Z24Q2bvukm1Do4Ld_su5e-az4pCO6o0v0xQEIeUZalLne8NAx0UudARTn-0qwrOhuSzOzbOOo77xjX76MBEi11m99P0V0dri5i7ldgAOh53l9ZfKJdUnwznCAzGP31Y8KqBdQiWvjf8t4-_J-r6ETBGnEy7nacsdGn9CDbpuNvn_O6C1_qEv2dcBzOUIlCApmV6b8OwGJ_JAX2VvgLTKtvSZBNjZH74o2LvAM0ZKI3xmfbj2h_rWzgMkb7PFS5Qh_WtVvlQimIOI75MfmiOB8OnmGdxcdmU5B2YjEnwQuUi8zTeii-qSHOjM8yEQ0YiEgBd-ZQMN1x3esFqo9xut2NLfunLynPt08M0pEpnc1A2Rvtdg6wGP9dvslhJSXxATTfw7IUymG2QQIjLi7WgvCeMuRaarfSrd7-XsmfPHsa8RKQmXGbD5l5KvW2d4IDn-WqOnPJW1SlapEzDcvOKXh-g27aqPdUgoMNp3Bgd8aIFJ5wEpud878mvAUFbvgE4nzu9sIzsC16onAPVPxGaZnTUndtZXOcDozmk0vg-s9-Ii1BfIozRgMmWwnUuqeYpSueuq1aoB-HpXBVXJG9kapY9GP10kxLj9kVdrovx-svnlf98jsI0utqMGA4e829I4N1W1VowSX_Tj-o2Ke9AVwqXYWfmNSRLl_H_bgoLb27BzJwXEHzvZtFAYI6dDm3uDiZ8IrziPFRv9ovQ6NqijRwNylbALfnAXd-viEO55-bURVUVbSNHRRG_6_DpFcdszRGc5_i6WbA8Eji74Mb4eIkWhrZTKdNqC_x-w1U0xULwdERgWWBmQiKEIWfnNs6I76YCRsEpL0ItBjtlRlpCL9RUzWpZUfv2O9lfwNj3pSYBvExPxX3Zju0TbqIG9-CECLFzgyR0fTs0jByAXmWWdT4Y8HRfrMhZc92PDCYFOMbPy9Q2CM7Hc_ngE-XCN7jf9vmgb3cojbBr3hkQavhTY8qn80yN59MTrK_FEEj5RjIBeCiiOVHh1KsdnaOjNMSuQOQZK0DQqRRxtBAAAncFBUUAk2dgEmCzg41p-oZFlJlFi-TKkh648NWEVX1mQzbMK1Owhb05jZxfUmmU8uoDH2UlMn4RphJYUyK5sSNfP43826syXpEaDFUSwxw9cs1BFLZAX-93lJd3rK62_QykwdD-oxHMR4OSYlzhW3jdT2fscmVT9MDi2UQ2n4WKBnuMCFGP03OSwqhpL8F0PGMLj7CY8zwvUlY9DMW0NucaPENJJVk4acBBQD-XLCKePy34ALnhzH5v_k10F0Wn2Ev1yIbv8dHZJqLhtDS3-Jxrpw44HH94MFdewinSIZFfhbjM2g_h_u8GwIOoVCtHDrXXANAj6cXPqCb5iUmnbJxYHXO1cSX4UBpVpQg838ikEMNODLiYvxWttzzmwylUNJQCoQl0DK8-dOHos65Leh1VdBz3aqs75GhWxxOry9kETKRVopug7OBNonGqaTVJGX9DDz5pbh6x0okyeTgPo3-wjuDgexflTSkpZHTJDzuWVPDh0lZVHehiBHD6TJUM_za_ymm-Rf7NOjljMmefygjJQ7eZhuANW1U9dKnbLPhWYReNUgo6B-82ULkFYypr0ujCEPKtEceCYeuzCCw3Ov6obbZooTAl0KkQIPvrnDde17zLNcUVzRuAFTlV2FAeL3MJv5oUWdlonxDbobeOAfgAv5TPmDZ4Vy1OC4dwZqhsv24zuQiJt7fCTvRSQC1AlOqOZImt3MTyvnvhvQkgitZqN6LF-9qOgwYZ_wzfV1_tmxk9bObyKW5eKQm1r82u3s-wQa_mwQy81K0ZXCwJCJE0mY_EscIXGPbcM-39nE24VatrEBehpZfJa_oSth-cwTPDYfhYVrouoC-e1GpBBz8Qt2NwpYkjXeo7fNn4">
        </form>
    </div>
</div>
<script>
    (function(){
        window._cf_chl_opt={
            cvId: '2',
            cZone: 'chatbot.theb.ai',
            cType: 'managed',
            cNounce: '93467',
            cRay: '7ce7dd0e0b690eae',
            cHash: 'aef42674e2700f3',
            cUPMDTk: "\/api\/chat-process?__cf_chl_tk=_9SdjtnJfIz1AjI0bU7VPJ9CK_6eDd2DPLrnvc4F00Y-1685291230-0-gaNycGzNDaU",
            cFPWv: 'b',
            cTTimeMs: '1000',
            cMTimeMs: '0',
            cTplV: 5,
            cTplB: 'cf',
            cK: "",
            cRq: {
                ru: 'aHR0cHM6Ly9jaGF0Ym90LnRoZWIuYWkvYXBpL2NoYXQtcHJvY2Vzcw==',
                ra: 'TW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNykgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjAuMCBTYWZhcmkvNTM3LjM2',
                rm: 'UE9TVA==',
                d: '+u0+AI+nqsEbM1pZQmACPH4BJ0KEVLlu13tnbbz7YAFBPOwyKlXfyr3izQ7Hj8GyyGGqOpE967cwqpdc/KfBXE4vyYlldfmHuPiEnfliRfG1O5eYpP4KLcNTOoMz7izcv3XFPoBwvNr+58a8rRPKs5Dt/NpST0CU7Qu3YyfoxO8Z0Pk7b1gaZSRTqtokcrx2pSx19TNaUZrJ7DRhFcZDOxhaCQveZB9nOuzZAtoLTiyMBUtxnwzKGu/iU7vPHq4T6BRbrvIiopWhOUHdg7/mzJNfbCPqUKKHgO9kxjAnCSD1jyPTLCh+wz+O/9LWn/1fL9KsNVlmdNp4MNwxYxJEbNZCA1or68rqgzFP5zAGaBZQkyTaaQ563Uhx/O11hRcYSZUXBE82eWGqyefdmZH0uAcLay8QcGPxpcn8I321ybUWD6O6jG5v03gR8uf6M+9KMyOjVtgqdxbMeS+R7caTC82AEItAm/3kFbflz4+lWHtAV6RuCAn/6Std86Bzj0DJmz4RiJuTglynlYUTBQFuJ16u9Vik5gYxIeKxvtsdScoNv0+rLcp3q3PjIMiw33jRaqC4Ahc4pC5ZgPCvD7MPy0wWAU62DDssdV9Tnz2IDZU4hsiDqgTuNPU4PY80Dl/XEn/1hX5o67TDvAGAbHtPuQ==',
                t: 'MTY4NTI5MTIzMC40MTcwMDA=',
                m: '7Cn41BY+vGPENGNmWYhYN6jnQMsLt8rBcmQJvo0ua0Q=',
                i1: 'w7hVFGE3aHr1QBV7C81SpA==',
                i2: 'aduEFsm6+63ztV1ibY8VaQ==',
                zh: 'rHR3nIPph4J+ehGgrA9pErRbeC9SqLjyTMRk9rKxIYc=',
                uh: 'wxDqOo+fL7M0MnCRYh0ZyFb2geIynAC3JeR9gJ3ee+I=',
                hh: 'wb1uUlHqgNc6AX4WU/Nggd4xUWBLFbSYZj75noD4yJ4=',
            }
        };
        var trkjs = document.createElement('img');
        trkjs.setAttribute('src', '/cdn-cgi/images/trace/managed/js/transparent.gif?ray=7ce7dd0e0b690eae');
        trkjs.setAttribute('alt', '');
        trkjs.setAttribute('style', 'display: none');
        document.body.appendChild(trkjs);
        var cpo = document.createElement('script');
        cpo.src = '/cdn-cgi/challenge-platform/h/b/orchestrate/managed/v1?ray=7ce7dd0e0b690eae';
        window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;
        window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;
        if (window.history && window.history.replaceState) {
            var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;
            history.replaceState(null, null, "\/api\/chat-process?__cf_chl_rt_tk=_9SdjtnJfIz1AjI0bU7VPJ9CK_6eDd2DPLrnvc4F00Y-1685291230-0-gaNycGzNDaU" + window._cf_chl_opt.cOgUHash);
            cpo.onload = function() {
                history.replaceState(null, null, ogU);
            };
        }
        document.getElementsByTagName('head')[0].appendChild(cpo);
    }());
</script>


</body>
</html>


Process finished with exit code 0

It appears that the request encountered a Cloudflare security verification page

No Answer

When running the example python program i get no answer.

0.3.0 proxy type error

I use the latest version for proxy access, however, an exception occurred when passing parameters
image
I think it is the proxy of type string passed to the proxys of type dictionary that caused this problem, I modified the create method to change the proxy type to "dict [str, str]" to solve this problem

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.