[{"data":1,"prerenderedAt":319},["ShallowReactive",2],{"project-36393782":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":43,"post_text":46,"what":47,"said":81,"maker_in_thread":179,"shape":190,"grid":194,"attempts":275,"same_week":280,"maker_shows":310,"maker_hidden":311,"reader_version":312,"card":313},"36393782","simpleaichat","Python package for interfacing with ChatGPT with minimized complexity","title","Show HN: Python package for interfacing with ChatGPT with minimized complexity","https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Fsimpleaichat","github.com","minimaxir",1687195243,2023,129,35,490,3109,16,"notable","ai","llm client library","library",[24,25,26,27,28],"chatgpt python","openai api wrapper","python ai package","gpt-4 api","pydantic function calling","curious",0.053,{"positive":32,"neutral":33,"mixed":34,"critical":35},2,12,0,1,15,{"design":38,"idea":39,"execution":40,"docs":41,"performance":42},{"positive":35,"critical":34},{"positive":35,"critical":35},{"positive":34,"critical":34},{"positive":34,"critical":34},{"positive":34,"critical":34},[44,45,34,45,34,45,34,44,34,45,45,34,45,34,34,45,34,45,45,34,45,34,34,34,34,34,34,34,34,34,34,34,35,45,45],5,3,null,{"problem":48,"audience":46,"pricing":46,"motivation":55,"time_to_build":46,"stack":59,"openness":79,"stage":80,"team_size":79},{"value":49,"source":50,"evidence":51},"Interfacing with ChatGPT\u002FOpenAI chat models is complex; wants simpler, controllable AI generation","maker",[52],{"id":53,"by":11,"text":54},"36395249","I am: the reason I made simpleaichat is because I have a need for more controllable work with AI generation, and it was easier to create a package from scratch than to figure out…",{"value":56,"source":50,"evidence":57},"Needed more controllable AI generation; easier to build from scratch than hack LangChain",[58],{"id":53,"by":11,"text":54},[60,68,73],{"value":61,"source":62,"evidence":63},"Python","inferred",[64],{"id":65,"by":66,"text":67},"36395588","senko","Nice! Totally agree with the project goals, it seems too many other packages are created by people who are researchers (or enthusiasts) first and software developers second, and…",{"value":69,"source":70,"evidence":71},"Pydantic","commenter",[72],{"id":65,"by":66,"text":67},{"value":74,"source":50,"evidence":75},"httpx",[76],{"id":77,"by":11,"text":78},"36397142","The underlying library for both sync and async is httpx (https:\u002F\u002Fwww.python-httpx.org\u002F) which may be limited from the HTTP Client perspective but it may be possible to add rate…","unknown","launched",{"praise":82,"objections":102,"requests":121,"questions":140,"alternatives":156},[83,91],{"value":84,"source":70,"evidence":85},"Clean, developer-focused design that avoids bloat of LangChain and LlamaIndex",[86,87],{"id":65,"by":66,"text":67},{"id":88,"by":89,"text":90},"36395198","nextworddev","I hope you keep investing in this project- it’s a crowded field but I do think existing projects like Langchain and LLamaindex feel very bloated and beyond a refactor - sometimes…",{"value":92,"source":70,"evidence":93},"Good work on the project",[94,98],{"id":95,"by":96,"text":97},"36395162","_private","Great work! I'd love to change this to use the new function logic in chatgpt",{"id":99,"by":100,"text":101},"36395796","gautiert","Nice work! Is there some JavaScript\u002FTypescript alternatives to Langchain?",[103,114],{"value":104,"source":70,"evidence":105},"Does not retry on API errors out of the box",[106,110],{"id":107,"by":108,"text":109},"36395027","H8crilA","Didn't find this in the README: does it handle network\u002FOpenAI errors via retries? In particular the very common \"model is overloaded at the moment\". It's fine if not, I can…",{"id":111,"by":112,"text":113},"36395414","mikeravkine","Errors are so common with these endpoints, not having retry out of the box just makes it harder to hack on which I think is against the spirit?",{"value":115,"source":70,"evidence":116},"Using GPT-4 API via a wrapper may conflict with ChatGPT terms",[117],{"id":118,"by":119,"text":120},"36396397","MuffinFlavored","Is interfacting with the GPT-4 API acting as if you are the ChatGPT UI against terms of service? I was under the impression it was and they had a bunch of methods to protect…",[122,129,136],{"value":123,"source":70,"evidence":124},"Support for local open source models",[125],{"id":126,"by":127,"text":128},"36397356","jimmySixDOF","Any chance your roadmap might include access to some local run open source models kind of like an oobabooga but with all your extra tooling baked in ?",{"value":130,"source":70,"evidence":131},"Rate limiting and batch query handling",[132],{"id":133,"by":134,"text":135},"36395971","bravura","Since this is async, can it automatically handle provided rate limits and batch queries appropriately? Seems like everyone has to roll their own on this and it’s much nicer to…",{"value":137,"source":70,"evidence":138},"Use the new ChatGPT function calling",[139],{"id":95,"by":96,"text":97},[141,145,149],{"value":142,"source":70,"evidence":143},"Does it handle OpenAI errors via retries?",[144],{"id":107,"by":108,"text":109},{"value":146,"source":70,"evidence":147},"Is there a JavaScript\u002FTypeScript alternative to LangChain?",[148],{"id":99,"by":100,"text":101},{"value":150,"source":70,"evidence":151},"Can GPT-4 be given a whole codebase to query?",[152],{"id":153,"by":154,"text":155},"36396695","rane","Are we anywhere close to being able to give a whole codebase to GPT-4 and ask various things about it?",[157,162,166,173],{"value":158,"source":70,"evidence":159},"LangChain",[160,161],{"id":88,"by":89,"text":90},{"id":99,"by":100,"text":101},{"value":163,"source":70,"evidence":164},"LlamaIndex",[165],{"id":88,"by":89,"text":90},{"value":167,"source":70,"evidence":168},"aider",[169],{"id":170,"by":171,"text":172},"36397311","anotherpaulg","My open source CLI tool can do this, as well as make changes to the code. Here's a chat transcript that shows how you can use it to explore and then modify a public github repo…",{"value":174,"source":50,"evidence":175},"tenacity (for retries)",[176],{"id":177,"by":11,"text":178},"36395111","I was mixed about putting it in the base package but you can get the same behavior with the tenacity package.",{"comments":180,"answered":181,"key":182},7,4,[183,186,189],{"id":184,"text":185},"36396876","I've spent a lot of time experimenting with schema: https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Fsimpleaichat\u002Fblob\u002Fmain\u002Fexamples\u002Fnotebooks\u002Fschema_ttrpg.ipynb",{"id":187,"text":188},"36396818","> There was another post today about using Pydantic for function enabled completions That post let me know that pydantic's schema() function actually worked to produce a valid…",{"id":53,"text":54},{"commenters":191,"max_depth":44,"maker_replies":180,"first_comment_mins":192,"lifespan_hours":193},20,85,25,[195,197,200,202,205,207,211,214,216,217,218,220,222,224,226,228,230,231,234,235,239,241,243,245,248,250,253,256,258,261,262,264,266,271,273],[65,34,44,196,66,34],"project\u002Fpositive\u002Fdesign",[198,34,45,199,66,34],"36396032","project\u002Fneutral\u002Fidea",[184,34,34,201,11,35],"maker\u002Fneutral\u002Fdesign",[203,34,45,199,204,34],"36396396","kordlessagain",[187,34,34,206,11,35],"maker\u002Fneutral\u002Fexecution",[208,34,45,209,210,34],"36398492","maker\u002Fneutral\u002Fnone","Grimblewald",[212,34,34,213,66,34],"36402345","other\u002Fneutral\u002Fnone",[88,35,44,215,89,34],"project\u002Fpositive\u002Fidea",[53,35,34,199,11,35],[126,32,45,199,127,34],[118,45,45,219,119,34],"project\u002Fneutral\u002Fnone",[221,45,34,219,11,35],"36396848",[223,45,45,219,119,34],"36398001",[225,45,34,219,11,35],"36398352",[227,45,34,213,119,34],"36404615",[107,181,45,229,108,34],"project\u002Fneutral\u002Fexecution",[177,181,34,206,11,35],[232,181,45,233,108,34],"36395328","maker\u002Fneutral\u002Fdocs",[111,181,45,229,112,34],[236,181,34,237,238,34],"36396777","commenter\u002Fneutral\u002Fexecution","Klathmon",[133,44,45,240,134,34],"project\u002Fneutral\u002Fperformance",[77,44,34,242,11,35],"maker\u002Fneutral\u002Fperformance",[99,244,34,213,100,34],6,[246,244,34,213,247,34],"36396294","screye",[153,180,34,249,154,34],"other\u002Fneutral\u002Fidea",[251,180,34,249,252,34],"36396918","killthebuddha",[254,180,34,213,255,34],"36396976","smabie",[257,180,34,213,252,34],"36397147",[259,180,34,213,260,34],"36397252","zora_goron",[170,180,34,213,171,34],[263,180,34,213,154,34],"36401674",[265,180,34,213,171,34],"36404174",[267,268,35,269,270,34],"36408324",8,"project\u002Fcritical\u002Fidea","m3kw9",[95,272,45,199,96,34],9,[274,272,45,199,108,34],"36395953",[276,279],{"id":277,"t":278,"points":244,"comments":32},"36243248",1686237271,{"id":4,"t":12,"points":14,"comments":15},[281,286,291,296,301,306],{"id":282,"name":283,"points":284,"category":285},"36365511","PropBox",520,"web_saas",{"id":287,"name":288,"points":289,"category":290},"36360789","Novel",370,"productivity",{"id":292,"name":293,"points":294,"category":295},"36383773","Answer Overflow",333,"data",{"id":297,"name":298,"points":299,"category":300},"36391655","HN Recommend",314,"learning_science",{"id":302,"name":303,"points":304,"category":305},"36388821","Slint",291,"dev_tools",{"id":307,"name":308,"points":309,"category":305},"36422730","gpt-engineer",178,13,false,"v2",{"id":314,"name":5,"line":6,"ai":311,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":315,"top":18,"kw":316,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":317,"url":9,"mix":318,"praise":84,"objection":104,"sub":21},36393782,0.05,[24,25,26,27,28],"53030305033030030330300000000000133",[32,33,34,35],1794036637137]